The earliest IBM Java product I recall using was a 1.1 JVM for Windows 3.1. The reason I probably remember it at all is that it used a fancy trick to simulate filenames longer than 8.3 characters. IIRC, it stored some kind of metadata file alongside the real files.
More recently, I’ve used IBM’s 1.4 JVM, their Jikes compiler, and now their 1.5 JVM (beta), primarily on Linux, although I used 1.4 on Windows as well. At the time I was using the 1.4 versions, I was doing timing comparisons, trying to eke out a little more performance out of the product I was working on. Not only did Jikes make our build process faster (it was much faster than javac), the IBM JVM was noticeably faster and lighter on memory footprint. I don’t remember the numbers anymore, but let’s say about 10-20%.
One interesting benefit of sorts to using an underpowered system is that performance issues really stand out. In my case, my blog runs on Blojsom, which requires a servlet container and thus a JRE to run. Since I used to use recycled PCs that are about a decade old – and now a virtualized host equivalent to a 1994 PC – the basic JVM memory footprint is of concern to me. For awhile I used IBM JVM 1.4, based on my old results.
Since I had to reinstall Java anyway for the hosted machine, I decided to check out some alternatives. I tried Sun’s 1.5 JVM, IBM’s 1.5 JVM, and SableVM. Long story short, IBM took the cake again (running Jetty and Blojsom). Sun’s 1.5 had about the same footprint as IBM 1.4 (30MB), but IBM’s 1.5 came in at 27MB. That’s physical memory according to top. I would expect IBM’s 1.5 to outperform Sun’s 1.5, too, although that’s just “fanboy-ism”.
3MB may not seem like much, but as a percentage (10) and relative to the physical memory for the virtual host (90MB), it’s pretty good. I could certainly pay more for more headroom, but all I really want is not to thrash to swap when doing basic work from a shell. After all, it’s not a production site… and I’m naturally inquisitive about these sorts of things.
[Update: IBM's 1.5 beta had problems staying alive after about three or four hits on the servlet - the process seems to silently exit. I guess IBM's meaning of "beta" is different than Google's; I did get to learn that IBM's 1.5 startup is noticeably faster than IBM's 1.4.
I guess I'll use a different JVM for now.]