读书笔记 | Java虚拟机

虽然有专门讲Java虚拟机的书,但是作为Android开发并不需要了解那么多的知识点,作为Android开发了解本章的内容基本就足够了。

1.概述

我们常说的 JDK (Java Development Kit)包含了 Java 语言、 Java 虚拟机和 JavaAPI 类库这三部分,是 Java 程序开发的最小环境。

而JRE (Java Runtime Environment)包含了 Java API 中的 Java SE API 子集和 Java 虚拟机这两部分,是 Java 程序运行的标准环境。

那么可以看出 Java 虚拟机的重要性,它是整个 Java 平台的基石,是 Java 语言编译代码的运行平 台。你可以把 Java 虚拟机看作一个抽象的计算机,它有各种指令集和各种运行时数据区域。 虽然叫 Java 虚拟机,但其实在它之上运行的语言可不仅仅是 Java,还包括 Katlin、Groovy、Scala、 Jython等。因此对于 Android 开发来说,不管你开发用的是 Java 还是 Kotlin,你都需要去理解 Java 虚拟机。

1.1 虚拟机家族

自从 1996 年 Sun 公司发布的 JDKl.O 中包含的 Sun Classic VM 到今天,出现和消亡了很多种虚拟机, 我们这里只简单介绍目前存活的相对主流的Java虚拟机。

虚拟机解释
HotSpot VMOracle JDK 和 OpenJDK 中自带的虚拟机,是最主流的和使用范围最广的 Java 虚拟机。
介绍 Java 虚拟机的技术文章,如果不做特殊说明,大部分都是介绍 HotSpotVM 的。 HotSpot VM 并非是 Sun 公司开发的,而是由 Longview Technologies 这家小公司设计的,它在 1997 年被 Sun 公司收购, Sun 公司又在 2009 年被 Oracle 收购。
J9 VMJ9VM 是 IBM 开发的虚拟机,目前是其主力发展的 Java 虚拟机。J9 VM 的市场定位和HotSpotVM 接近,它是一款设计上从服务器端到桌面应用再到嵌入式都考虑到的多用途虚拟机,目前 J9 VM 的性能水平大致与 HotSpotVM 是一个档次的。
Zing VM以 Oracle 的 HotSpotVM 为基础,改进了许多影响延迟的细节。最大的 3 个卖点如下:
低延迟,“无暂停”的 C4 GC, GC 带来的暂停可以控制在 lOms 以下的级别,支持 的 Java 堆大小可以达到 lTB。
启动后快速预热功能。
可管理性:零开销、可在生产环境全时开启、整合在 JVM 内的监控工具Zing Vision。

需要注意的是,Android 中的 Dalvik 和 ART 虚拟机并不属于 Java 虚拟机,因此这里没有列出它们。

1.2 Java虚拟机执行过程

Java虚拟机执行流程从上图可得:Java 虚拟机执行流程分为两大部分———编译时环境和运行时环境。

当一个java文件经过Java编译器编译后会生成class文件( javac指令 ),这个class文件会由Java虚拟机来处理(运行在Java虚拟机上)。

Java 虚拟机与 Java 语言没有什么必然的联系,它只与特定的二进制文件: class 文件有关。 因此无论任何语言只要能编译成 Class 文件,就可以被 Java 虚拟机识别并执行。所以Kotlin、Groovy都是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值