Differences between JVM implementations

2019-01-21 20:12发布

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?

8条回答
Bombasti
2楼-- · 2019-01-21 20:39

Tail-call optimization is not yet supported by Java. John Rose is leading efforts to include this in a future release, and has described the approach, and some of the issues involved.

查看更多
Emotional °昔
3楼-- · 2019-01-21 20:45

Another difference between JVMs is behaviour on undocumented API. (e.g. com.sun.xxx) For example, Sun's JVM and IBM's JVM both have slightly different behaviour on signal handling. (IBM's JVM doesn't allow the application to trap the "INT" signal in certain cases.)

查看更多
疯言疯语
4楼-- · 2019-01-21 20:53

JIT compiling is one thing that some JVM:s don't have.

查看更多
唯我独甜
5楼-- · 2019-01-21 20:56

Type erasure is a compiler function and as such JVM independent.

查看更多
Fickle 薄情
6楼-- · 2019-01-21 20:57

Things like type erasure are done by the compiler to be backward compatible with older JVMs. Most JVMs should support all the features you need, but some may be more optimized than others. I'm guessing the Sun JVM is probably the fastest.

查看更多
等我变得足够好
7楼-- · 2019-01-21 20:58

If the JVM claims to be Java it must pass the TCK, providing a lot of stock funcitonaltiy.

The differences are in non-core places, like garbage collection, the jconsole/visualvm in the Sun JVM, precompilation etc.


clarification: TCK is the test suite that a virtual machine has to pass in order to be officially Java compliant.

查看更多
登录 后发表回答