Embedded Java technology, specifically the J2ME platform,
provides a universal and secure runtime platform for transient,
application-based content and services. Through the "write once, run
anywhere" promise of Java, the J2ME platform can support a range of
Internet appliances, from mobile wireless devices to TV set-top boxes.
Companies that deploy Java-enabled devices with native and
resident applications developed using Java benefit because porting
isn't necessary when the underlying device technology changes. These
benefits have caused companies - such as J-Phone, Motorola, Nokia,
NTT DoCoMo, and Sprint - to integrate Java technology into their
products and services.
The flexibility afforded by the Java platform has typically
meant slow and, at times, inadequate Java software execution and
high-system energy usage that impacts battery life. Despite today's
deployment of Java-enabled devices, the performance issue remains.
As with Java applications running on desktop computers and
servers, the goal of Java-enabled devices is to achieve Java software
execution and energy use that is equivalent to compiled software
developed in C, C++, and assembly code. The acceleration techniques
used for desktop computers and servers, however, are inappropriate
for Internet appliances and wireless mobile devices that are
typically cost-sensitive and powered by batteries.
Computing- and processing-intensive algorithms commonly
migrate from initially being implemented in software to being in
dedicated hardware. For example, generating graphics images, such as
drawing polygons, moving sprites, and rendering 3D effects, were all
initially implemented as software routines. Now these types of
graphics functions are handled by the graphics processor chip, where
the specialized processing can be done faster and more efficiently
than by software running on the main system microprocessor. A similar
migration is under way with regard to executing Java bytecode
instructions, hence boosting the performance of Java application
software developed for the J2ME platform.
One of the big benefits of processing Java bytecode
instructions in dedicated hardware is to bridge the gap between the
stack-based Java runtime and register-based microprocessors. The
issue here is that the Java stack operations require memory
transactions to interact with the stack (typically held within
memory), which slows performance and burns energy.
Recently, In-Stat/MDR-released findings point to more than 50% of embedded JVMs utilizing hardware
acceleration by 2004, increasing to better than 70% in 2005. Device
designers and manufacturers, who are today designing products that
include hardware solutions to boost Java software execution, validate
the attraction of hardware acceleration. These market forces,
combined with the natural trend to migrate these computationally
intensive activities to hardware, have enabled hardware accelerators
for the J2ME platform to come of age.
Before discussing Java acceleration hardware further, it's
important to understand that hardware Java accelerators don't replace
a Java Virtual Machine (JVM) but rather complement it.
A Java Virtual Machine has several components, only one of
which (the Java bytecode instruction interpreter loop) is enhanced or
replaced by a hardware-based acceleration technology. The JVM still
takes care of loading and verifying Java classes, managing memory,
scheduling tasks, and other housekeeping functions. The more
efficiently these other functions are implemented, the greater the
effect an accelerator can have on overall performance.
Acceleration Technologies
All acceleration technologies primarily focus on the main
bottleneck within the JVM - the interpretation process - and seek to
improve the speed at which Java bytecode instructions are interpreted
and/or executed. A second area of focus for some accelerators is to
help speed up the garbage collection process.
Supporting the market's appetite for Java acceleration
hardware are a number of solutions that can be grouped into three
main categories: native Java microprocessors, Java accelerator peripherals/coprocessors, and integrated Java bytecode interpreters.
Native Java microprocessors use Java bytecode instructions as
the native instruction set. It should be noted that these
microprocessors might also include additional instructions necessary
to support an operating system and device drivers.
Java accelerator peripherals/coprocessors are standalone chips or components within a System on a
Chip (SOC) that execute Java bytecode instructions.
Integrated Java bytecode interpreters, including instruction
set extensions that support bytecode execution and other JVM
operations, are microprocessor architecture extensions that perform
on-the-fly Java bytecode interpretation within the core of a
microprocessor chip.
According to In-Stat/MDR, native Java microprocessors "are an
anti-infrastructure solution" because development tools, add-ins, and
other support are not available from the third-party market at large.
The absence of infrastructure and third-party market support makes
the overall solution unpalatable and is one of the primary reasons
that Sun Microsystems abandoned the development of its own native
Java microprocessors (the "Pico Java" and "Micro Java"
microprocessors).
Native Java microprocessors in general continue to be poorly
received by the marketplace.
Java accelerator peripherals/coprocessors are the newest category of devices and hold great promise
as long as they can be easily and transparently integrated into a
system. As with native Java microprocessors, the more effort that it
takes for a designer to incorporate a media or content accelerator,
the less likely that technology or product will be chosen.
What this means is that the acceleration technology most
likely to be adopted and included into devices must complement
existing designs and not force major changes. In today's market,
designers prefer to have a hardware Java accelerator and JVM as an
overall integrated solution. A solution that recognizes and
accommodates designers' requirements will be embraced more rapidly
than more intrusive options.
A key attribute and benefit of any solution is one that
offers transparent integration with any JVM as well as with existing
hardware designs that minimize development efforts and therefore
reduce the always-critical time-to-market.
Choosing the Right Solution
As the J2ME platform gains acceptance in wireless mobile
devices, Internet appliances, and other embedded applications, that
acceptance is, in turn, driving adoption of specialized hardware that
improves the performance of software developed for the J2ME platform.
Different options exist in today's market, each with its own unique
set of performance characteristics and pros and cons, so designers
are encouraged to assess their requirements in advance and choose a
solution accordingly.
Author Bio
Ron Stein is a senior marketing manager at Nazomi Communications,
Inc. He has an MBA from Santa Clara University and a BSEE from the
University of Pittsburgh.
ron@nazomi.com