A. The PersonalJava application environment is a Java platform for building network-connectable applications for consumer devices for home, office and mobile use. It is comprised of the Java Virtual Machine (VM)* and an optimized version of the Java class library. In addition, the PersonalJava API includes specific features required by consumer applications in resource-limited environments. For an overview of the PersonalJava application environment, click here.
A. The PersonalJava application environment is designed for Web-connected consumer devices that are often executing applets from a network. To enable this "general purpose" functionality, a core required set of APIs or libraries must be present on every PersonalJava-enabled device. The EmbeddedJava application environment is targeted at dedicated-function embedded devices which may be network-connected or standalone. These dedicated-function devices will be performing a defined set of software tasks which are well-known at product conception. Only the class libraries that are needed to support this set of software tasks are included on the device. Because of this, every EmbeddedJava implementation may be different since there is no concept of a core required set of API's. The advantage of this is that the EmbeddedJava implementation often occupies a smaller memory footprint than the PersonalJava application environment.
A. PersonalJava technology yields different benefits depending on your role in the creation of the consumer device:
A. PersonalJava technology is available in either source or binary format.
A. The PersonalJava emulation environment is an application developer tool which is released along with each revision of the PersonalJava application environment. For more information, see the related question in the Applications Development section of this FAQ.
A. There are a variety of books and on-line information on this subject. Some of the on-line information is as follows:
A. Features which have been added since the release of the PersonalJava 1.1 application environment include:
Example e-mail application interface using the Touchable look-and-feel
Note that the PersonalJava 3.0 application environment is based on the PersonalJava 1.1.1 specification. The PersonalJava 1.1 application environment is based on the PersonalJava 1.1 specification.
Q. Did Sun skip from version 1.1 of the PersonalJava application environment to version 3.0?
A. Yes. Version 3.0 of the PersonalJava application environment directly follows version 1.1. There are no versions named "2.x". The reason we made this jump in the numbering system is to avoid confusion with the JDK numbering system. All current versions of the PersonalJava application environment are based on JDK 1.1.x. In the future, Sun will be examining one-by-one the JDK 1.2 features for possible inclusion into the PersonalJava platform. Only those features suitable for the majority of consumer devices will be incorporated. The following chart may help clarify the numbering scheme:
Note that all dot-dot versions of the specification are minor updates that clarify and remove errors in previous versions. Thus, the version 1.1.3 specification obsoletes version 1.1.2. Similarly, the version 3.0.2 reference implementation obsoletes version 3.0.1.
A. The PersonalJava reference implementation is a software release that contains source code and a development environment. It is an implementation of the PersonalJava specification. A future release of the reference implementation could include many optimizations and bug fixes while the specification itself remains unchanged.
A. Extensions to the any Java platform can be defined by either a Sun or non-Sun entity. The process for doing so is described in the Java Community Process document.
A. Java 2 Platform, Micro Edition (J2ME) is the edition of the Java platform which addresses the needs of the consumer and embedded device space.
Referring to the above figure, the J2ME architecture is composed of configurations and profiles. A configuration is composed of a minimal layer of core libraries designed to provide just enough functionality to safely and securely download Java classes to a device and configure the Java environment. The rest of the functionality needed to provide a complete runtime environment for a particular kind of device is provided within the context of an industry defined profile.
There are two configurations. The first configuration, the Connected Device Configuration (CDC), uses the classic Java virtual machine. This virtual machine is a full-featured virtual machine with the same functionality you would find in the virtual machine residing on your desktop system. The second configuration, the Connected Limited Device Configuration (CLDC), uses the K Virtual Machine, a small footprint virtual machine for severely memory constrained environments. The CLDC is targeted for Java environments of 128-512KB, and the CDC is targeted for Java environments of greater than 512KB.
Profiles are targeted for a specific device type. Examples of possible profiles are shown in the above figure. Profiles are defined through the Java Community Process by a group of industry experts who are tasked with the job of creating a standard Java API for their particular area. Note that the definition of a profile would specify one of the configurations. Also, a profile can embed another profile within its definition.
A. To follow the progress of the definition of the J2ME configurations, please refer to the Java Community Process web site.
A. PersonalJava technology will be transitioned into the sum of the Connected Device Configuration (CDC) and the Personal profile.
PersonalJava application environment within the context of the J2ME architecture
A. PersonalJava technology consists of a virtual machine plus a set of class libraries. The K virtual machine is a virtual machine only. It is a base upon which sets of vertically targeted API's, or "profiles", will run. Click here for more information.
A. Building a device-resident application is like building any PersonalJava application. Refer to the list of steps in the Application Development section of this FAQ. After the application is developed, use the JavaCodeCompact tool (available with the Community Source download) in conjunction with a cross-compiler to generate the ROM code suitable for your target device platform. Note that application prototyping can begin in advance of RTOS and hardware selection due to the platform-independent nature of the Java programming language.
A. A porting guide is provided through the Community Source License model. This guide covers the following topics in detail:
A. A Technical Note which describes this in detail for the PersonalJava 1.1 application environment is available. For future versions of the PersonalJava application environment, Sun is continuing to make improvements in order to support customer needs as the industry evolves.
A. Current resellers of the PersonalJava application environment are listed on the PersonalJava main page. With the Community Source Licensing model, it is expected that many others will begin offering other binary versions of this product.
A. Under the Community Source Licensing model, the source code will be freely available for development purposes. This is expected to happen in February 1999. Read more about Community Source Licensing:
As a device developer, it is expected that you will have many more choices on where to obtain the PersonalJava application environment. You can obtain a binary version from the RTOS vendors who have been working with PersonalJava since the beginning, you can download the source code from Sun's Community Web Server in February 1999, or you can obtain it from one of the other resellers who are expected to take advantage of the Community Source to offer yet other binary versions.
A. Writing applications or applets can be done independent of hardware and RTOS selection due to the platform-independent nature of the Java programming language:
A. Yes. A run-time environment called the PersonalJava emulation environment is available with each revision of the PersonalJava application environment. The PersonalJava emulation environment is a free software environment which is available on both Solaris and Win32 platforms. Using the PersonalJava emulation environment eliminates the need to try out your software on each and every device where you expect your software to run. This eliminates a lot of the expense of software development. There are four versions of the PersonalJava emulation environment available depending on which look-and-feel you wish to emulation. All four of these versions support applets and applications written for either version 1.1 or version 3.0 of the PersonalJava application environment.
A. Yes. The PersonalJava 1.1 and 3.0 API's include internationalization (i18n) support. Internationalization is the process of enabling a program to run internationally without recompilation. The PersonalJava platform supports the internationalization features of JDK 1.1.x. Once an application is internationalized, enabling it to run in a particular country is a matter of creating a "locale" bundle for that country and language. The PersonalJava platform supports the i18n features of JDK 1.1. However, to conserve RAM usage, PersonalJava implementations can be configured to support just the desired set of locales. The Truffle Graphical Toolkit which is part of the PersonalJava 3.0 application environment supports input methods for Asian language text entry.
A. JavaCheck is a developer tool that checks whether or not an application or applet conforms to the PersonalJava API specification and will therefore run on the PersonalJava platform. JavaCheck is available for free from Sun's web site. It may also be bundled with the third party IDE that you are using.
Q. Is backward compatibility of applications preserved with new revisions of the PersonalJava platform, e.g., are PersonalJava 1.0 and 1.1 applications compatible in the PersonalJava 3.0 application environment?
A. As an application developer, you will be indirectly benefited by the Community Source License model (see related question in the Consumer Device Development section). It is expected that more devices will be built with the PersonalJava application environment thereby increasing the number of devices where your software can run. Also, through the Community Source License model, you can download the source code to help give you more visibility into the PersonalJava class libraries.
A. ISV's should send inquiries about branding to here.
*As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.