Some Internet appliance and embedded device developers have concluded that current implementations of the Java specifications are either functionally incomplete for their use, too slow, too unreliable or too big. This paper discusses alternative ways to implement Java technology to effectively address these legitimate concerns.
Sun Microsystems estimates there are more than 2.5 million developers using Java technology today. While there are many documented success stories regarding the use of Java platforms for corporate or enterprise applications, there are few public illustrations of the use of Java technology for Internet appliance and embedded device development. In order to look at the current situation more objectively, we will review "Java technology" from two perspectives: 1) specification, and 2) implementation.
As a longtime developer and provider of virtual machine technologies, Insignia Solutions believes that the current specifications for Java platforms (including Enterprise Java, PersonalJava, and EmbeddedJava) are not at fault, but rather, most current implementations, particularly for PersonalJava and EmbeddedJava, are not viable for most Internet appliance and embedded devices. (Other specifications for application specific platforms called "profiles" (e.g., Java TV and JavaPhone) have not reached industry-wide endorsement, so it's too early to comment on their suitability.)
The paper begins with an introduction to Java technology that will orient readers who are new to the subject, and possibly serve as a refresher for those already acquainted with it.
Java technology designed for the Internet
Sun Microsystems introduced the Java platform in 1995 as a new programming language and runtime environment ideally suited for Internet-related applications. Building on its long-standing corporate theme, "The Network Is The Computer," Sun recognized that more powerful microprocessors were beginning to be used in many consumer and embedded devices, which were, increasingly, connected to networks.
Network connectivity began with workstations and personal computers, quickly followed by printers, scanners, copiers, and various other types of office equipment. More recently, newer devices - such as personal digital assistants, set-top boxes, two-way pagers, smartphones, and even digital watches - have been enhanced with microprocessors and connected to networks.
Prior to Sun's introduction of the Java platform, the network was viewed primarily as a vast system for storing and serving up relatively static information, and the phrase "The Network Is the Virtual Disk Drive" was probably more fitting. Today, Java technology promises to extend the usefulness of networks by providing an efficient means for storing and distributing dynamic and extensible functionality to networked computing devices.
The Java architecture is comprised of several distinct but interrelated technologies, each of which is defined in specifications from Sun Microsystems. These technologies include the Java programming language, the Java virtual machine, and the Java API. We will briefly discuss the Java programming language and the Java API before exploring the detailed implementation alternatives for the Java virtual machine.
Together, the Java programming language and APIs define the "interfaces" between the developer and the Java virtual machine. Each Java virtual machine implementation must be able to execute Java programs, but the way in which this occurs is left to the discretion of the developer of the Java virtual machine itself.