Java ME Tools: The State of the Union, Q2 2009

   
By Bruce Hopkins, June 2009  

This article demonstrates that Java ME developers have a wide array of choices -- in addition to the full-featured Java ME SDK (which replaces the well-known Wireless Toolkit) -- to create and test applications.

Contents
 
Sun Java ME SDK 3.0
NetBeans 6.5 IDE
MOTODEV Studio for Java ME
Nokia S60, S40, and NFC SDKs
BlackBerry JDE 4.7
Sony Ericsson SDK 2.5 for Java ME
LG SDK 1.2 for Java ME
Java ME SDK Comparison Matrix
Conclusion
 

Let's say that you've come up with an idea for a great Java ME application--in fact, the next killer Java ME application. And let's also say that your new application will use some of the cool new graphical and multimedia features in the JavaFX APIs. If so, then which SDKs that are available today support JavaFX Mobile development? If more than one SDK supports JavaFX, then what's the difference between them, if any?

Now, let's say that your idea incorporates and leverages some of the security features provided by the Security and Trust Services API (SATSA). If so, then which SDKs that are available today allow you to compile your application using those APIs? Additionally, what if you want to create a Java ME game that renders OpenGL ES scene graphs? How can you determine which Java ME SDKs provide support for OpenGL ES development? As you can imagine, the Java ME platform is huge, robust, and versatile--it allows you to create compelling 3D games, mobile streaming media players, as well as serious business applications that can connect you back to the enterprise.

Therefore, the purpose of this article is to give you a representative sample of the Java ME tools that are available, and provide a brief run-down of their features and benefits. This article concludes with a Java ME API compatibility matrix, which can serve as a handy reference tool in the months to come. So let's get started!

Sun Java ME SDK 3.0

The Sun Java ME SDK 3.0 is considered the de facto standard SDK when it comes to mobile application development. The Java ME SDK is the culmination of the very popular Java Wireless Toolkit for CLDC and the Java Toolkit for CDC. Now integrated as a single product, the Java ME SDK allows developers to create Java ME applications for the following JVM platforms:

  • CLDC/MIDP: The common JVM configuration for hundreds of millions of mobile phones
  • CDC/FP/PBP/AGUI: The JVM configuration for high-end smart phones and other devices
  • CDC/FP/PBP/BD-J: The JVM configuration for Blu-ray Disc players

The Java ME SDK is one of the few SDKs available that is device agnostic. (However, it does provide various generic device implementations so you can debug and test your application.) Starting with a device-agnostic SDK is an advantage, since it allows you to develop and debug the application before it is made device specific. To target your application to a specific Java ME implementation, add that specific implementation to the Java ME SDK using the Platform Manager. Figure 1 is a screenshot of the Java ME SDK 3.0 showing the capabilities of the default emulated JavaFX phone.

 
Figure 1 - Java ME SDK 3.0
 
 

The Java ME SDK now includes an IDE, so you can develop and test your applications within the same application environment. Be sure to note that the Java ME SDK does not support the development of JavaFX applications, but it does include two emulated JavaFX 1.1 phones (one with a touch screen and one without) to allow you to run and test your JavaFX Mobile applications. To create JavaFX Mobile applications, you need to use the NetBeans IDE, which is described later in this article. One of the major differences between the EA (early access) release and the production release of the Java ME SDK 3.0 is the process you use to configure the SDK for Blu-ray development. The production version now includes the BD-J libraries in the distribution, so developers can create and compile Blu-ray applications "out of the box." Previously, you had to go through a manual process to add the BD-J libraries (commonly referred to as bdj.jar) to the SDK. This of course means that now there are no barriers to entry for any Java developer to get started in BD-J application development.

One of the most useful features in the Java ME SDK 3.0 is the ability to perform on-device debugging for your applications. To use this feature of the SDK, you need a Windows Mobile 6 device. As you can imagine, the debugger VM gives you the ability to step through your application while it's running on a real device, which can be extremely useful when you're trying to debug an issue that won't show up in an emulator, but will show up when deployed on a real device.

NetBeans 6.5 IDE

