Wikipedia那个
Comparison of Java virtual machines
页面给JVM实现分得还挺细。
利益相关:Azul System的员工,参与Zing VM的研发;之前在Oracle参与HotSpot VM的研发。
要说主流JVM是什么,首先得区分清楚场景。
光谈部署量的话,搞不好现在部署量最多的JVM是Dalvik / ART…虽然Google会告诉大家Dalvik和ART不是“JVM”,但大家都知道骨子里它就是不折不扣的JVM,毫无疑问。它们的设计处处有标注对JVM规范的参考,以保证语义符合JVM规范的要求;那个基于寄存器的字节码设计只是一种实现优化而已。
Java SE / Java EE
Java EE是以Java SE为基础的。所以并没有“JVM for Java EE”这么一说,只有“JVM for Java SE”,可以用于Java SE与Java EE。
在这个类别下,主流选择有:(按流行程度递减)
- HotSpot VM
- J9 VM
- Zing VM
HotSpot VM
HotSpot VM是绝对的主流。大家用它的时候很可能就没想过还有别的选择,或者是为了迁就依赖了Oracle/Sun JDK某些具体实现的烂代码而选择用HotSpot VM省点心。
Oracle / Sun JDK、OpenJDK的各种变种(例如IcedTea、Zulu),用的都是相同核心的HotSpot VM。
从Java SE 7开始,HotSpot VM就是Java规范的“参考实现”(RI,Reference Implementation)。把它叫做“标准JVM”完全不为过。