The tests presented in this report look at the performance and network scalability of ten Java virtual machines on six operating systems using a common Intel hardware platform running VolanoMark 2.1. VolanoMark attempts to answer two questions about Java virtual machines used in network server environments -- especially those environments involving a large number of active socket connections:
VolanoMark isn't a Java virtual machine test. It's a Java platform test. It allows you to take one set of Java class files and use them to evaluate an entire Java system, including the Java virtual machine, the operating system, the hardware, and the network. Each of the tests in this article was executed on identical Intel hardware, providing an answer to the question our customers ask most -- Which operating system and Java virtual machine will provide the best Java server platform for my Intel box?
Unlike Java support for applets on the client side (where two virtual machines -- those provided by Microsoft and Netscape in their respective Web browsers -- dominate), the leaders in Java on the server side change monthly. Nowhere is that more apparent than for Intel-based systems, which provide dozens of Java VM alternatives. Volano customers can and do switch overnight from one Java virtual machine to another -- or even from one operating system to another -- in order to gain the best performance or network scalability from their Java applications.
VolanoMark is a 100% Pure Java server benchmark characterized by long-lasting network connections and high thread counts. In this context, long-lasting means the connections last several minutes or longer, rather than just a few seconds. The VolanoMark benchmark creates client connections in groups of 20 and measures how long it takes for the clients to take turns broadcasting their messages to the group. At the end of the test, it reports a score as the average number of messages transferred by the server per second. Its results have accurately predicted the real-world Java performance and scalability of our VolanoChat product line for more than two years.
Furthermore, VolanoMark seems to hit Java platforms where it hurts the most, not only creating a large number of active socket connections and threads but forcing the system to constantly switch among them all. The resulting scores are dominated by several factors:
VolanoMark 2.1 is available as a free download from Volano's Web site. (See the Resources section below.)
Each time I run a set of VolanoMark tests against the latest batch of Java virtual machines I find some surprises, and this time is no exception. IBM now dominates VolanoMark performance, whether on Windows NT 4.0 or on its new OS/2 Warp Server for e-business. IBM's Java virtual machine for Windows NT is a remarkable 20 percent faster than the alternatives from Microsoft and Sun. On OS/2 Warp Server it even beats Tower Technology's TowerJ static compiler, showing that it is possible for normal Java virtual machines to surpass native performance, even if that's not yet happening on the same operating system.
PULLQUOTE: BLUE RIGHT Each time I run
a set of VolanoMark
tests I find surprises,
and this time is
no exception. :END_PULLQUOTE
The performance of Tower Technology's latest TowerJ 2.2.7 is still superb, as should be expected from a static compiler. TowerJ takes Java class files and converts them into C source code, which it then compiles into a native executable program. TowerJ 3.0, due for release in March, can dynamically load Java class files in both their original form and in their native TowerJ-compiled form. But unlike all the other Java virtual machines shown here, TowerJ isn't free. (See Resources for the pricing structure.)
Microsoft's and Sun's Java VMs on Windows both fall right in the middle of the pack, with Novell's NetWare Java VM right behind them. Sun's JDK 1.2 [aka the Java 2 platform --editor] on Solaris executes at about half the speed of the top performers, but once you discover its network scalability scores below, you won't care!
The Blackdown Java-Linux port now has a good just-in-time compiler called TYA, which gives it roughly a 50 percent performance improvement over its score without TYA. The latest release of the FreeBSD Java VM is very stable but suffers in performance from its lack of a just-in-time compiler.
Transvirtual's Kaffe OpenVM holds a lot of promise and even convinced a panel of 21 judges that it's the Best Virtual Machine. Unfortunately, that's not a conclusion I can share based on my own tests. For more than a year, I have been unable to run VolanoMark with Kaffe on several different operating systems. I'm still hopeful, however, since Kaffe holds the best promise of providing Java support for some non-Intel Linux systems, such as those from Cobalt Networks.
The performance tests were executed with the following commands on a local loopback connection, using the heap size options shown below where possible:
java -ms8m -mx64m COM.volano.Mainjava -ms8m -mx64m COM.volano.Mark -count 100See the COM.volano.Mark command synopsis for a complete description of all options.
The operating system was rebooted before each set of tests for a particular Java virtual machine, and the first test result was discarded. The server side was restarted before each run of the client benchmark. The final score is the average of the best two out of three subsequent results.
Scores are the throughput of the server in messages per second. Bigger numbers are faster. See the "Environments" section for details on the hardware platform, operating systems, and Java virtual machine environments.