HomeDigital EditionSys-Con RadioSearch Java Cd
Advanced Java AWT Book Reviews/Excerpts Client Server Corba Editorials Embedded Java Enterprise Java IDE's Industry Watch Integration Interviews Java Applet Java & Databases Java & Web Services Java Fundamentals Java Native Interface Java Servlets Java Beans J2ME Libraries .NET Object Orientation Observations/IMHO Product Reviews Scalability & Performance Security Server Side Source Code Straight Talking Swing Threads Using Java with others Wireless XML

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. [email protected]

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.
  E-mail: [email protected]

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.