Java平台
Java不仅仅只是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系。
- Java程序设计语言:基本语言特性,语法糖,面向对象,反射,泛型。。。
- Java生态:各种框架,Spring,hadoop。。。
- Java基础类库,API
- 核心类库:IO/NIO,网络,utils。。。
- 安全类库
- jdk.management等类库
- 第三方类库
- Java虚拟机
- 垃圾收集器
- 运行时
- 动态编译
- 辅助功能,JFR等
- 工具包
- 辅助工具:如Jlink,jar,jdeps
- 编译器:javac,sjavac
- 诊断工具:jmap,jstack,jconsole,jcmd
JDK & JRE
JDK是Java开发工具包,JRE是Java运行环境,它包含虚拟机,但不包含编译器。
Java编译
- 首先是使用Java的编译工具,比如javac将源码编译成虚拟机可以认识的字节码。
- 字节码会给不同的虚拟机(Windows,Mac上的虚拟机)在运行时,通过类加载器加载字节码,解释或编译成对应的机器码执行。这里就两点要注意的:
- 第一是可以给虚拟机设置参数,是使用解释还是编译的方式。编译会导致启动较慢,而解释会导致执行稍慢。可以针对不同场景进行调整。
- 这里还有个一个动态编译器(JIT),会在运行时将热点代码(以方法为单位,那些会反复执行或者循环的代码)编译成机器码,这部分代码也是编译执行的。
参考和引用
极客时间:Java核心36讲
书籍:深入理解Java虚拟机