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?)
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?)
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 :-)
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.