1、Java 简史
Java 语言是一门通用的、面向对象的、反对并发的程序语言。寰球从事 Java 相干开发的人员曾经数以百万计。
从 1995 年“Java”正式呈现以来,Java 曾经经验了二十几年的倒退。
Java 语言之所以能广受欢迎,其中的起因之一是 Java 是一门能够跨平台的语言。
而跨平台的个性就是通过 Java 虚拟机(JVM)是实现的。
2、JVM 简介
JVM 是整个 Java 平台的基石。
JVM 能够看作形象的计算机。编译器将 Java 文件编译为 Java 字节码文件(.class),接下来 JVM 对字节码文件进行解释,翻译成特定底层平台匹配的机器指令并运行。
JVM 和 Java 语言没有必然的分割,它只与 class 文件格式关联。也就是任何语言,只有能编译成符合规范的字节码文件,都是能被 Jvm 运行的。也就是说JVM 是跨语言的平台。
3、Java 虚拟机标准
咱们还要意识到,Java 虚拟机是一种标准,它指定了 Java 虚拟机构造、class 文件格式、类加载过程等。咱们平时所提到的 Java 虚拟机个别指的是一种具体的 Java 虚拟机的实现,例如最出名的 hotspot,遵循 Java 虚拟机标准,甚至能够本人实现 Java 虚拟机。
4、Java 虚拟机常见实现
4.1、HotSpot VM
HotSpot 虚拟机是当初利用最宽泛的虚拟机,它是 Sun/OracleJDK 和 OpenJDK 中的默认 Java 虚拟机。
然而这款虚拟机在最后并非由 Sun 公司所开发,而是由一家名为“Longview Technologies”的小公司设计;甚至这个虚拟机最后并非是为 Java 语言而研发的,它来源于 Strongtalk 虚拟机。
Oracle 收买 Sun 当前,建设了 HotRockit 我的项目来把原来 BEA JRockit 中的优良个性交融到 HotSpot 之中。到了 2014 年的 JDK 8 期间,外面的 HotSpot 就已是两者交融的后果,HotSpot 在这个过程 里移除掉永恒代,排汇了 JRockit 的 Java Mission Control 监控工具等性能。得益于 Sun/OracleJDK 在 Java 利用中的统治位置,HotSpot 天经地义地成为全世界应用最宽泛的 Java 虚拟机,是虚拟机家族中毫无争议的“武林盟主”。
4.2、BEA JRockit/IBM J9 VM
历史上除了 Sun/Oracle 公司以外,也有其余组织、公司开发过虚拟机的实现。除了 HotSpot 之外,BEA JRockit 和 IBM J9 VM 已经与 HotSpot 并称“三大商业 Java 虚拟机”,它们别离是 BEA System 公司和 IBM 公司开发。
除 BEA 和 IBM 公司外,其余一些大公司也号称有本人的专属 JDK 和虚拟机,然而它们要么是通过从 Sun/Oracle 公司购买版权的形式取得的(如 HP、SAP 等),要么是基于 OpenJDK 我的项目改良而来的(如阿里巴巴、Twitter 等),都并非本人独立开发。
5、JDK&JRE&JVM
JDK&JRE&JVM 三者经常被用来比拟。
- JDK(Java Development Kit Java 开发工具包),JDK 是提供给 Java 开发人员应用的,其中蕴含了 Java 的开发工具,也包含了 JRE。其中的开发工具包含编译工具 (javac.exe) 打包工具(jar.exe) 等。
- JRE(Java Runtime Environment Java 运行环境) 是 JDK 的子集,也就是包含 JRE 所有内容,以及开发应用程序所需的编译器和调试器等工具。JRE 提供了库、Java 虚拟机(JVM)和其余组件,用于运行 Java 编程语言、小程序、应用程序。
- JVM(Java Virtual Machine Java 虚拟机),JVM 能够了解为是一个虚构进去的计算机,具备着计算机的根本运算形式,它次要负责把 Java 程序生成的字节码文件。
三者关系简图如下:
<big>参考:</big>
【1】:周志朋编著《深刻了解 Java 虚拟机:JVM 高级个性与最佳实际》
【2】:周志朋等翻译《Java 虚拟机标准》
【3】:封亚飞编著《揭秘 Java 虚拟机 JVM 设计原理与实现》
【4】:【死磕 JVM】JVM 疾速入门之前戏篇