Aided by software and hardware technologies now coming to market, the Java language is moving into new embedded applications in handsets, military and aerospace systems, and small-footprint systems.
That's good news for embedded-system designers, since applications written in Java can be repurposed and reused more easily than apps rendered in C or C++, according to Java proponents. And since most universities teach Java, the number of Java programmers is growing, leading some government contractors to specify Java for next-generation defense systems.
Meanwhile, the J2ME (Java-to-mobile environment) edition of Java has thrived in cell phones, PDAs and applications where portability is key.
Nevertheless, Java's relatively large memory footprint and sluggish performance have limited its use in embedded: Surveys show that about two-thirds of all embedded applications are still written in C or C++ code. Java-savvy engineers working on projects that require "hard" real-time performance or low-level device access in deeply embedded systems have been forced to switch to the C variants.
Moreover, the handoff from Java to C in a large
system with deeply embedded aspects has been difficult. Java code doesn't easily interface to C code running at the device level on sensors, for example. The difficulties of getting Java and C code to work well together have frustrated programmers who would prefer to use Java. Indeed, those problems have caused some project managers to avoid Java altogether in complex systems.
But improvements are being made to make Java programming easier, and Sean Blanton, an on-site configuration management consultant at Catalyst Systems Corp. (Chicago), said he sees a steady increase in the use of Java for embedded systems. One large groceries distributor has developed inventory control hardware with Java that runs on a handheld system. It interfaces with "a lot of common Java code in the back office," Blanton said.
That would not have been easy to do a few years ago, when hardware running Java was painfully slow. Back then, software for the handheld was developed in C and software for the back office in Java. The result was more testing, long coding times and higher tool expense.
Today, Blanton said, "the hardware that runs Java has really improved, and that lets customers leverage their investments in software and drive down costs."