|
|
A Java Technology overview for the Embedded Linux market
2001-07-09
If the shoe fits . . .The vast array of disparate hardware and software architectures present throughout the embedded market begs for a common language and platform with which to develop applications. It was to address this issue that Sun initially developed the Java technology platform.
Java, according to Sun's vision, would provide a unifying platform for embedded devices through a Virtual Machine (VM) which would execute Java byte codes portably and transparently. The goal was: "Write once, run anywhere" (WORA). Unfortunately, problems with Java's speed and predictability in the early days prevented it from delivering on this vision. Today, however, vast increases in microprocessor speed and execution efficiency, combined with improvements in Java technology itself, have greatly mitigated the performance issues. Additionally, in today's increasingly networked world it has become highly desirable to freely move applications from one system to another, in some cases running web-based applications on "thin" clients of varying architectures. Obviously, the ability to run a single software implementation written in Java byte codes on multiple machines, rather requiring than numerous machine specific binaries, presents a tremendous value proposition. In short: Java is ready for prime time in the world of embedded systems and smart, interconnected devices. Blame it on the web! First Iteration of Java in the embedded space Sun's first iteration of virtual machines for the embedded space included the Personal Java Virtual Machine and the Embedded Java Virtual Machine . . .
What about "very small" devices? The emergence of "very small" devices such as pagers and cell phones, with extremely limited system resources, caused a project within Sun Labs to become a Sun product team. The KVM or Kauai virtual machine (named after a tiny island in Hawaii) is a very small virtual machine that requires only 128KB of RAM. The KVM is a "clean room" implementation, which means it is not a subset/modification of another virtual machine. The KVM lacks many of the features and API's of the standard Java virtual machine, including support for AWT, the common Java API for graphics Sun also produces another very small Java implementation called the Java Card. The Java Card Virtual Machine is capable of running on "Smart Cards". The code created for the Java Card VM is compiled and linked before being downloaded to the card in the Java card file format. The Java Card now represents a large percentage of the Smart Card marketplace. Emergence of the J2ME architecture The Java 2 Micro Edition (J2ME) architecture is Sun's attempt at creating a set of configurations and profiles to fit many different vertical markets which share certain common characteristics including constrained resources. The J2ME set of configurations is part of Sun's Java 2 array of products that include (biggest to smallest): the Java 2 enterprise edition (J2EE); Java 2 standard edition (J2SE); Java 2 Micro Edition (J2ME); and Java Card. To further complicate matters, the Java 2 Micro Edition currently contains two basic configurations: the Connected Device Configuration (CDC); and the Connected Limited Device Configuration (CLDC). The CDC is the replacement for Personal Java, and the CLDC is built on the KVM. On top of each configuration, there are several profiles that contain class libraries optimized for certain vertical market segments. These profiles are being defined as part of the Java Community Process (JCP). The JCP allows companies from throughout the industry participate in defining the API specification for their particular vertical market. Further information about J2ME is available here.
A large number of embedded devices have real-time requirements. To meet those requirements, a Java specification request (JSR) was submitted as part of the Java community process (JCP). The first JSR (JSR-000001) is the real-time specification for Java (RTSJ). The real-time specification for Java enables processes to interrupt the garbage collector to ensure predictable response amongst many other improvements. TimeSys Corporation is developing the reference implementation for the real-time Java specification. Compilation Technologies To meet the performance requirements of many embedded devices, compilation technology is required. There are several different compilation methods depending on your requirements . . .
The growing use of Linux on embedded devices is part of a general trend of equipment manufacturers adopting open standards and community-developed software. The benefits of this trend are numerous, including: decreased cost per unit, a large and enthusiastic developer community, and a common platform for which to distribute value-added software applications. Linux is quickly becoming the community-accepted standard for an operating system, while Java is gaining ground as the application environment and programming language of choice. The combination of these two technologies offers a compelling software platform for embedded devices -- a much needed solution for the vast array of disparate hardware and software architectures present in the embedded market. Author's bio: David Tannenbaum graduated with a Computer Science Engineering degree from the University Of Pennsylvania. He subsequently worked for Sun MicroSystems technology licensing division, before joining TimeSys Corporation where he currently serves in the role of Director of Marketing. Related stories:
An introduction to Waba -- an open source Java-like platform Java and Embedded Linux Team Up The coming Java-Linux duopoly Device Profile: Sharp's new Linux/Java PDA A developer's perspective on PocketLinux Official reference implementation for real-time Java spec Wireless developers favor Java/J2ME over Win CE or Palm Java-based embedded software rides with Delphi Automotive Linux + Java turbocharge "Super8 Hemi" concept car
|