PersonalJava FAQ

   


General Consumer Device Development Application Development

General   Return to Top  

Q.  What is the PersonalJava application environment?  

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 Return to Top  

Q.  How does the PersonalJava application environment differ from the EmbeddedJava application environment?   

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. Return to Top  

Q.  What are the main benefits of using PersonalJava technology?  

A. PersonalJava technology yields different benefits depending on your role in the creation of the consumer device: 

  • For the content provider, having the PersonalJava application environment on a large variety of end user devices such as cellular phones, set-top boxes, and mobile handheld units means that the content need only be provided in one format. The content provider can focus on his or her core competency of developing compelling content rather than using resources to repackage the content for use on a multitude of different platforms. 
  • By developing an application for the PersonalJava application environment, the independent software vendor (ISV) can benefit from a much larger device base where the software can be used. The ISV can concentrate on his or her value-add of developing compelling software rather than using resources to port the software to a variety of different platforms.
  • For the device manufacturer, implementing the PersonalJava application environment means faster time-to-market. Software development is often the gating factor for time-to-market. By utilizing PersonalJava technology in your device, the time spent developing, porting, debugging and supporting multiple proprietary code bases is eliminated. Code can now be leveraged across an entire product line of devices which may utilize different underlying CPU/RTOS combinations. As a long-term strategy, when a product line needs to be upgraded and the device manufacturer decides to switch to a faster processor or a different operating system, the PersonalJava application does not need to be changed. This has a tremendous impact on time-to-market. In addition, the Truffle Graphical Toolkit allows device manufacturers to develop customized look-and-feel designs that enhance their product identity.
Return to Top

Q.  Where do I get access to PersonalJava technology?  

A. PersonalJava technology is available in either source or binary format.

  • For those who wish to do the port themselves, the source code is available for public download under the Community Source Licensing model.
  • Binary versions of the application environment are available from Sun's partners who provide implementations on various RTOS and processors. With the Community Source Licensing model, it is expected that many others will begin offering other binary versions of this product.
Return to Top

Q.  What is the PersonalJava emulation environment? 

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. Return to Top  

Q.  How do I get more information about Java technology in general?  

A. There are a variety of books and on-line information on this subject. Some of the on-line information is as follows:


Q.What's new in the PersonalJava 3.0 application environment?  

A. Features which have been added since the release of the PersonalJava 1.1 application environment include: 

  • Support for Java Native Interface (JNI) 1.2
  • Support for Java Virtual Machine Debugging Interface (JVMDI) 1.2
  • Support for Java Virtual Machine Profiler Interface (JVMPI) 1.2
  • Truffle Graphical Toolkit which includes the . The Touchable look-and feel is a user interface design targeted for touchscreen devices. Extensive user testing has been performed to arrive at the design principles incorporated into the Touchable look-and-feel: intuitive interface for consumer-friendly applications, minimum component sizing to accomodate input by a fingertip, etc. In addition to the Touchable look-and feel, Truffle supports custom look-and-feel designs; device manufacturers can supply their own look-and-feel to enhance their product identity while leveraging the GUI technology in Truffle.

 

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. Return to Top  
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:

 


Specification
Version

1.0
1.1
1.1.1
1.1.2
1.1.3
Application
Environment
Version

1.0
1.1
3.0.1
---
3.0.2

JDK
Version

1.1.4
1.1.6
1.1.7
---
1.1.8
Return to Top

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.


Q.  Why has the PersonalJava reference implementation been released as version 3.0 and the PersonalJava specification been released as version 1.1.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. Return to Top  

Q.  How do I define an extension to the PersonalJava API? 

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. Return to Top

Q. What is Java 2 Platform, Micro Edition (J2ME)?

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.

 

J2ME Architecture

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. Return to Top

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. Return to Top

Q. Are the J2ME configurations available today?

A. To follow the progress of the definition of the J2ME configurations, please refer to the Java Community Process web site. Return to Top

