JVM实现之间的差异 [英] Differences between JVM implementations

查看:163
本文介绍了JVM实现之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

JVM实现在哪里有所不同(许可除外)?
每个JVM都实现类型擦除以进行通用处理吗?




  • JRockit

  • IBM JVM

  • SUN JVM

  • 打开JDK
  • li>
  • Blackdown

  • Kaffe



.....
使用Tail-Call-Optimization交易其中之一吗? JVM实现可以在实现JIT编译,优化,垃圾回收,支持的平台,Java支持的版本,以及其他方面不同的方式上有所不同。等等。它们都必须满足一系列特性和行为,才能正确执行你的Java字节码。正如你所指出的,主要的区别往往在于许可。其他非技术性差异往往出现在免费/付费支持选项,与其他技术(通常是J2EE服务器)的集成以及对源代码的访问中。注意:虽然J2EE服务器运行在JVM上,一些服务器具有用于监视,分析和调整JVM性能的集成工具。

就技术差异而言,这些差异比年份。曾几何时,IBM和JRockit JVM的性能远远优于参考Sun的实现。这是由于运行时优化类型,垃圾收集方面的差异以及本机代码(以及各种类使用多少本机代码)方面的差异所造成的。这些性能差异不再显着。

有些JVM还包含诊断和监视工具,或与其集成。 JRockit包含一组用于监控JVM性能的工具。 Sun提供具有重叠功能的各种基于JMX的工具来执行相同的操作。 IBM Websphere曾经为他们的整个J2EE应用服务器提供了一套类似的工具(不确定他们是否仍然这样做,但我认为这仍然是正确的)......



<某些开源JVM的性能往往会稍微降低,因为它们已经从头开始重新开发。因此,他们已经有了更多的追赶。最后我在大约2年前检查过,Blackdown比Sun JVM慢了1.5倍(2x)。它也支持Java的支持版本。


Where do JVM Implementations differ (except licensing)? Does every JVM implement Type Erasure for the Generic handling?

Where are the differences between:

  • JRockit
  • IBM JVM
  • SUN JVM
  • Open JDK
  • Blackdown
  • Kaffe

..... Deals one of them with Tail-Call-Optimization?

解决方案

JVM implementations can differ in the way they implement JIT compiling, optimizations, garbage collection, platforms supported, version of Java supported, etc. They all must meet set of features and behaviors so that it will execute your Java bytecodes correctly.

As you've pointed out, the major difference tends to be in licensing. Other non-technical differences tend to be in free/paid support options, integration with other technologies (usually J2EE servers), and access to source code.

Note: While a J2EE server runs on the JVM, some servers have integrated tools for monitoring, analyzing, and tweaking JVM performance.

As far as technical differences, those have grown less significant over the years. Once upon a time, the IBM and JRockit JVM's had far superior performance to the reference Sun implementation. This was due to significant differences in the types of runtime optimizations, differences in garbage collection, and differences in native-code (and how much native code various classes uses). These performance differences aren't as significant anymore.

Some JVM's also include or integrate with diagnostics and monitoring tools. JRockit includes a set of tools for monitoring your JVM performance. Sun provides various JMX-based tools with overlapping features to do the same. IBM Websphere once upon a time included a similar set of tools for their whole J2EE application server (not sure if they still do, but I would assume that's still true)...

Some of the open source JVM's tend to have a little slower performance because they have been redeveloped from the ground up. As such, they've got a bit more catching up to do. Last I checked about 2 years ago, Blackdown was significantly slower (1.5x-2x?) than the Sun JVM. It was also a bit behind of supported versions of Java.

这篇关于JVM实现之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