Developing Mobile Applications for Nokia Series 40 using Java and MIDP

This online 10 hour online course delivered over three weeks that introduces Java programmers to the Java Micro Edition, or JavaME, and develops skills in Java programming for mobile devices via the Mobile Information Device Profile, or MIDP. (The MIDP is the “profile” defined within the J2ME for small mobile devices such as cellphones and PDAs.) The course begins with a top-down tour of the JavaME architecture, focusing on mobile programming via the Connected, Limited Device Configuration, or CLDC, and the MIDP. Students learn the simple Core API of the CLDC – primarily by contrast to the Java Standard Edition (Java SE) Core API – and then move into the individual packages of the MIDP.

Course starts with an introduction to the development environment; Eclipse Mobile Tools for Java MTJ, and the Nokia SDK for Java.

MIDP study begins with three lessons on different aspects of user-interface design, which in MIDP is dramatically different from standard Java. Students learn the User Interface frameworks, and how to use commands and events. Students then study the MIDP Record Management System for limited persistent storage on the device, and then work on mobile networking.

The next module of the course moves beyond basic knowledge of the API to develop effective coding techniques. Students study multithreading, both using the basic Thread/Runnable model and the CLDC’s Timer and TimerTask classes. The bulk of this module is an in-depth treatment of memory management – which is crucial to effective programming on tiny devices – including techniques for controlling object creation and reuse, string manipulation, and array-based memory management. A whole section discusses good MIDP programming practices, and the module concludes with a discussion of MIDP in the larger context of networked applications, and particularly with respect to Java EE.

The final module covers Nokia Store and teaches you how to publish and sell your mobile applications.

This course focuses on the application of concepts through substantial hands-on exercises: instructor-led demonstrations and individually-performed labs. A moderately complex MIDP application – a “MIDlet” – is developed over the course as a case study in all the course topics and skills.


  • Understand the Java Micro Edition architecture, and the stacking of virtual machine, configuration, and profile to address different types of “micro” devices.
  • Understand the limitations of mobile devices and see how they drive the design of the Connected, Limited Device Configuration, and the supporting “K” Virtual Machine.
  • Identify the key differences between the JVM and the KVM, including build process and code security implementations.
  • Understand the design and mission of the Mobile Information Device Profile, and see how programming for mobile devices is fundamentally different from Java SE programming.
  • Code cleanly to the CLDC using the KVM.
  • Build a functioning MIDlet.
  • Understand the framework for packaging and deploying MIDlets to devices.
  • Build user interfaces for mobile devices, including text presentation, input controls, 2D graphics, and multi-screen navigation.
  • Handle touch, pointer and keypad input in a MIDlet.
  • Implement menus and commands.
  • Save and re-load information from one MIDlet run to the next using the MIDP Record Management System.
  • Make network connections from the mobile device.
  • Retrieve remote information via HTTP, including dynamic information based on user requests.
  • Use multiple threads and MIDP timers effectively.
  • Write memory-conservative code for various tasks, and understand the implications of various techniques on heap usage.
  • Understand the use of Java ME and Java EE components to compose a seamless networked application.