In recent months, converging market and technical developments have made building Java-based embedded and small footprint iAppliance control devices not only more practical, but a necessity. This week's In Focus takes a look at Java's progress in this area as reflected in changes and improvements in the language itself, the framework and the hardware that is allowing programmers to work in any multiple language or Java-based Web environment.
The first change is the emergence of Web Services frameworks for the delivery of services from the enterprise to a variety of clients. One of the prime delivery platforms that enterprises are targeting are wireless iAppliances such as web-enabled PDAs and Internet-connected and relatively high bandwidth 3G-enabled cell-phones with options for Web and multimedia content delivery. Many analysts conservatively estimate 100 million wireless devices will ship in the next two to three years.
According to In Focus contributor, Eva Skoglund, product manager, OSE Systems, Inc. (San Jose, Calif.), 3G handsets, while not embedded as it is traditionally defined, will need many of the same real-time requirements and deterministic requirements all the more complicated by the need for ever changing application functionality. She notes in her article that new specifications, will serve as the basic software building blocks for these devices. And while using them to develop, integrate and deploy applications on a resource constrained handset is a “simple matter of programming,” she points out,with a little bit of irony, to get there faster isn't: “It requires the right platform, and the right tools.”
The major framework for such services uses a combination of Java server and client software in combination with the extensible markup language (XML) as the delivery mechanism. This will place a greater load, on the underlying processors to accelerate Java while at the same time providing sufficient support for alternative stack-oriented languages such as C-sharp from Microsoft and earlier compiled register-oriented languages such as C and C++, said Ashish Sethi, product manager, ARC International (Cambridge, U.K.), who collaborated with Matt Kubiczek, CTO, Digital Communications Technologies, Ltd., on a piece that discusses how to get high performance Java execution by using a custom processor.
And, according to John Canosa, chief scientist, Questra Corp., (Rochester, NY), any organization that wants to stay abreast of developments in the embedded systems world should keep at least one eye on what is happening in Web Services. “It is unusual to see the likes of Microsoft, Sun, IBM, Oracle, HP and others agree on anything, but they all agree that Web Services will be the native language of business applications,” he said. And while most of these organizations speak of Web Services in the context of Business-to-Business (B2B) and Business-to-Consumer (B2C) information exchange and e-commerce, said Canosa, they are just as powerful for connecting embedded and small footprint iAppliances and other distributed intelligent assets into the business enterprise.
From the enterprise to the device, he said, developers can use such a mechanism to provide valuable services such as automatically generating service requests, performing remote diagnostics and automatic consumables reordering.
On the other side, the devices themselves can be providers of Web services. “In a Web Services world, the technician could use the PDA to remotely invoke the diagnostic routines; in essence the PDA is the client to the Web Servers offered up by the device,” said Canosa. “The technician can perform the diagnosis remotely and arrive at the customer site with the proper replacement parts in hand. And, other functions like firmware upgrades and remote control could be provided using the Web Services standards.
Meanwhile, the availability of Web-wide, platform independent Integrated Development Environments is also pulling for Java in small footprint iAppliances. They will be useful for doing not only Java development, but also designs which require a mix of new languages in addition to XML and Java, such as C-sharp, C and C++. In addition to a number of different Web services frameworks, companies such as Wind River and Microsoft are now pushing more Web-capable proprietary IDEs. But the momentum may be with a new breed of open source IDEs, such as Eclipse.org, promoted by IBM and a number of Linux and RTOS vendors and NetBeans, an open source initiative supported by Sun.
Contributor, Tim Boudreau, senior project manager, NetBeans Open Source Project, at Sun Microsystems, Inc. (Czech Republic), provides us with more specifics of NetBeans. He notes that while the two tool environments have several similarities, there are fundamental differences which require careful evaluation on the part of developers.
According to Boudreau, both are based on a generic application runtime and application-level functionality is implemented through plug-in modules. Also, both use runtime executables to discover the set of available plug-ins at startup, read their manifest files, and build an in-memory plug-in registry as well as a wide array of languages such as Java, C, C++, XML, and HTML, DynamicJava, BeanShell, WebL and JPython.
But he emphasizes that developers need to take care as to the differences. NetBeans, for example, uses the standard Java user interface specification, called Swing, and the standard Java graphics library, called AWT (Abstract Windowing Toolkit), whereas Eclipse uses a proprietary user interface toolkit called SWT with its own graphics library, Widget set, and platform-specific components. “Unlike Eclipse, NetBeans language support is based on OMG's Model Driven Architecture,” he said, so support for new languages can be built with minimal coding, by providing a metamodel for the language, parser, and generator software components.”
And where NetBeans is based on the JavaBeans standard, Eclipse eschews standard Java technologies for its own when performing certain functions, he said, such as event notification. Reflecting its 17 month headstart, NetBeans runs on Windows, Linux, Solaris Operating Environment, Mac OS X, OS/2, OpenVMS, FreeBSD and any other OS with a J2SE 1.3 (or greater) implementation, whereas the first version of Eclipse works on Windows and Linux.
Another impetus that is driving Java toward the center stage are improvements in the language and its Virtual Machine, reducing its footprint and making profiles available that are more deterministic and real-time without sacrificing its ubiquitous: write once, run everywhere promise.
In his article, Michael Mathews, senior product marketing manager, MontaVista Software Inc., (Sunnyvale, Calif.), discusses the synergy between Linux and Java. He notes that it has been the very demands that the world of embedded makes on Java that have resulted in major changes in the specification, which have, in turn, accelerated adoption of the language, particularly in its Java 2, Micro Edition (J2ME), form.
“Java was initially introduced as the language panacea for small devices of all types,” he said. “The Java 1 specifications evolved to cover several different configurations known as editions. The standard edition and the enterprise edition have continued to evolve in a straight line from Java 1 to Java 2. The original Personal edition became known as Personal Java (pJava), and while usable on OS platforms such as Windows CE, it could not be used for platforms with more constraints, such as the Palm OS,” he added.
The J2ME specifications were created to address this issue and others generated by the rapidly changing world of embedded devices.
Perhaps most critical factor in increasing Java's viability in small footprints are the new breed of 32-bit Java-capable CPU architectures coming out. They are flexible enough to handle not only the deterministic response requirements of embedded designs, but deal with the memory and compute intensive requirements when used to process Web services negotiations.
According to Mathews, as Java becomes more tightly integrated with the devices in a system, the natural extension will be to implement parts of it in hardware. “This has been attempted several times in the past few years, with initial attempts gaining little success,” he said, “but as lessons are learned from this work we will see more areas where silicon-Java not only makes more sense, but also works better than soft-Java.”