JVM实现在实现JIT编译,优化,垃圾回收,支持的平台,支持的Java版本等方面可以有所不同。它们都必须满足一组功能和行为,以便它可以正确执行Java字节码。
正如您所指出的,主要的区别往往在于许可。其他非技术上的差异通常包括免费/付费支持选项,与其他技术(通常是J2EE服务器)的集成以及对源代码的访问。
注意:当J2EE服务器在JVM上运行时,某些服务器具有用于监视,分析和调整JVM性能的集成工具。
就技术差异而言,这些年来的重要性没有那么大。曾几何时,IBM和JRockit
JVM的性能远远优于参考Sun实施。这是由于运行时优化类型的重大差异,垃圾回收的差异以及本机代码的差异(以及各个类使用多少本机代码)引起的。这些性能差异不再那么重要。
一些JVM还包括诊断程序和监视工具或与之集成。JRockit包含一组用于监视JVM性能的工具。Sun提供了各种具有重叠功能的基于JMX的工具,以实现相同的目的。曾经有一段时间,IBM
Websphere为其整个J2EE应用程序服务器提供了一套相似的工具(不确定它们是否仍然适用,但是我认为那仍然是事实)…
一些开源JVM的性能往往会稍慢一些,因为它们是从头开始重新开发的。因此,他们还有更多工作要做。我上次检查大约2年前,Blackdown比SunJVM慢得多(1.5x-2x?)。它也落后于受支持的Java版本。