Q. How does PersonalJava technology fit into the Java 2 Platform, Micro Edition (J2ME) architecture?

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

Applications written to versions 1.1.x and 1.2 of the PersonalJava API specification should be compatible to the CDC + Personal profile stack. Return to Top

Q. What is the difference between PersonalJava technology and the K virtual machine?

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.
 

Consumer Device Development  

  Return to Top  
Q.  What do I need to get started with implementing PersonalJava technology on my electronic device?   

A.

Step 1 - Choose the hardware and operating system for your target device platform.

Step 2 - If you choose one of the commercial RTOS's from a vendor who has already licensed and ported the PersonalJava platform (refer to the PersonalJava main page for a list of binary resellers), you can obtain the binary version of the port from them. If you choose to port the PersonalJava platform yourself, you may download it for free for development purposes under the Community Source Licensing model. This download will be available on a public web site in February 1999.

Step 3 - If you obtain a binary version of the PersonalJava platform, the port should be certified for compatibility by your vendor. If you port the PersonalJava platform yourself, you need to contact Sun to license the PersonalJava Compatibility Kit (PJCK). This step is important to ensure that any application conforming with the PersonalJava API specification will run on your device.

Step 4 - If you expect users to be running applets on the device, it is a good idea to include a web browser application with your device. Compact web browsers specifically designed for small form factor devices are available from Sun ( Personal Applications Browser) as well as from third-party vendors.
Return to Top
Q.  We have in-house software developers who want to develop PersonalJava applications specifically for our device. How do they get started?

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. Return to Top  

Q. I want to port the PersonalJava platform to an operating system, where can I get guidelines for doing this?   

A. A porting guide is provided through the Community Source License model. This guide covers the following topics in detail: 

  • an overview of the PersonalJava application environment
  • configuration options
  • using the build system
  • source code layout
  • porting the PersonalJava VM
  • porting the PersonalJava class libraries
  • tools
Return to Top

Q. What has Sun done to reduce the memory footprint required by the PersonalJava application environment?   

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. Return to Top  

Q. What real-time operating system (RTOS) vendors currently support PersonalJava technology?   

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. Return to Top  

Q. What is the Community Source Licensing model announced in December 1998, and how does it affect the device developer?   

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.

 

Application Development  

  Return to Top  
Q.  What do I need to get started with writing applications for the PersonalJava application environment?  

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:

Step 1 - Download the Java Development Kit (JDK) and the PersonalJava compatibility classes. Alternatively, you may use one of the these popular IDE's: Inprise's JBuilder, Metrowerks CodeWarrior, Sun's Java Workshop, and Symantec's Visual Cafe for Java.

Step 2 - Write your application on your development platform of choice (e.g. a desktop computer running Windows or Solaris) using the Java programming language. 

Step 3 - Verify that your application conforms with the PersonalJava API specification using JavaCheck. The JavaCheck tool will warn you if you are calling optional or unsupported libraries in the PersonalJava API. If you make use of optional libraries, be aware that these may not be implemented on all devices.

Step 4 - Test your application with the PersonalJava emulation environment. This can be done on your development platform and obviates the need to test the application on every device where you expect your application to be running. Your application should be able to run on all devices which are certified by the PersonalJava Compatibility Kit (PJCK). 
Return to Top

Q. Is there a tool that allows me to try out my PersonalJava application or applet without needing to purchase all the devices where I expect my software to run?   

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. Return to Top  

Q. I'm developing software for the Japanese market, does PersonalJava support internationalization?   

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. Return to Top  

Q. How do I ensure that my application conforms to the PersonalJava API specification?   

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. Return to Top  

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. Yes. Return to Top  

Q. What is the Community Source Licensing model announced in December 1998, and how does it affect the application developer?  

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. Return to Top  

Q. What is the process for ISV's to get branding for their software product?  

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.  

Left Curve
Java SDKs and Tools
Right Curve
Left Curve
Java Resources
Right Curve
JavaOne Banner
Java 8 banner (182)