views:

1071

answers:

2

I'm evaluating between open source and closed source JVM for ARM. In particular, the closed source JVM can make use of Jazelle (java acceleration for newer ARMs).

Do you have any experice with this technology?

(And BTW, which OS do you use with it?)

+1  A: 

I haven't yet seen or heared from any JVM that uses the Jazelle feature. In a project I worked for there were serious java performance problems. A bunch of guys tried hard to find a Jazelle enabled JVM but couldn't. Jazelle-support may have been the silver bullet to their problems.

Strange, eh? Such a big feature without any software support.

It becomes even stranger:

The latest incarnation of the ARM architecture in the Omap3-Chip (CortexA8) officially supports Jazelle. The support-bit in the CPU copro is set, it's in the documentation etc. However, branching into Jazelle code triggers the "unimplemented bytecode" exception - for all possible bytecodes.

So Jazelle on Cortex-A8 is a null-implementation of the feature.

Seems like someone decided that it's not worth wasting silicon for a feature that noone is able to use due to lack of the software.

I leave the conclusion what to think about Jazelle and it's future up to you :-)

Nils Pipenbrinck
Could it be that it's not a null-implementation but that it's disabled until you do some magic, proprietary incantations? That's the feeling that I got when reading the sparse documentation on Jazelle.
Joachim Sauer
What about Jazelle MobileVM (http://www.arm.com/products/multimedia/java/jazelle_software.html)?
michelemarcon
@michelemarcon, have you seen that VM in real?
Nils Pipenbrinck
@sausa, The null-implementation is fact. It's even documented in the Opamp3 documentation somewhere.
Nils Pipenbrinck
@Nils: oh, thanks. Too bad. When I first learned about Jazelle I thought it was a neat idea, but didn't find anyone using it either ...
Joachim Sauer
@Nils: No, I didn't see it. I asked ARM, but they invited me to contact the JVM vendors listed on their site... :(
michelemarcon
btw - If I remember right someone from ARM said that the performance of Jazelle-enabled JVMs would not be much better than the performance of a good JIT-based JVM in the long run. It ought to makes a difference in code-size and startup-time though.
Nils Pipenbrinck
+6  A: 

I worked for a big wireless handset maker. Our team was porting J2ME to the ARM-based handsets. We had 2 guys working on using Jazelle; no OS, just on raw ARM9 silicon. Sadly, it stayed in research because the JIT got the performance we needed without having to pay the license fees for Jazelle.

If you accept the rule-of-thumb that running the Hotspot JVM without JIT runs at 1/10th of compiled C. Then, JIT returns 50% of what you lost and Jazelle returns 60% of what you lost. These are very rough estimates. It all depends on the kind of code that is running. Jazelle had slightly better performance for our test cases because it handled more situations than the JIT. Whereas the JIT went compiled-C-fast in a handful of cases.

The previous poster seems to misunderstand Jazelle. Jazelle causes a trap-like action for a Java bytecode. The user must supply code snippets to handle each bytecode. Without such snippets and the lookup table, you are going to get the unimplemented exception.

dwhall