If you need to work on the visual aspect of your mobile application, the NetBeans 6.5 IDE provides you with several viable options. First of all, if you're creating a JavaFX Mobile application, NetBeans is the premier SDK that will allow you to author, edit, compile, and test JavaFX applications. As you might already know, the basic tenet of JavaFX is to give developers the ability to create not only desktop applications, but web-based and mobile applications as well, using the same API framework. Figure 2 depicts how easy it is to change the properties of your JavaFX project to test it in a web, desktop, or mobile context.

 
Figure 2 - NetBeans 6.5 IDE Allows JavaFX Developers to Run Their Applications in Multiple Contexts
 
 

The NetBeans 6.5 IDE also includes the Mobility Visual Designer. The Mobility Visual Designer is a WYSIWYG (what you see is what you get) tool that gives developers the ability to drag-and-drop in order to create the flow and screens of their mobile application. The following is a list of displayable items that are included in the org.netbeans.microedition package, which comes included in the Mobility Visual Designer:

  • Alert
  • File Browser
  • Form
  • List
  • Login Screen
  • PIM Browser
  • SMS Composer
  • Splash Screen
  • Text Box
  • Wait Screen

The Mobility Visual Designer also has extensive support for SVG graphics, which allows you to easily create mobile applications that can render vector graphics or play SVG animations. Figure 3 is a screenshot of the Mobility Visual Designer in the NetBeans 6.5 IDE.

 
Figure 3 - NetBeans 6.5 IDE Visual Mobility Designer
 
 

MOTODEV Studio for Java ME

The MOTODEV Studio for Java ME is a Java ME SDK that gives developers several new and exciting features to author, edit, and test mobile applications. As you would expect, the MOTODEV Studio includes some features that are specific for Motorola Java ME devices, but it also includes some external services that are useful when testing any Java ME application, for instance:

  • Bluetooth Service
  • Landmark Storage
  • Location Service
  • Remote Control (Bluetooth)
  • SIM Configuration
  • SIP Proxy
  • WMA Server

The external services provided by the MOTODEV Studio for Java ME allow you to simulate realistic external events without necessitating the deployment of your application to a real mobile device. For instance, the Bluetooth Service incorporates the Rococo Bluetooth simulator, which allows you to create simulated Bluetooth devices within the environment of the MOTODEV Studio. Figure 4 is a screenshot of the Bluetooth Service in action.

 
Figure 4 - Bluetooth Simulator Service in the MOTODEV Studio for Java ME
 
 

Now if you're targeting your application for any specific Motorola handset or mobile device, the MOTODEV Studio provides some very useful features, such as complete device profiles for all handsets as well as a device capability matrix to indicate which capabilities each device supports. (IDEN devices are not supported.) The MOTODEV Studio also allows you to perform on-device debugging to real Motorola handsets if you have a supported handset and a USB cable.

Nokia S60, S40, and NFC SDKs

For Java ME developers, Nokia provides three SDKs to enable the development of the next-generation mobile and wireless applications. The S60 SDK includes tools such as an SVG to SVG-Tiny converter, which is very useful if you plan to use the JSR 226 API in your mobile application to display vector graphics. Just like some of the tools mentioned previously, the S60 SDK provides a framework for on-device debugging, but the S60 SDK provides an additional capability that the others don't provide: redirected System.out and System.err statements. For traditional Java SE or Java EE applications, you get the luxury of looking at your System.out and System.err statements to get an idea of what's going on in your application without having to use a debugger. Therefore, having the ability to view your System.out and System.err statements from a mobile handset is a very useful feature. The S40 SDK includes the Nokia Connectivity Framework, which is a handy tool that allows you to simulate both Bluetooth and SMS messages sent to your emulated application.

If you're looking to get started with wireless smart card development, you're going to get excited about tools provided in the S40 Nokia 6212 NFC SDK. The S40 Nokia 6212 NFC SDK not only supports the JSR 257 API, but also allows you to simulate the presence and absence of virtual smart cards. The SDK also supports OMNIKEY and PEGODA smart card readers that are connected to your desktop computer. This enables you to quickly prototype your application and test it with real NFC smart cards. Figure 5 is a screenshot of the S40 Nokia 6212 NFC SDK.

 
Figure 5 - S40 Nokia 6212 NFC SDK
 
 

