Tuesday, July 17, 2012

If anyone can give me brief information about the advantages and disadvantages of the two JVM since they all depend on the Standard JVM Specification.
link|improve this question

41% accept rate

2 Answers

JRockit was originally developed by Appeal and BEA Systems before being acquired by Oracle to run server software. It was meant to be optimized for large applications requiring long running tasks, a lot of memory and a scalable environment, pushing optimizations for these scenarios even further than the Sun HostSpot JVM in server-mode (see also: Real differences between "java -server" and "java -client"?).
Since the acquisition of Sun Microsystems by Oracle, Oracle has communicated on a concrete plan and roadmap to have JRockit and the HostPot JVM to converge to be a "best of both worlds" implementation, mostly built on HotSpot but integrating the most popular features of JRockit.
In fact, and as mentioned on the same blog, JRockit won't be released as a Java 7 JVM; and some of JRockit's features are being incrementally brought into HotSpot (internally even sometimes now referred to as "HotRockit").
For more details, read:

Where do JVM Implementations differ (except licensing)? Does every JVM implement Type Erasure for the Generic handling?
Where are the differences between:
  • JRockit
  • Open JDK
  • Blackdown
  • Kaffe
..... Deals one of them with Tail-Call-Optimization?
link|improve this question


8 Answers

up vote10down voteaccepted
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.

No comments: