附学习路线图 java学习体系框架


附学习路线图 java学习体系框架

文章插图
文章插图
1.前言Java 不仅仅是一门编程语言,还是一个由一系列计算机软件和规范组成的技术体系 。
Java 的广告词为 “一次编写,到处运行”,之所以能够做到”跨平台”,是因为每个平台上不同的虚拟机屏蔽了硬件的差异,而 Java 程序则是运行在虚拟机之上的 。
本文简要介绍 Java 技术体系及 Java 虚拟机(Java Virtual Machine, JVM)的相关发展历程,后文再进一步分析 Java 虚拟机的详细内容 。
PS: 本文及接下来的 JVM 笔记内容主要来自周志明《深入理解 Java 虚拟机(第3版)》 。
2. Java技术体系广义上讲,Kotlin、Groovy、JRuby 等运行于 Java 虚拟机上的编程语言及其相关程序都属于 Java 技术体系 。
而从传统意义上来看,JCP 官方定义的 Java 技术体系主要包括:
Java 程序设计语言各种硬件平台上的 Java 虚拟机Class 文件格式Java 类库 API商业机构和开源社区的第三方 Java 类库
其中 Java 程序设计语言、Java 虚拟机、Java 类库三部分统称为 JDK(Java Development Kit),JDK 是支持 Java 程序开发的最小环境 。
Java 类库 API 中的 Java SE API 子集和 Java 虚拟机统称为 JRE(Java Runtime Environment),JRE 是支持 Java 程序运行的标准环境 。
PS: JCP 全称 Java Community Process,即 Java 社区,由业界多家技术巨头组成的社区,用于定义和发展 Java 的技术规范 。
Java 技术体系包含的内容如下:
附学习路线图 java学习体系框架

文章插图
附学习路线图 java学习体系框架

文章插图
3. JVM家族“Java 虚拟机” 只是一个概念,它的实现产品众多,下面简要介绍其发展历程 。
Sun Classic/Exact VMClass VM (JDK 1.0)世界上第一款商用 Java 虚拟机纯解释器方式执行 Java 代码对象查找基于句柄Exact VM (JDK 1.2)准确式内存管理:虚拟机可以知道内存中某个位置的数据具体类型
HotSpot VMSun/OracleJDK 和 OpenJDK 中默认虚拟机目前使用范围最广的 Java 虚拟机
由于 HotSpot 虚拟机是目前使用最广泛的,而且是目前 OracleJDK 和 OpenJDK 的默认虚拟机,后文的内容分析主要是针对该虚拟机 。
终端执行 java -version 命令如下(不同机器会有所不同,此处仅供参考):
$ java -versionjava version "1.8.0_191"Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)这里的 HotSpot(TM) 64-Bit Server VM 指的就是 HotSpot 虚拟机 。
Mobile/Embedded VMJava ME 虚拟机
BEA JRockit/IBM J9 VM这两个虚拟机曾与 HotSpot 虚拟机并称”三大商业 Java 虚拟机” 。
JRockit专注于服务端应用不含解释器,全部代码都由即时编译器编译后执行J9 VM职责分离与模块化优于 HotSpot VM
BEA Liquid VM/Azul VM与特定硬件平台绑定、软硬件配合的专有虚拟机
Apache Harmony/Google Android Dalvik VM这两者是 “虚拟机”,而非 “Java 虚拟机” 。
Harmony VM未通过 TCK 认证未大规模商用Dalvik VM未遵循《Java 虚拟机规范》不能直接执行 Java 的 Class 文件
Microsoft JVM曾经是 Windows 系统下性能最好的 Java 虚拟机
其他KVM:曾在手机平台上得到广泛应用Java Card VM……
其他还有很多各种各样的虚拟机,不再一一列举 。值得注意的是一个比较新的 Java 虚拟机:Graal VM 。
Graal VM2018 年 4 月,Oracle Labs 公开的黑科技:Graal VM 。
Graal VM 被官方称为”Universal VM”和”Polyglot VM”,它是在 HotSpot 虚拟机基础上增强而成的跨语言全栈虚拟机 。可作为”任何语言”的运行平台,包括:
Java、Scala、Groovy、Kotlin 等基于 Java 虚拟机之上的语言C、C++、Rust 等基于 LLVM 的语言,同时支持 JavaScript、Ruby、Python 等
如图所示:
附学习路线图 java学习体系框架

文章插图
附学习路线图 java学习体系框架

文章插图
而且自 JDK 10 起,HotSpot 中又加入了一个全新的即时编译器:Graal 编译器 。
如若将来某一天 HotSpot 虚拟机真的被替换,Graal VM 很有可能”上位” 。
4. 小结本文主要介绍了 Java 技术体系和 Java 虚拟机的发展历程,该部分内容了解即可,后文再分析虚拟机的主要内容 。
为便于回顾和总结,这里将上述内容整理成了思维导图:
【附学习路线图 java学习体系框架】
附学习路线图 java学习体系框架

文章插图
附学习路线图 java学习体系框架

文章插图