Skip to content
Go back

简介

Edit page

简介

JVM (Java Virtual Machine) Java 虚拟机是物理机与高级语言之间的一层抽象层。用于封装各个硬件平台的不同,让各种高级语言只要面向虚拟机编程,不用了解硬件上的差别。最终“实现一次编写,到处运行”的目的。

Java 技术体系

广义上来讲,用 JVM 运行的 Kotlin 、 Clojure 、 JRuby 、 Groovy 等语言都属于 Java 技术体系。但按照 JCP 官方定义的 Java 技术体系分为:

JDK (Java Development Kit)是 Java语言、Java 虚拟机、 Java 类库这三部分的统称 ,是支持 Java 程序开发的最小环境。 JRE (Java Runtime Environemnt)是 Java SE API 子集和 Java 虚拟机这两部分的统称,是支持 Java 程序运行的最标准境。

picture 1

上图是 Java 技术体系的各个组成部分,以及 JDK 和 JRE 所包含的范围。

JDK = JRE + Java 语言 + Java 工具

上述是按照功能组件来分的。

产品线来划分, Java 技术体系包括:

Java EE 针对 SE 做了很多针对性的补充,这些补充包一般以 javax.* 开头,后来一部分这些包被加入到 java.* 的核心包中。

JVM 家族

无语言倾向的虚拟机 Graal VM

Graal VM 的基本工作原理是将语言的源代码或者源代码编译后的中间格式,通过解释器转换成 Graal VM 可读的中间格式。例如对于 LLVM 语言 C/C++ 专门设计一个解释器来满足输出字节码的转换,这个过程被称为程序特化(Specialized)。这种虚拟机可以把本来运行速度不快的平台,比如 python 和 javascript 通过运行时的自动优化以达到更高的执行效率,并且无论什么语言,无论什么平台都能够在上面运行。

新一代的即时编译器 Graal 编译器

自 JDK 10 起,Hotspot VM 替换了 原有的 C2 编译器,改用 Graal 编译器。这个新编译器能够比旧编译器执行更复杂的优化,比如 部分逃逸分析(Partial Escape Analysis),也比 C2 更容易进行激进预测性优化(Aggressive Speculative Optimization),支持自定义的预测性假设;实现时,可以采用了和 C2 编译器相同的名为 Sea-of-nodes 的高级中间表示形式,更容易继承 C2 的优点。总的来说前途可期。


Edit page
Share this post on:

Previous Post
类加载机制
Next Post
How Do I Develop My Terminal Portfolio Website with React