tags:

views:

4060

answers:

6
+16  Q: 

Java VM: IBM vs Sun

I'm surprised at how little information I can find comparing IBM's jvm to Sun's. How do they compare?

I have always used Sun's version - what are the reasons (if any) to consider switching to IBM's?

EDIT: To phrase the question a little differently: For those of you who use IBM's jvm, what are your reasons?

+4  A: 

I've been using IBM and Sun pretty much equally often in production. Occasionally we run across some crashing-bugs in one or the other, try the other one and if it works it's the JVM of the moment until that bug is fixed.

Some time ago the IBM JDK was quite some bit faster in some setups, but I don't know if that is true any more.

The main question is: Do you want commercial support and if so, who'd you rather pay? When you're running a very IBM-heavy shop, then you might want to consider using the IBM JRE.

Joachim Sauer
That's good to know that they are pretty interchangeable. Thanks for the info.
nathan
+4  A: 

I use IBM's JVM mostly because it is used in their WebSphere product line. One difference that I learned about a few years back is that the garbage collection algorithms are different. I don't have a link to back that up and I'm not even certain if that is still the case.

martinatime
Yeah, all the info I could find online was fairly dated, and mostly referred to garbage collection. I wonder if there is a difference anymore.
nathan
I just did some more surfing for answers on this with little to show for it.
martinatime
+2  A: 

We used to use IBM's JVM years ago because it was noticeably faster on a number of platforms. For the longest time Sun's JVM has been better on the majority of platforms to the point that we only ever use IBM's JVM on AIX systems.

carson
+3  A: 

An additional alternate JVM you can investigate is BEA's jrockit, which was also supposed to faster, specifically advertised as optimized for J2EE. As with the IBM jdk, the benefit was supposed to be performance.

Haven't looked at this since 1.4 days, so my information is a bit dated.

Steve B.
FWIW, I tried jRocket about 3 years ago - it seemed to perform slower in my testing.
Software Monkey
A lot has happened in 3 years...
staffan
+1  A: 

We use IBM's JVMs on iSeries systems... It works well enough, but I have always been left with the feeling that my desktop PC outperforms a sizeable midrange system. I can't comment, though, on whether that's differences in the hardware or JVM. It must surely be both, you'd think.

EDIT: By way of comparison, our iSeries 9406-520 with 2 CPU's, 24GB RAM and 140MB 15K HDD's takes about 2.5 minutes to startup our web server platform; the same software from the same JAR starts up in 5 seconds on my PC - a Dell Precision T7400 Intel XEON quad core at 3GHZ with 2GB RAM and 70 MB 15K HDD's.

Software Monkey
Possibly something to do with the workloads your putting on the ISeries. I know on a midrange Z/OS system set up for development not production IBM's Java can be an order of magnitude slower then IBM's jvm on the pC.
Jared
These are on reasonably powerful systems with no other apps competing for resources and the entire memory pool available (well, other than the bit reserved for the system pool).
Software Monkey
I have found that the Classic JVM on IBM i (same platform) is very slow at starting as it need to do a lot of housework even with the -Djava.compiler=jitc flag. This is apparently a MI-compliation issue. When up and running it is reasonably fast, but you have to be very careful with garbage collection and memory pools.
Thorbjørn Ravn Andersen
... also, IBM i is usually cpu-starved, since the typical pre-java usage is I/O-bound. IBM deliberately caps the cpu-cycles.
Thorbjørn Ravn Andersen
@Thorbjørn: The cap is only applied to interactive CPU; the JVM's in this case are all batch. Also, my opinion was definitely stated as subjective, since I haven't done any serious apples-to-apples comparisons. It just seems like I need a whole lot more iSeries to perform favorably against my PC for internet-type workloads (not for DB).
Software Monkey
I do not disagree. The IBM i is a very expensive machine to run Java programs on. It is my hope that the non-Classic JVM is not as bad.
Thorbjørn Ravn Andersen
@Thorbjørn: My understanding is that the new J9 based JVMs are considerably more efficient. But I have not had a chance to do anything with them yet because our dev systems are not a new enough O/S version to install either of them.
Software Monkey
@Software Monkey - same here. We are still on V5R3.
Thorbjørn Ravn Andersen
+3  A: 

I've used IBM's very briefly and it was faster at the time - but that was a while ago and I don't think that's the case any more.

You might want to consider running your app under 2 or 3 different JVMs for a few reasons besides performance:

  • To avoid bugs in a particular JVM
  • To ensure you're not relying on any JVM-specific behaviour
  • To ensure compatibility if you release the software to people who may be using different JVMs
  • There have been (and still are) problems with Sun's JVM and the way it uses / talks to X11 so IBM might be a better choice for Swing
Draemon