- Before We Begin…
- Sun J2ME Wireless Toolkit
- Motorola J2ME SDK Components
- RIM Java SDK
- Getting Down to Business
- Conclusion
- Additional Resources
Getting Down to Business
At this point, I've discussed everything about J2ME except actual code! For the remainder of this article, I'll focus on a simple "Hello World" app that should prepare you for the development of a "real" app in Part 3 of this series. The CLDC and MID profile give you several packages to work with, including the following:
-
java.ioa subset of the J2SE package of the same name.
-
java.langa subset of the J2SE package of the same name.
-
java.utila subset of the J2SE package of the same name.
-
javax.microedition.ioincludes networking support based on the GenericConnection framework from the CLDC. Also includes the HttpConnection interface for HTTP protocol access.
-
javax.microedition.lcduia user-interface API tuned for MID devices.
-
javax.microedition.midletdefines MIDP applications and the interactions between the applications and the environment in which they run.
-
javax.microedition.rmsprovides a mechanism for midlets to persistently store data and later retrieve it.
As you can see, this set of packages includes some powerful capabilities: support for threads, exception handling, utility functions/data structures, stream I/O, GUI components, and a record store for application data storage!
The code for the "Hello World" midlet is shown in the following listing. You begin by acquiring the display context. From there, you simply add a text box (with the text "Hello World!" displayed) and an Exit button. A command listener is built in order to handle the Exit button selection event. When it's received, destroyApp() is called to shut things down. The purpose of showing this simple app is to demonstrate the lifecycle of a typical midlet. The application GUI and "internals" are set up within the startApp() method. The pauseApp() method is typically used to restart threads, retrieve updated data, or perform other time-related tasks. destroyApp() is called when the application is being shut down. Figure 5 shows the midlet being run in a Sun Java Wireless Toolkit emulator.
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloWorldMIDLet extends MIDlet implements CommandListener { private Command exitCommand; private Display display; public HelloWorldMIDLet() { display = Display.getDisplay(this); exitCommand = new Command("Exit", Command.EXIT, 1); } public void startApp() { TextBox txt = new TextBox("InformIT.com", "Hello World!", 256, 0); txt.addCommand(exitCommand); txt.setCommandListener(this); display.setCurrent(t); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } } }
The "Hello World" midlet.