以项目为牵引   全程实训   以就业为导向  以动手能力为目标

一样的教育    不一样的结果     全国咨询热线:400-078-8286

JVM 最简生存指南

2016-11-01 来源:网络转摘  点击量:1765
摘要:这篇指南主要是针对想学Java的.NET开发者,因为在这里你会发现诸多可以拿来和.NET进行比较的地方。话虽如此,我同样也希望这些能对那些初次接触Java平台的非.NET发开者有所帮助。
为什么要写这个指南

当你开始接触一个新的平台时,都会从做同一件事开始,通常你会根据你已学的概念或者框架来尝试快速搭建它,但是你无从下手,因为它们通常以全新的名字和方法展现在你面前。走完这个过程非常耗时,有时甚至让人一筹莫展。这篇指南正是用来帮助那些新手避免此类问题的。

这篇指南我也可以受益, 因为我确定我已经有了错误并且会发现更多的错误,所以你发现任何错误请及时反馈给我。最好的方式是给我发送pull request。

目标人群

这篇指南主要是针对想学Java的.NET开发者,因为在这里你会发现诸多可以拿来和.NET进行比较的地方。其实从本文的URL你就可以看出些端倪了。话虽如此,我同样也希望这些能对那些初次接触Java平台的非.NET发开者有所帮助。

基础

Java语言,Java环境,Java虚拟机

这三者全完不是一回事。一个是编程语言(想想C#),一个是编程环境(想想.NET开发环境), 另一个则是开发平台(想想CLR)。

不幸的是似乎Java通常被用来指代以上所有。

不要一条路走到黑。虽然我不喜欢Java这样的语言但是整个Java的生态系统却充满了活力同时有许多创新不断发生。作为一名.NET开发者,你应该对NHibernate,NUnit,NLog,NAnt等等非常了解,其实 所有这些都来自于Java的生态系统(把N去掉就是了)。

多语言平台

把JVM想象是CLR。它们是对多语言编程提供跨平台的虚拟机。虽然它们都支持多语言,但是它们之间还是有差别的。
在CLR上,我们主要使用C#,VB.NET(“濒危物种”)和F#,在JVM上就是Java,Scala,Clojure, Ceylon,Groovy,JRuby和Kotlin,这里只是举几个例子。

JVM字节码

JVM字节码是基于JVM的语言的编译从而在JVM上运行。这和.NET上的IL相似。

跨平台

JVM是100%跨平台的。除了Windows,OSX和Linux,它也可以在许多其它设备上运行。

JVM部署,版本类型和升级版本

JVM有多种实现。最常见的就是在Oracle和OpenJDK中的实现。甚至有一种.NET实现叫做IKVM.NET。

版本类型和升级版本

这可能是目前为止在本指南中最复杂的部分。你根本无法想象连像命名或者版本控制这样简单的事情都能搞砸。这种命名方式甚至使微软的产品都显得合理不少。

让我们开始吧:

版本类型

  • JRE – Java运行环境。这是用来运行Java应用程序的。但你不能仅仅依靠它来开发运行在JVM上的应用程序。

  • Java SE (JDK) – Java标准版。它也称为JDK。这是在JVM上开发应用程序最起码的条件。

  • Java EE – Java企业版。好了,看名字你就懂了。通过它,你可以获得所有有关企业级分布式的东西大规模应用。明确一点的是它包含了Java SE。

  • Java ME – Java移动版。这是针对移动电话和便携设备的,它很像.NET微框架。

  • JavaFX – 代替了Swing,它是Java的主要GUI开发包。同时它(尽管有些争议的话题)也面向RIA的开发。(难道是HTML/JS/CSS不够好吗?)。

可以推断,所有形如Java XY的版本都可以写成JDK的形式。

这里你可以找到更多相关的历史和命名。

升级版本

当前的Java版本是7,Java 8 将于2014年发布。(译者注:Java 8将于2014年3月18日正式发布)

查询你所安装的Java版本和类型

java -version



你将会得到如下信息:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)


这就是Java 7

为什么这么称呼?非常简单,将1.7.0_40中的1去掉就是7.0_40。其中0_40表示的是更新包。这是Java 7的所有版本发布。

以此类推1.5是Java 5,1.6是Java 6,1.7就是Java 7,所以你猜测一下就知道,Java 8将会是 1.8。

是的,反正我是知道的。

安装Java

一旦你找到了你想要学习的版本,你可以去Oracle的安装指南页面进行下载安装。

如果你想要知道为什么你需要安装Ask Toolbar,不要怪Oracle。显然这是在它和Sun之前达成的协议。我听说一旦期满他们就不会继续履行协议。

应用程序输出又叫Artifacts

无论在.NET上还是在本地应用程序上,编译通常以得到一个可执行文件或者一些动态链接库文件来标志着结束。 而通过Java,你将在输出文件夹中得到若干.class文件。

通常每个类对应一个Java类(当编译Java语言或者其它语言时按照约定转化为字节码)。

这些类是JVM字节码,这非常类似于CLR中的IL。

JAR文件

类文件不会万年不变,你完全可以创建一个JAR文件,只不过就是一个.class文件的压缩包而已。你可以通过你最喜欢的工具来创建JAR文件,或者更简单的方式就是运行

jar cf jar-file input-file(s)



jar工具附带在JDK中(/bin文件夹下)。