Most implementations of Java technologyhave been too slow, too big, or too unreliable for use in Internetappliances and embedded devices. Insignia Solutions' Jeode platformimproves Java functionality for these resource-constrained devices,allowing you to create and deploy Java-basedapplications.
The Jeode platform offers the following tools:
- A full-featured implementation of the PersonalJava andEmbeddedJava specifications that passed the PersonalJava andEmbeddedJava compatibility test suites to become a “Sun-AuthorizedVirtual Machine”
- Accelerated performance, robustness, and efficient memoryutilization
- Configurability and tunability to meet the needs of Internetappliance and embedded device developers
- A turn-key solution ported and tested on a variety ofprocessors
- Support, training, consulting, customization, and developmenttools.
The Jeode platform is integrated with a suite of tuning andprogramming tools to help you write and implement Java programs.The suite includes the Jeode Embedded Virtual Machine (EVM) and thelatest PersonalJava (including AWT) or EmbeddedJava classlibraries. It offers tools for editing, compiling, and browsingJava applications as well as runtime debug utilities, a sourcelevel debugger, configurator, monitor, and a memory-useanalyzer.
Figure 1: Java development tool function path. Java istranslated to native code using one of two resources (either acompiler or an interpreter), depending on if the code path is usedfrequently or rarely, in order to conserve the deviceresources.
The platform allows you to use the tools of your choice to edit,compile, browse, and debug Java application through the hostcomputer. Special integration exists between the Jeode platform andMetrowerks' CodeWarrior Integrated Development Environment (IDE). ACodeWarrior plug-in is provided as part of the Jeode installation,offering EVM-specific functionality. Standard interfaces, such asJVMDI/JDWP, are also supported.
The EVM is a full-featured Java-compatible virtual machine andsupports embedded class libraries that are compatible with 1.1.1PersonalJava and 1.0.3 EmbeddedJava specifications (roughlyequivalent to 1.1.7b JDK).
Most implementations of the Java platform are interpreted andtherefore are too slow for many Internet appliances and embeddeddevices. Just-in-time (JIT) compilation technology is suitable forthe desktop environment but is inappropriate for Internet applianceand embedded classes of devices. Typical JIT implementationsrequire large amounts of memory, disk storage, and virtual memoryfor paging segments of dynamically compiled code. JIT compilers canalso cause unpredictable delays during compilation and consume anunbounded amount of physical and virtual memory.
Figure 2: Unlike JIT compilation technology, adaptivedynamic compiling conserves memory and time, which are importantfactors for Internet appliances and embedded devices.
In comparison, EVM's adaptive dynamic compilation technologyrequires less memory, requires no disk storage for virtual memory,and only compiles the code that represents the current performancebottlenecks in the application or that accelerates critical aspectsof an application's code. The remainder of the application coderuns interpreted.
As the application runs, the EVM determines which code segmentsexecute most frequently and compiles and stores them into theconfigured amount of code buffer memory. Once the allotted codebuffers are used, the EVM may recycle the buffers to optimizeperformance in the given footprint.
Benchmarks conducted by Insignia customers, partners, andindependent third parties running the industry-standard EmbeddedCaffeineMark 3.0 confirmed that the Jeode EVM executes Javaapplications on average six to ten times faster than interpretiveVMs.
The behavior of an Internet appliance or embedded deviceapplication needs to be reliable, consistent, and robust.Unscheduled pauses in the application's execution are unacceptablein most environments, and reliability is largely determined by the”garbage collection” strategy used to manage memory.
Figure 3: Compared to batch and incremental garbagecollection, the concurrent garbage collection used by EVM schedulesand reduces the length of pauses and also conserves memory.
The Jeode EVM implements precise, fully concurrent garbagecollection technology with memory compaction to eliminate memoryfragmentation. This approach frees up all unreferenced objects andavoids memory leaks. The garbage collector runs as a pre-emptiblethread, and its priority can be set by the application. Because itis implemented as a fully concurrent thread, this process addsminimal overhead to the context switch time when switching to ahigher priority application thread.
The dynamic adaptive compiler also operates as a thread and ispre-empted by any higher priority threads in the system. Inaddition, the amount of memory used by the EVM can be bounded, andthe usage of memory may adapt dynamically depending on the currentneeds of the application.
To enhance robustness, each of the EVM components handlesfailures to acquire more memory. If a memory request fails, forexample, the EVM may generate an exception that can beappropriately managed rather than causing the system to crash.
Finally, each Java thread is mapped to an underlying thread inthe real-time operating system (RTOS), providing improvedintegration with native threads and tighter synergy with the RTOSscheduler.
The platform's tools reduce the memory needed by the virtualmachine to run a Java application and also manage memory tomaximize performance within the constraints of the availableresources. The Jeode configurator assists in specifying theparameters for a specific implementation of the EVM. Size can beconfigured for functionality and performance trade-offs for eachspecific application.
The actual ROM size required for the EVM can vary anywhere fromapproximately 360 KB to 4.0 MB for all class libraries with Englishlanguage support to approximately 5.0 MB for all class librarieswith full international language support.
The Jeode EVM can be configured and tuned to aid in thedefinition of a specific implementation for a particular Internetappliance or embedded device. For example, you can specify themaximum system memory, maximum heap size, maximum stack size, andseveral parameters associated with dynamic compilation.
Figure 4: Configuration options allow you to setparameters such as maximum heap size, system memory, and stack sizeusing the Jeode configurator.
It can be highly instrumented to provide diagnostic anddebugging insights into the EVM itself. The application's behaviorcan be observed as it executes relative to parameters that areselected to configure and tune the EVM and dynamic compiler. Forexample, you can view the amount of heap that was used duringexecution and watch the change in heap size as the garbagecollector runs to bound the amount of heap that is actuallyconsumed.
The platform currently supports a variety of operating systemsand target processors, including Windows CE, Pocket PC, Linux,VxWorks, Windows NT, Windows NT Embedded, and ITRON operatingsystems as well as x86, MIPS, ARM, Hitachi SH, and PowerPCprocessors. Custom porting services or source code licensing isavailable to expedite porting to platforms required bycustomers.
It also has been integrated as a plug-in for the InternetExplorer browser for Windows CE, PocketPC, and Windows NT Embedded.The plug-in enables the browser to load and run Java applets.
The Jeode platform provides Java functionality for devices suchas the Compaq iPAQ Home Internet Appliance and Fujitsu PC PenCentra200 pen tablet computer.