No Pun Intended
by Lindsey Vereen
A
friend of my
sister's from high school called me out of the blue the other day from Wichita, Kansas, to get my sister's married name and address. She had found my home address on the Internet, a place where it is increasingly difficult to hide. Think of the time the FBI would have saved looking for the Unabomber had they thought to look for him there. The call from my sister's friend reminds me that the Internet is beginning to affect us in ways we probably never imagined. Most recently it has brought us face to face with
the Java programming language. There are nearly as many books about Java as there are about Windows 95. And I don't even want to think about the propagation of bad Java puns.
This month we're featuring Java in Embedded Systems Programming. Perhaps because of its connection with the World Wide Web, many people don't associate Java with embedded systems or know that it was originally designed for high-performance embedded systems. Interest in Java in the embedded community has commenced, a fact that came
across at the Embedded Systems Conference in Boston this past April, where Java figured both in the technical program and the exhibits. Dr. Kelvin Nilsen, a research scientist at the Center for Advanced Technology Development at Iowa State, and a proponent of Java for real-time applications, presented a paper at the Boston conference entitled "Embedded Real-time Development in the Java Language." Dr. Nilsen avers that real-time Java is applicable for such products as automotive diagnostic computers, video
games, telephone switches, personal digital assistants, air traffic control systems, medical instrumentation, in-vehicle navigation systems, voice I/O subsystems, set-top boxes, digital video conferencing and whiteboard applications, and robotics. Java programs are translated into a portable byte-code representation, and these byte codes can be downloaded and executed on any Java virtual machine (and Java virtual machines are proliferating). Moreover, the virtual machine execution model means that you don't
need a cross-compiler development system, and you don't have to maintain versions for multiple platforms. But first there are some real-time issues to work out.
As is suggested by the title of his paper, Dr. Nilsen is involved in extending Java to support real-time applications. In his paper he mentions several challenges to overcome before Java is real-time friendly. A Java byte-code application would have to run within the same real-time constraints on any processor, and yet developers would not be
able to test the software in each environment. Dr. Nilsen offers solutions to the real-time issues, but even after they are worked out, Java still won't be appropriate for everyone. As Dr. Nilsen points out, "Embedded applications written in Java are likely to require faster processors and more memory than carefully hand-crafted C implementations. For larger systems, it is less practical to dedicate large amounts of programmer effort to hand optimization. Java's benefits are most valuable for implementations
of these larger systems."
You can get more information, including the text of Dr. Nilsen's Embedded Systems Conference presentation, at http://kickapoo.catd.iastate.edu. In the meantime, for another take on Java's applicability to embedded systems, read "Java: Virtual Machine for Virtually any Platform" in this issue. Let's all meet back here at this time next year and see if anyone still cares or if the whole Java phenomenon has just evaporated.