前言
Java 用了有些年头,但是对JVM 只知皮毛,对原理没有深入的了解,概念模糊,嗯!模糊也就算了,反正工作中也用不到或很少用到,主要是跳槽面试时被问到答不上来就无比酸爽啦(不止一次被蹂躏),所以!!!带着惨痛的教训暗下决心,对自己说“ 这块要补一补了!”。既然是学习笔记,学习的模板是《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》-周志明 著,这本书非常不错~推荐。本文是简单记录学习该书的过程与知识点与大家分享。
1、Java的优点
- 一次编写、到处运行。
- 安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题。
- 它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增长而获得更高的性能。
- 各种开源社区提供了丰富的第三方类库。
2、Java技术体系
Java Community Process 指 Java社区)官方所定义的Java技术体系包括了一下几个组成部分:
- Java程序设计语言
- 各种硬件平台上的 Java 虚拟机实现
- Class 文件格式
- Java类库API
- 来自商业机构和开源社区的第三方 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
编译过程很漫长。。。