深入理解JVM(1)—JVM、HotSpot与JDK

2021-11-18  本文已影响0人  925781609

1.JVM

Java Virtual Machine Specification是一套标准。通过定义虚拟机,像真实计算机一样,运行字节码指令。JVM的好处是可以屏蔽操作系统的细节, 使Java可以一次编写,到处运行。

2. Hotspot

HotSpot 是JVM的一种实现,最初由Sun开发,现在被Oracle所有,除了Hotspot还有其他实现,如 JRockit, IBM J9等。

3.JDK

3.1 JDK vs JRE

Java Runtime Environment(JRE) 包含运行编译过的Java代码的基本组件, 包括JVM、类库。Java SE Development Kit(JDK)则更全,除了JRE,还有Java语言和工具(例如javac、javap)。JDK和JRE的关系如下图所示:

JDK vs JRE

3.2 Oracle JDK vs Open JDK

Oracle JDK与OpenJDK都是HotSpot VM。从源码层面说,两者基本上是同一个东西。

从JDK7开始,Oracle JDK里的HotSpot VM,也是基于openjdk.java.net上OpenJDK的Mercurial代码库。HotSpot VM只有非常非常少量的功能没有在OpenJDK里,那部分在Oracle内部的代码库里。这些私有部分都不涉及JVM的核心功能。
但是对于最新的版本,例如Java 11,OpenJDK 基本上已经与Oracle JDK一致了, 也包含了Java Flight Recorder, Java Mission Control, Application Class-Data Sharing,和 ZGC.

4. Java到底是解释型语言还是编译型语言

其实,现在用编译型、解释型来分类编程语言已经有点力不从心了。JAVA的第一道工序是javac编译,当然目标文件是BYTECODE。后续可能有三种处理方式:

  1. 运行时,BYTECODE由JVM逐条解释执行,
  2. 运行时,部分代码可能由JIT翻译为目标机器指令(以method为翻译单位,还会保存起来,第二次执行就不用翻译了)直接执行;
  3. RTSJ。继JAVAC之后执行AOT二次编译,生成静态的目标平台代码(典型的就是IBM WEBSHPERE REAL TIME)。

5.参考:

  1. difference-between-jvm-and-hotspot
  2. openjdk-vs-java-hotspotvm
  3. Java官方(Oracle/Sun)发布的JDK,和开源项目OpenJDK,里面包含的JVM是否相同? - RednaxelaFX的回答 - 知乎
  4. Java 是编译型语言还是解释型语言? - 知乎用户的回答 - 知乎
上一篇下一篇

猜你喜欢

热点阅读