Java extensions target embedded processes

Since its introduction in 1995 by Sun Microsystems (Palo Alto, CA), the concept of platform-independent computing, embodied by Java software, has promised to revolutionize computing. To implement platform-independence, the Java compiler generates architecture-independent byte codes that run on any machine with a Java interpreter. Once deployed, Java programs can be upgraded from a central server, enabling new applications to be linked without recompiling. However, the lack of predictable respons

Java extensions target embedded processes

-Andrew Wilson

Since its introduction in 1995 by Sun Microsystems (Palo Alto, CA), the concept of platform-independent computing, embodied by Java software, has promised to revolutionize computing. To implement platform-independence, the Java compiler generates architecture-independent byte codes that run on any machine with a Java interpreter. Once deployed, Java programs can be upgraded from a central server, enabling new applications to be linked without recompiling. However, the lack of predictable response times for Java environments has limited its usefulness to university development programs and shareware packages (see "Java image processing on the Web").

This situation is about to change. At the Embedded Systems West Conference (San Jose, CA), Sun unveiled real-time extensions to Java--EmbeddedJava and PersonalJava--that are expected to address the software requirements of embedded devices. Whereas both are designed to complement a real-time operating system (RTOS) and allow devices to run Java programs, PersonalJava is designed for devices with sophisticated displays, and EmbeddedJava is targeted at devices that have a character-based display or no display at all.

EmbeddedJava classes have application programming interfaces that are compatible with those in Sun`s Java Development Kit, Version 1.1, but have been optimized for embedded devices. However, because the hardware-specific classes control the hardware in the embedded device, the hardware manufacturer must supply them. In operation, the Java virtual machine loads the Java class files, interprets byte codes, and handles native methods.

To address the real-time market, Sun has licensed EmbeddedJava to third-party RTOS vendors QNX Software Systems Ltd. (QSSL; Kanata, Ontario, Canada) and WindRiver Systems (Alameda, CA), among others, for the development of Java-enabled embedded software. To support real-time applications, QSSL`s QNX/Neutrino allows developers to implement drivers and other low-level OS services without sacrificing a key benefit of their Java-compatible applications: the ability to target multiple processor platforms.

"There`s little value in having processor neutrality at the Java-application level if drivers have to be recoded to target a different CPU," says Dan Dodge, QSSL chief technical officer. "With QNX/Neutrino, drivers and other operating-system services can be source-code identical across CPUs--just like Java applications," he adds.

"As a result," says Dodge, "manufacturers of Java-compatible devices can switch processors at any stage of the design process or deploy their designs across multiple processors to achieve different price/performance points. They can often start developing drivers and other low-level services even before they`ve chosen a processor."

Like QNX, PersonalJava for Wind River Systems VxWorks is also Java compatible, and it can be run on many single-board computers or ported to platforms using a Wind River-supplied or customer-written board-support package. Although PersonalJava does not provide real-time response, PersonalJava for VxWorks retains VxWorks real-time performance qualities. A VxWorks task placed at a higher priority than a PersonalJava task will execute without impact from the PersonalJava subsystem.

More in Boards & Software