Jazelle

Jazelle DBX (direct bytecode execution)[1] is an extension that allows some ARM processors to execute Java bytecode in hardware as a third execution state alongside the existing ARM and Thumb modes.[2] Jazelle functionality was specified in the ARMv5TEJ architecture[3] and the first processor with Jazelle technology was the ARM926EJ-S.[4] Jazelle is denoted by a "J" appended to the CPU name, except for post-v5 cores where it is required (albeit only in trivial form) for architecture conformance.

Jazelle RCT (Runtime Compilation Target) is a different technology based on ThumbEE mode; it supports ahead-of-time (AOT) and just-in-time (JIT) compilation with Java and other execution environments.

The most prominent use of Jazelle DBX is by manufacturers of mobile phones to increase the execution speed of Java ME games and applications.[citation needed] A Jazelle-aware Java virtual machine (JVM) will attempt to run Java bytecode in hardware, while returning to the software for more complicated, or lesser-used bytecode operations. ARM claims that approximately 95% of bytecode in typical program usage ends up being directly processed in the hardware.

The published specifications are very incomplete, being only sufficient for writing operating system code that can support a JVM that uses Jazelle.[citation needed] The declared intent is that only the JVM software needs to (or is allowed to) depend on the hardware interface details. This tight binding facilitates the hardware and JVM evolving together without affecting other software. In effect, this gives ARM Holdings considerable control over which JVMs are able to exploit Jazelle.[citation needed] It also prevents open source JVMs from using Jazelle. These issues do not apply to the ARMv7 ThumbEE environment, the nominal successor to Jazelle DBX.

  1. ^ Cite error: The named reference patent was invoked but never defined (see the help page).
  2. ^ Cite error: The named reference product was invoked but never defined (see the help page).
  3. ^ Cite error: The named reference armarm was invoked but never defined (see the help page).
  4. ^ Cite error: The named reference Shanghai was invoked but never defined (see the help page).