Java虚拟机-sun classic vm
世界上第一款商用的Java虚拟机。
只能使用纯解释器的方式来执行Java代码。
Java虚拟机-ExactVM
Exact Memory Management 准确试内存管理
虚拟机可以知道内存中某个位置的数据具体使什么类型的,在进行垃圾回收的时候可以判断堆上的数据是否能被使用。
编译器和解释器混合工作以及俩及即时编译器。
只在Solaris平台发布。
Java虚拟机-HotSpotVM
HotSpot,是较新的Java虚拟机技术,用来代替JIT(just-in-time compilation,及时编译)技术,可以大大提高Java运行的性能。Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而该技术将常用的部分代码编译为本地(原生,native)代码,这样显著提高了性能。
对于初学者来说,尽管Hotspot有些神秘,但是性能方面它确实很棒,因为动态建模(dynamic profiling)是优良性能的捷径。HotSpot从运行应用中采样数据,从而可以优化代码,进而得到良好性能。它相当于以模仿人工的方法进行优化。在程序运行的开始,Java代码仍然解释执行,但HotSpot引擎开始进行采样(Profiling)。HotSpot引擎可以集中精力来对HotSpot代码进行深度优化,从而使这部分代码的执行更加迅捷。因此当HotSpot优化时,它为优化设立了一层保护来确保优化的基本原理有效;但当这层保护失效时,优化就会很慢。
Java虚拟机-KVM
Kilobyte 是在手机平台运行。而且简单高效,轻量,高度可移植。相传诺基亚S60用的就是这个虚拟机。
Java虚拟机-JRockit
现在已经被Oracle收购
BEA 自称世界上最快的虚拟机
专注服务端的应用
优势:
- 垃圾回收器
- MessionControl 服务套件(用于寻找生产环境中内存泄露)
Java虚拟机-J9
IBM公司生产的自称最快的虚拟机
全称IBM Technology for Java virtual Machine IT4j
类似于HotSpot
不是Java虚拟机的Java虚拟机-dalvik
不是一个Java虚拟机,无法执行编译后的class可执行文件。
主要是在android开发的。
DEX dalvik Executalbe 可执行文件
Microsoft JVM
。。。都是历史了。
JDK8的特性
接口的默认方法和静态方法
Java8使用了俩个概念扩展了接口的含义,默认方法和静态方法,默认方法使得卡覅这可以在不破坏二进制兼容的前提下,往现存接口中添加新的方法,即不强制那些实现了该接口的类也同时实现这个新加的方法。
Lambda表达式和函数式编程
函数式编程时技术的发展方向,而lambda使函数式编程最基础的内容。
最简单的体现就是不用再写大量的匿名内部类。
此外,因为lambda的引入,集合操作也得到了很大的改善。比如,stream API,把map,reduce,filter这样的基本函数式编程的概念与Java集合结合起来。在大多数情况下,我们可以告别for,while,if。
Data Api
重复注解
更好的类型推断
Java 8 编译器在类型推断方面有很大的提升,在很多场景下编译器可以推导出某个参数的数据类型,从而使代码更为简洁。