Comparing JVMs on ARM/Linux

2012-Feb-15 | Tags: analysisbenchmarkdevelopment

Linux on ARMFor quite some time, Java Standard Edition releases have included both client and server bytecode compilers (referred to as c1 and c2 respectively), whereas Java SE-Embedded binaries only contained the client c1 compiler. The rationale for excluding c2 stems from the fact that (1) eliminating optional components saves space, where in the embedded world, space is at a premium, and (2) embedded platforms were not given serious consideration for handling server-like workloads.

But all that is about to change. In anticipation of the ARM processor's legitimate entrance into the server market (see Calxeda), Oracle has, with the latest update of Java SE-Embedded (7u2), made the c2 compiler available for ARMv7/Linux platforms, further enhancing performance for a large class of traditional server applications. 

These two compilers go about their business in different ways. Of the two, c1 is a lighter optimizing compiler, but has faster start up. It delivers excellent performance and as the default bytecode compiler, works extremely well in almost all situations. Compared to c1, c2 is the more aggressive optimizer and is suited for long-lived java processes. Although slower at start up, it can be shown to achieve better performance over time. As a case in point, take a look at the graph that follows.

Facebook Twitter RSS E-Mail

Linux on ARM