Java虚拟机学习笔记--第一章 走进Java

200 阅读3分钟

首先声明本学习笔记是基于 《深入理解Java虚拟机--JVM高级特性与最佳实践》 第二版来进行的,JDK版本基于1.7。笔记初衷在于对看完该书做一个系统性的复盘与加深知识点印象,使得能够更深入理解本书内容。

1、JDK与JRE的区别

  • JDK:Java语言+Java虚拟机+Java API类库,是开发的最小环境。
  • JRE:Java API中的Java SE API + Java虚拟机,是Java程序运行的标准环境。

2、Java版本代表技术

  • JDK1.1:JAR文件格式、JDBC、JavaBeans、RMI、内部类、反射
  • JDK1.2:EJB、Java Plug-in、Java IDL、Swing、JIT、strictfp关键字
  • JDK1.3:数学运算、Timer API优化,JNDI,JavaSoundl类库,Java 2D API
  • JDK1.4:正则表达式、异常链、NIO、日志类、XML解析器、XSLT转换器
  • JDK1.5:自动装箱、泛型、动态注解、枚举、可变长参数、forEach、JMM(Java内存模型)、J.U.C(Java并发包)
  • JDK1.6:动态语言支持、编译API、微型HTTP服务器API,锁与同步、垃圾收集、类加载算法优化
  • JDK1.7:G1收集器、升级类加载器、加强对非Java语言调用支持
  • JDK1.8:Lambda表达式....

3、早期Java很慢的原因

由于解释器编译器不能配合工作,这就意味着如果要使用编译器执行,编译器就不得不对每一个方法、每一行代码都进行编译,而无论他们执行的频率是否具有编译的价值。

4、解释器与编译器是什么

  • 编译器:将java源程序编译成中间代码字节码文件(.class文件),是最基本的开发工具(如:javac.exe)。
  • 解释器:找到字节码文件(.class文件)一行一行地 解释成机器码(二进制)文件。(如:java.exe)

5、JVM是什么

JVM是Java虚拟机的规范,可以理解为一个接口类。当前使用最多的Java虚拟机是HotSpot VM是对JVM具体的实现,相当于一个实现类。hot spot 字面意思为“热点”,是因为该虚拟机有“热点代码探测技术”而得名,该虚拟机是一个小公司设计的。Sun虚拟机团队曾发布过Exact VM,拥有“准确式内存管理”技术而得名。Sun公司收购了开发HotSpot VM的小公司,故拥有了它,并且具备了上述两种特性。

  • 准确式内存管理:虚拟机可以知道内存中某个位置的数据具体是什么类型。(GC提高效率,第二章讲解)
  • 热点代码探测技术:可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果方法被频繁调用、方法有效循环次数多,将会触发标准编译和OSR(栈上替换)编译动作。通过编译器与解释器恰当地协同工作,可以在最优化的程序响应与最佳执行性能中取得平衡,而且无需等待本地代码输出才能执行程序,即时编译的时间压力也相对减小。在十一章中还会有对该技术详解。

6、JIT编译器(Just In Time Compile 即时编译器)

解释器一行一行地解释成机器码比较慢,为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地机器码,并进行各种层次的优化,完成这个任务的编译器称为JIT编译器。JIT编译器是JRE的一部分。