《深入理解Java虚拟机第三版》读书笔记(1)走进java
一、Java技术体系
1、JCP官方定义的技术体系包括:
- Java程序设计语言
- 各种硬件平台上的Java虚拟机实现
- Class文件格式
- Java类库API
- 来自商业机构和开源社区的第三方Java类库
注:JCP(Java Community Process) 是一个开放的国际组织,主要由JAVA开发者以及被授权者组成,职能是发展和更新。
2、JDK与JRE划分
Java程序设计语言、Java虚拟机、Java类库这三部分统称为JDK(Java Development
Kit),JDK是用于支持Java程序开发的最小环境。
Java类库API中的Java SE API子集 和Java虚拟机这两部分统称为
JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。
JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,具体的下文会详细说明
3、Java技术体系所包括的内容
二、Java 为什么能跨平台,实现一次编写,多处运行?
Java 能够跨平台运行的核心在于 JVM 。不是 Java 能够跨平台,而是它的 jvm 能够跨平台。我们知道,不同的操作系统向上的 API 肯定是不同的,那么如果我们想要写一段代码调用系统的声音设备,就需要针对不同系统的 API 写出不同的代码来完成动作。
而 Java 引入了字节码的概念,jvm 只能认识字节码,并将它们解释到系统的 API 调用。针对不同的系统有不同的 jvm 实现,有 Linux 版本的 jvm 实现,也有 Windows 版本的 jvm 实现,但是同一段代码在编译后的字节码是一样的。引用上面的例子,在 Java API 层面,我们调用系统声音设备的代码是唯一的,和系统无关,编译生成的字节码也是唯一的。但是同一段字节码,在不同的 jvm 实现上会映射到不同系统的 API 调用,从而实现代码的不加修改即可跨平台运行。
三、HotSpot概述
HotSpot的定位是面向各种不同应用场景的全功能Java虚拟机
t概述
HotSpot的定位是面向各种不同应用场景的全功能Java虚拟机
能够在编译时指定一系列特性开关,让编译输出的HotSpot虚拟机可以裁剪成不同的功能,譬如支持哪些编译器,支持哪些收集器,是否支持JFR、AOT、CDS、NMT等都可以选择。能够实现这些功能特性的组合拆分,反映到源代码不仅仅是条件编译,更关键的是接口与实现的分离