BlackBerry JDE 4.7

The BlackBerry JDE 4.7 provides a comprehensive environment to develop and test mobile applications that run on BlackBerry handsets. To aid developers with their individual projects, the BlackBerry JDE 4.7 includes more than 50 example projects that use and leverage the implemented Java ME JSR APIs and the additional BlackBerry APIs. The additional BlackBerry APIs are a powerful feature-set that allow the developer to perform a host of tasks, such as manipulating the built-in web browser, data compression, controlling the video recorder, and advanced data encryption. The JDE 4.7 comes bundled with a simulator for the BlackBerry 9500/9530 devices, which was one of the first Java-enabled devices to incorporate touch input, so the included simulator is capable of reacting to the following events:

  • The presence of a USB connection
  • The presence of a headset
  • The presence of a holster
  • Touch input from the user
  • Changes in orientation (tilting the device)
  • Battery levels
  • The insertion or removal of an SD card
  • Incoming voice calls
  • Changes in GPS location
  • Usage of the camera

Figure 6 shows a screenshot of the BlackBerry JDE 4.7.

 
Figure 6 - BlackBerry JDE 4.7
 
 

Sony Ericsson SDK 2.5 for Java ME

If you want to focus on full-featured JSR implementations, you should take the time to play with the Sony Ericsson SDK 2.5 for Java ME. This is especially the case if you need a Java ME implementation that supports all of the JSR 177 Security and Trust Services API (SATSA) optional packages:

  • SATSA APDU: For basic communication with Java Card applets on the SIM card
  • SATSA Crypto: For encryption
  • SATSA PKI: For digital signatures
  • SATSA JCRMI: For RMI communication with Java Card applets on the SIM card

The Sony Ericsson SDK 2.5 for Java ME also provides extensive support for 3D graphics and animation with its support for JSR 184 (Mobile 3D Graphics), JSR 239 (Java Binding for OpenGL ES), and Mascot Capsule API. Additionally, if you are looking for ways to capitalize on your intellectual property, the Sony Ericsson SDK 2.5 for Java ME is one of the few SDKs that support JSR 229 Java Payment API. Figure 7 depicts the Sony Ericsson SDK 2.5 when integrated into the NetBeans 6.5 IDE.

 
Figure 7 - Sony Ericsson SDK 2.5 for Java ME
 
 

LG SDK 1.2 for Java ME

The LG SDK 1.2 for Java ME is definitely the "new kid on the block" when it comes to Java ME SDKs. (The first version was released in late 2008.) However, this SDK does not lack in features or Java ME JSR API support. In fact, if you have any digital content (such as images, audio, or video) that you want to protect and to securely distribute to your users and customers, then you really should consider using LG SDK 1.2 for Java ME, because it's the only Java ME SDK that provides an implementation for the JSR 300, the DRM API. The LG SDK 1.2 for Java ME is based on the older Wireless Toolkit, so it provides the ability to compile, build, and test Java ME applications. It doesn't include an IDE, so you can't use it create or edit your code. However, like most of the SDKs presented in this article, it does provide a Java Platform that's compatible with the NetBeans IDE, so you can plug this SDK into NetBeans to gain all the benefits of an IDE, such as editing and debugging your code.

Like some of the other SDKs presented in this article, the LG SDK 1.2 allows you to simulate external events such as these to your emulated application:

  • Changes in the file system
  • Changes in your location
  • Payment transactions
  • Changes in the state of contactless devices

The LG SDK 1.2 also features a handy SVG viewer and player so that you can test your SVG graphics before embedding them into your application. Figure 8 shows a screenshot of an example application running in the LG SDK 1.2 for Java ME.

 
Figure 8 - LG SDK 1.2 for Java ME
 
 

Java ME SDK Comparison Matrix

Table 1 shows a list of all the Java ME SDKs and tools that are evaluated in this article, with an entry for API support for each one. Note that the NetBeans IDE supports multiple Java configurations, so its entries in this matrix apply to when it is configured with the Java ME SDK 3.0.

