《Java平台体系》——第二章 JVM——JVM规范(JSR924)

JVM规范的提出是实现Java“一次编译,随处运行”承诺的关键环节,正所谓“不成规矩,无以成方圆”,无论JVM的具体实现如何,但站在JVM之上的应用看到的都是一致的“接口”,即JVM规范。



JVM规范JSR编号是924,官方地址 http://www.jcp.org/en/jsr/detail?id=924​。随后的更新在JSR202 http://www.jcp.org/en/jsr/detail?id=202​中维护。

---------------------------------------------------------------------------------------
JCP(JAVA COMMUNITY PROCESS)是JAVA的标准制定组织,由JAVA的重量级开发者和被授权的组织组成,JCP维护的规范都简称JSR,并且每个规范都会有一个编号,JAVA几乎所有的内容都有其对应的JSR。
---------------------------------------------------------------------------------------

在了解JVM规范之前我们先从系统输入输出角度看看JVM的职能(抽象层面):


JVM的输入是被称为Java字节码的中间码(在文件命名上通常以.class为后缀,即Java源文件编译之后的文件),输出是机器指令集。如果我们通俗的理解JVM的主要职能就是负责将Java字节码翻译成机器指令。

----------------------------------------------------------------------------------------
为什么不直接从Java源文件(在文件命名上通常以.java为后缀)编译成机器码呢?首先这个问题的回答是:可以这么做,,例如GCJ( http://gcc.gnu.org/java/ ​)、JNC( http://jnc.mtsystems.ch​)等工具就可以把Java直接编译成系统可执行程序。以前大家攻击Java速度和C有差距的主要问题就在于JVM这个环节。要谈引入JVM理由的话,我还是回到什么是虚拟机部分的内容,请读者自行思考。
----------------------------------------------------------------------------------------

还是发扬本书的精神,给大家引入一些机器指令的相关知识:

我们经常看到的可执行程序(例如Windows上的exe[PE格式]和Linux上的ELF格式)与机器直接可执行的机器指令(例如引导盘主引导区中的程序)之间是有很大差别的,前者脱离操作系统是不能执行的,后者没有操作系统是可以执行的。换句话来说,PE和ELF格式需要操作系统进行翻译才能有效连接成机器指令,但最终和CPU打交道的还是机器指令。机器指令在语义层面通过一套被称作指令集(Instruction Set)的东东进行约定,更专业的称呼为ISA(Instruction Set Architecture)。计算机架构(Computer Architecture)至少应该包括ISA、微架构(Microarchitecture)和系统设计(System Design)。其中ISA是围绕微架构制定的,而在微架构层面各个CPU厂商在语义层面基本保持一致,换句话来说大多数的ISA应该是具有相同的语义的,只是CPU内部的实现有所区别,但各个CPU之间还是有差别的,大家可以参考文章 http://www.agner.org/optimize/microarchitecture.pdf​ The microarchitecture of Intel, AMD and VIA CPUs(Intel,AMD和VIA的微架构)。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值