J2SE Versus PersonalJava Versus J2ME
The venerable Java 2 Standard Edition (J2SE) is probably most familiar to software developers. It's the version of Java most commonly deployed on client workstations and includes a number of powerful software technologies (Swing, RMI, JNDI, CORBA/IIOP, JDBC, Security, and JavaBeans) and features (reflection, serialization, and the HotSpot Virtual Machine). While J2SE is an incredibly useful collection of tools and APIs, a typical Java runtime environment (JRE) weighs in at over 50MB, making it unsuitable for mobile devices such as PDAs. Likewise, Java 2 Micro Edition (J2ME) is a highly publicized platform currently being deployed in "micro" devices such as mobile phones and two-way paging devices. The J2ME Mobile Information Device Profile (MIDP), however, offers a very limited runtime environment for those with industrial-strength application needs, with no support for AWT, JDBC, JNI, or RMI.
Enter PersonalJava (or PJava, as it's often called), an application environment defined by Sun Microsystems to meet the needs of relatively underpowered information appliances such as set-top boxes and personal digital assistants. To date, PersonalJava has been somewhat less publicized than J2SE and other Java technologies, but all that may soon changea number of vendors are releasing PersonalJava implementations for a number of mobile computing platforms. PersonalJava is composed of a subset of the J2SE platform, supplying developers with the most commonly used components of J2SE and leaving out a few features that are not "must-haves" on non-desktop platforms. PersonalJava supports the complete Java programming language; the latest version of the specification (1.1.3) is based on the Java 1.1.7 JDK with some Java 2 extensions thrown in. Included with PersonalJava are popular technologies such as Java applets, the AWT, JNI, RMI, JavaBeans, JDBC, and Java security. For developers interested in building forms-based database apps on a number of platforms while retaining some of Java's advanced capabilities, PersonalJava represents a more-than-capable option.
PersonalJava is not to be confusedyetwith Java 2 Micro Edition. Currently, PersonalJava is defined as a standalone technology that predates J2ME. Given the overlap between these two technologies' target audience, however, it's clear that PersonalJava will eventually be folded in with J2ME. In fact, Sun's PersonalJava FAQ states this: "PersonalJava technology will be transitioned into the sum of the Connected Device Configuration (CDC) and the Personal profile. Applications written to versions 1.1.x and 1.2 of the PersonalJava API specification should be compatible to the CDC + Personal profile stack." For more information on the Connected Device Configuration (CDC), visit http://www.sun.com/software/communitysource/j2me/cdc/.
While the PersonalJava specification has been around for over three years, implementations for PDA platforms are just now beginning to hit the market in large numbers. I'll take a look at three options from different companies: Kada Systems, Insignia, and SavaJe.