Table 1. Java ME API Comparison Matrix
JSR API Support
Java ME
SDK 3.0
NetBeans
IDE 6.5
MOTODEV Studio
for Java ME
Nokia S60 5th
Edition SDK
Nokia S40 6th
Edition SDK
Nokia S40 6212
NFC SDK
BlackBerry
JDE 4.7
Sony Ericsson
SDK 2.5
LG SDK 1.2
for Java ME
JSR 66 RMI
-
-
-
-
-
-
-
-
-
JSR 75 PDA
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 82 Bluetooth
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 118 MIDP 2.1
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 135 Mobile Media 1.2
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 139 CLDC 1.1
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 169 JDBC
-
-
-
-
-
-
-
-
-
JSR 172 Web Services
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 177 Security and Trust Services
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 179 Location
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 180 SIP
YES
YES
YES
-
-
-
-
YES
YES
JSR 184 Mobile 3D Graphics
YES
YES
YES
YES
YES
YES
-
YES
YES
JSR 185 JTWI 1.0
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 195 Information Module
-
-
-
-
-
-
-
-
-
JSR 205 Wireless Messaging 2.0
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 209 AGUI
YES
YES
-
-
-
-
-
-
-
JSR 211 Content Handler
YES
YES
YES
-
YES
YES
YES
YES
YES
JSR 217 Personal Basis Profile 1.1
YES
YES
-
-
-
-
-
-
-
JSR 218 CDC 1.1
YES
YES
-
-
-
-
-
-
-
JSR 219 Foundation Profile 1.1
YES
YES
-
-
-
-
-
-
-
JSR 226 Scalable 2D Vector Graphics
YES
YES
YES
YES
YES
YES
YES
YES
YES
JSR 229 Payment
YES
YES
-
-
-
-
-
YES
YES
JSR 234 Advanced Multimedia Supplements
YES
YES
YES
YES
YES
YES
-
YES
YES
JSR 238 Mobile Internationalization
YES
YES
YES
-
-
-
-
YES
YES
JSR 239 Java Binding for OpenGL ES
YES
YES
YES
-
-
-
-
YES
YES
JSR 248 MSA 1.0
YES
YES
YES
-
YES
YES
-
YES
YES
JSR 256 Mobile Sensor
YES
YES
-
-
-
-
-
YES
YES
JSR 257 Contactless Communication
-
-
-
-
-
YES
-
-
YES
JSR 271 MIDP 3
-
-
-
-
-
-
-
-
-
JSR 280 XML
YES
YES
-
-
-
-
-
-
-
JSR 300 DRM
-
-
-
-
-
-
-
-
YES
Other Java API Support
BD-J
YES
YES
-
-
-
-
-
-
-
JavaFX 1.1
YES
YES
-
-
-
-
-
-
-
LWUIT
YES
YES
-
-
-
-
-
-
-
Security (JAAS)
YES
YES
-
-
-
-
-
-
-
Security (JCE)
YES
YES
-
-
-
-
-
-
-
Security (JSSE)
YES
YES
-
-
-
-
-
-
-
NetBeans Mobile Components
-
YES
-
-
-
-
-
-
-
G24 MOTO2MOTO
-
-
YES
-
-
-
-
-
-
Motorola APIs
-
-
YES
-
-
-
-
-
-
Nokia UI API
-
-
-
YES
YES
YES
-
YES
-
eSWT API
-
-
-
YES
-
-
-
-
-
IAP Info
-
-
-
YES
-
-
-
-
-
BlackBerry API
-
-
-
-
-
-
YES
-
-
Mascot Capsule API
-
-
-
-
-
-
-
YES
-
 

Conclusion

Whew! As you can see, Java ME is a full-featured platform, with a device-agnostic SDK, that enables developers to control nearly every aspect of a mobile device. As a result of this article, you should have a basic understanding of some of the many Java ME toola that are available as of Q2 2009. You should also refer to the API matrix in the coming months when you need to decide about a mobile platform based upon its API support. Did you notice that none of the Java ME tools support the MIDP 3.0 API? Rest assured, this will change very soon, and you can expect MIDP 3.0 support when this article is updated.

Rate This Article
 
 
Discussion

We welcome your participation in our community. Please keep your comments civil and on point. You can optionally provide your email address to be notified of replies—your information is not used for any other purpose. By submitting a comment, you agree to these Terms of Use.