欢迎来到天天文库
浏览记录
ID:34453437
大小:781.48 KB
页数:33页
时间:2019-03-06
《java平台体系_jvm(java虚拟机)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java平台体系——第二章JVM(Java虚拟机)第二章JVM(Java虚拟机)Java之父JamesGosling说过他看重的并不是Java语言,而是JVM。JVM是Java程序能够“跨平台”运行的基础设施。前面我们说过Java平台不仅仅是Java语言,这其中很重要的一个因素就是JVM。可以说JVM是Java平台的核心组成部分,要成为Java的“大牛”,或者要成为“编程大牛”,了解JVM的宏观架构和核心主题是必须的。在图表JavaSE平台JVM层有如下的内容:首先我明确一下,大家不要被“JavaHotspo
2、tClientVM”和“JavaHotspotServerVM”导致误解:JVM就是由“JavaHotspotClientVM”和“JavaHotspotServerVM”组成。Hotspot虚拟机(现在在OpenJDK下维护)仅仅是Sun(现在被Oracle收购)提供的JVM实现。目前市面上的JVM有Oracle的JRockit(http://www.oracle.com/appserver/jrockit/index.html,但Oracle收购Sun之后事情可能会变,变得方向当然是优点合并了),IMB的
3、JVM,JikesRVM(http://jikesrvm.sourceforge.net),ApacheHarmony(http://harmony.apache.org)等。其中JikesRVM是大家研究和学习JVM的样本,其商业应用基本没有,大家别忘了去逛逛它的官方网站,相信一定会有收获,如果你是搞研究,那更应该去逛逛了,如果你熟悉JavaScript又想去研究JVM,我再推荐一个比较变态的用JavaScript去“实现”的JVM吧,它就是BicaVM(https://github.com/nurv/Bi
4、caVM)。在学习虚拟机之前请先理解下图,或者至少要了解从哪几个方面去认识JVM。图表1Java虚拟机主要内容组成2.1.什么是虚拟机?我们常常接触的Windows/Linux/Unix操作系统可以说就是一个虚拟机,它为上层的应用软件提供了物理机的封装,其目的是使上层的应用软件开发更加简单和可管理,即更高效、更安全和更可靠。应用软件操作系统物理机“虚拟”技术目前已经成为一个热点,所谓的“云计算”、“虚拟化”等内容都是与“虚拟”技术分不开的。“虚拟”技术产生的初衷就是提高“特定资源”的利用率和利用效率。由于各自
5、针对的资源不同,目前市面上虚拟技术产品很多。想了解更多细节,请Google“虚拟技术”。本书后面提到的虚拟机VirtualBox(http://www.virtualbox.org/)就是典型的“虚拟”技术产品。无论虚拟技术的产品如何多样,请大家记住:虚拟技术的初衷就是提高“特定资源”的利用率和利用效率;由于针对的资源不同,有很多不同的产品,但它们一定是介于两个逻辑层之间提供对下层的封装从而提高上层应用率和应用效率。2.2.JVM规范(JSR924)JVM规范的提出是实现Java“一次编译,随处运行”承诺的关
6、键环节,正所谓“不成规矩,无以成方圆”,无论JVM的具体实现如何,但站在JVM之上的应用看到的都是一致的“接口”,即JVM规范。JVM规范Sun实现IBM实现Oracle实现其它...JVM规范JSR编号是924,官方地址http://www.jcp.org/en/jsr/detail?id=924。随后的更新在JSR202http://www.jcp.org/en/jsr/detail?id=202中维护。JCP(JAVACOMMUNITYPROCESS)是JAVA的标准制定组织,由JAVA的重量级开发者和
7、被授权的组织组成,JCP维护的规范都简称JSR,并且每个规范都会有一个编号,JAVA几乎所有的内容都有其对应的JSR。在了解JVM规范之前我们先从系统输入输出角度看看JVM的职能(抽象层面):JVM的输入是被称为Java字节码的中间码(在文件命名上通常以.class为后缀,即Java源文件编译之后的文件),输出是机器指令集。如果我们通俗的理解JVM的主要职能就是负责将Java字节码翻译成机器指令。为什么不直接从Java源文件(在文件命名上通常以.java为后缀)编译成机器码呢?首先这个问题的回答是:可以这么做
8、,,例如GCJ(http://gcc.gnu.org/java/)、JNC(http://jnc.mtsystems.ch)等工具就可以把Java直接编译成系统可执行程序。以前大家攻击Java速度和C有差距的主要问题就在于JVM这个环节。要谈引入JVM理由的话,我还是回到什么是虚拟机部分的内容,请读者自行思考。还是发扬本书的精神,给大家引入一些机器指令的相关知识:我们经常看到的可执行程序(例如Win
此文档下载收益归作者所有