前言

Java 用了有些年头,但是对JVM 只知皮毛,对原理没有深入的了解,概念模糊,嗯!模糊也就算了,反正工作中也用不到或很少用到,主要是跳槽面试时被问到答不上来就无比酸爽啦(不止一次被蹂躏),所以!!!带着惨痛的教训暗下决心,对自己说“ 这块要补一补了!”。既然是学习笔记,学习的模板是《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》-周志明 著,这本书非常不错~推荐。本文是简单记录学习该书的过程与知识点与大家分享。


1、Java的优点 

  1. 一次编写、到处运行。
  2. 安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题。
  3. 它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增长而获得更高的性能。
  4. 各种开源社区提供了丰富的第三方类库。

2、Java技术体系

Java Community Process 指 Java社区)官方所定义的Java技术体系包括了一下几个组成部分: 

  1. Java程序设计语言
  2. 各种硬件平台上的 Java 虚拟机实现
  3. Class 文件格式
  4. Java类库API
  5. 来自商业机构和开源社区的第三方 Java 类库

Java Development Kit):用于支持Java开发的最小环境。 Java程序设计语言、Java虚拟机实现、Java类库,也就是由上面的1、2、4构成。

(Java Runtime Environment) : 用于支持Java程序运行时的标准环境。Java类库中的JavaSE API 子集和Java虚拟机这两部分组成,也就是上面第2项和第4项中的部分内容构成。

或者按照 技术关注的重点业务来划分的话,那Java技术体系可以分为Java Card、Java ME(Micro Edition)、Java SE(Standard Edition)、Java EE(Enterprise Edition)。这里不展开聊了,感兴趣可在网上搜搜。

3、Java发展史、虚拟机家族及展望未来

        原书中这节对Java的前世今生写的很详细,有种看历史剧的感觉,情节紧凑跌宕起伏,强烈建议看原书内容,我个人比较喜欢。

4、打造自己的JDK

        打个比方,你要造轮子,轮子就是开发出来的产品,造轮子需要厂房设备,相当于开发环境,JDK就是提供了这样的环境,为什么要自己做JDK呢?个性化定制、学习原理。。。CentOS8下编译 OpenJDK15 的源码。

基本步骤

        1、下载OpenJDK源码

        2、进入源码目录后执行 bash configure [options] 


        configure命令承担了依赖项检查、参数配置和构建输出目录结构等多项职责,如果编译过程中需要的工具链或者依赖项有缺失,命令执行后将会得到明确的提示,并且给出该依赖的安装命令。


        3、编译 make images


        编译过程很漫长。。。