Newsletter sign-up
View all newsletters

Sign up for our Enterprise Java Newsletter

Enterprise Java

Program Java devices -- An overview

Get up to speed on Java for small devices

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Not so many years ago, computers were huge boxes requiring tremendous quantities of air conditioning and protection. They were hidden away within special rooms located within large corporations and research centers. There weren't very many of them, and each had many users. CPU time was extremely expensive, and access and availability were often quite limited. Oh, how the world has changed!

Today, we can see three distinct but overlapping eras of computing:

  • Mainframe era: one computer, many people
  • PC era: one person, one computer
  • Ubiquitous-computing era: one person, many computers


Most of us use more computers embedded in devices and appliances than we do PCs, workstations, and mainframes combined. For instance, a quick inventory of my average workday shows that I use a laptop, a couple of servers, and a workstation. But the car I use to commute to work each day has many more CPUs than all of those traditional computers put together! When we include the computer chips in mobile phones, Palm handhelds, microwave ovens, Ethernet hubs and the communication equipment we use at work (the phone system, and so on), you can see that we're already firmly planted in the era of ubiquitous computing.

Not only are CPUs everywhere, but almost all of our interactions with CPUs involve (or very soon will involve) interactions with networks. How can you as a programmer take advantage of computers and networks embedded everywhere in heterogeneous devices and environments?

Java technology enables ubiquitous network computing

Many articles on the history of Java describe its early days as having been device-oriented. Java was originally designed for nontraditional computing devices; over time, it moved up into desktops and servers. From the beginning, Java's small bytecode size, ability to move objects around networks, and cross-platform portability were engineered to enable programming for small, mobile, heterogeneous devices. It luckily turned out that these features were also quite useful in an interconnected, Net-based world on bigger computers.

Java technology has come full circle, and programming devices with Java is once again on the rise. In this column, I will examine the various APIs, tools, and products available for Java programming for various consumer devices, such as personal digital assistants (PDAs), mobile phones, pagers, and similar embedded computers.

As these articles unfold, I hope you will gain a greater appreciation of both what Java can do for these devices and how you can take advantage of them in future projects.

Major Java device APIs and initiatives

Sun and its partners are building a number of Java device environments and APIs:

  • PersonalJava, including numerous implementations from RTOS (Realtime Operating System) vendors. It supports consumer devices with a GUI and network connection.
  • EmbeddedJava, for devices with intermittent or no network connection and often no GUI. It is highly configurable to include only those classes and VM features needed for a particular device.
  • JavaCard, including Dallas Semiconductor's iButton implementation (the ever popular Java ring being one form factor for its delivery).
  • Java 2 Platform, Micro Edition (J2ME) and the K Virtual Machine (KVM) for consumer devices are the latest additions. Early preview versions were demonstrated at JavaOne (June 1999) running on Motorola PageWriter2000x, Palm III and V hand-held devices, Bull point-of-sale (POS) terminals, and next generation mobile phones from Matsushita/Panasonic and other manufacturers targeting NTT DoCoMo's i-mode service. They will enable Jini support for small devices, as well as enable splitting up computing functionality between device and server, so that device footprint can be minimized.
  • Symbian, a partnership between Nokia, Ericsson, Motorola, and Matsushita/Panasonic, providing Java support for the EPOC32 mobile phone and wireless communicator operating system.


In addition, several other companies have independent clean-room Java for consumer and embedded device initiatives. Among these, the most talked about technologies include:

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comment
Login
Forgot your account info?
Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources
  • Bill's Media Programming articles are archived in the JavaWorld Topical Index
    http://www.javaworld.com/javaworld/topicalindex/jw-ti-media.html
  • Ubiquitous computing describes the third era of computing. Learn why the father of ubiquitous computing, Mark Weiser, calls ubiquitous computing the era of calm technology
    http://www.ubiq.com/hypertext/weiser/UbiHome.html
  • "Java device developments at the 1999 JavaOne Developer Conference," Bill Day (JavaOne Today, June 1999). More information on the device development demos and announcements from JavaOne 1999. The article contains specific information on the KVM and its demonstration on Palm handhelds, Motorola two-way pagers, and NTT DoCoMo i-mode capable mobile phones, including photos of the devices
    http://www.javaworld.com/javaone99/j1-99-j2me.html
  • Ziff-Davis's assessment of J2ME, KVM, HP's Chai, and related JavaOne consumer and embedded technology announcements
    http://www.zdnet.com/sr/stories/news/0,4538,2276349,00.html
  • The main Sun Java site provides links to more information on PersonalJava, EmbeddedJava, JavaCard, J2ME, and the KVM
    http://java.sun.com/
  • The Spotless System is a KVM predecessor, an experimental Java system for Palm Connected Organizers developed by SunLabs. The Spotless site contains some interesting technical reports and related links
    http://www.sunlabs.com/research/spotless/
  • Symbian's EPOC World developer site provides more information on EPOC Release 5's Java implementation. It includes links to the EPOC Java SDK
    http://developer.epocworld.com/
  • Sean McDermid makes the Ghost VM freely available from his University of Utah site. The Ghost Machine separates some processing functionality from the Palm-hosted client VM into a desktop-hosted server VM, akin to the model espoused as a part of the new J2ME
    http://www.cs.utah.edu/~mcdirmid/ghost/
  • Learn more about WabaVM, Wabasoft's Palm and WinCE VM environment. Site includes information on how to install and develop for WabaVM
    http://www.wabasoft.com/
  • Transvirtual Technologies makes its PersonalJava 1.1.1-compliant Kaffe JVM available on a number of CPU and OS platforms. Open source implementation available for desktop computers
    http://www.transvirtual.com/products/index.html
  • Read Salon's discussion of the consumer and embedded Java marketplace and Transvirtual's place within it
    http://www.salonmagazine.com/21st/feature/1999/01/05feature.html
  • Cygnus Solutions is developing a free software toolkit for compiling Java code into native code linked against a libgcj library. Part of the toolkit is GCJ, a Java front-end compiler that works with various GNU back-end compilers to enable Java-to-native compilation
    http://sourceware.cygnus.com/java/
  • Hewlett-Packard's embedded software site provides information on the Chai VM and its new ChaiFreezeDry bytecode compression technology
    http://www.hp.com/emso/
  • NewMonics was an early entrant to the realtime Java arena. It is helping to lead the J Consortium, a group working on realtime Java somewhat in opposition to the Sun-supported realtime experts group (which is itself working within the Java Community Process documented on Sun's Web site). Time will tell which realtime Java standard will succeed
    http://www.newmonics.com/
  • Download the complete Device and Media Programming code archive from the Resources section of Bill's Web site. Also contains links to previous columns and related materials
    http://www.billday.com/Work/index.html#Column
  • Watch for the new Device Programming FAQ for answers to your nagging questions. Not in the FAQ? E-mail Bill your questions
    http://www.billday.com/Work/devicefaq.txt