美文网首页Java 程序员Java
「JVM进阶之路」一:Java虚拟机概览

「JVM进阶之路」一:Java虚拟机概览

作者: 马小莫QAQ | 来源:发表于2021-03-19 19:37 被阅读0次

    原文链接:https://mp.weixin.qq.com/s/ooB6dvk6AVzq2qWfUUf7Tg

    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 程序生成的字节码文件。

    三者关系简图如下:

    相关文章

      网友评论

        本文标题:「JVM进阶之路」一:Java虚拟机概览

        本文链接:https://www.haomeiwen.com/subject/imjbcltx.html