310 likes | 791 Views
MIDP. Mobile Information Device Profile Johnny Yau CIS 642 Prof. Insup Lee. Introduction. MIDP = Mobile Information Device Profile Spearheaded by Sun, Motorola, and Nokia Latest attempt by Sun to bring JAVA into embedded systems, specifically mobile phone. Motivation Behind MIDP.
E N D
MIDP Mobile Information Device Profile Johnny Yau CIS 642 Prof. Insup Lee
Introduction • MIDP = Mobile Information Device Profile • Spearheaded by Sun, Motorola, and Nokia • Latest attempt by Sun to bring JAVA into embedded systems, specifically mobile phone
Motivation Behind MIDP • Heterogeneous development platforms in mobile phone arena • Short product life cycles • MIDP attempts to solve that via offering a standard environment for application programmers
What is MIDP? • Set of JAVA APIs • Implements a MIDlet class • Addresses issues such as user interface, persistent storage, networking, and application model • Targeted towards mobile phones • Basically JAVA for mobile phones
Implementation • Stacked on top of Connected Limited Device Configuration (CLDC) and KVM
Implementation (cont) • Operates over existing network protocols such as IrDA, Bluetooth, IEEE 802.11, and wireless networks • Specifications are targeted towards mobile phones • Other devices such as PDAs may find more use in a super set of the MIDP APIs
Retrieval • Medium Verification • Figure out which communication device to use (e.g. Bluetooth or IEEE 802.11) • Negotiations
Negotiations • Server and mobile device exchange information about the MIDlet and mobile device, respectively • Information such as device capabilities (e.g. processing power, volatile memory available), device size, MIDlet requirements may be exchanged
Negotiations (cont) • Crux of the useful capabilities offered by MIDP • Especially important when it comes to making things work over devices with different sized screens and different capabilities
Installation • Download • Security Verification • Check that the MIDlet does not violate security issues • Transformation • Convert public representation to internal representation
Launch • When selected by user application is moved into KVM and run
Upgrade & Removal • Applications can be upgraded when new versions become available • An application permanently stored locally on device can be removed from persistent storage when selected for removal by user
Provided by Mobile Device • Classes and native code that implements CLDC • JAVA Virtual Machine (KVM) • Native code for the MIDP
Provided by JVM & CLDC • Multi-threading • Locking • Synchronization • Execution of byte code • Method dispatching
MIDlet Class • All MIDP applications MUST inherit from the MIDlet class • Does not have a main() function • Cannot call System.exit() • It triggers a SecurityException to be thrown
JAVA Packages • java.lang.* • java.io.* • java.util.* • javax.microedition.io.* • javax.microedition.ui.* • javax.microedition.rms.* • javax.microedition.midlet.*
javax.microedition.io • StreamConnection • To open a basic connection that reads/writes simple data. • ContentConnection • To open a connection that provides content length, type, and encoding information. This interface extends from the StreamConnection interface.
javax.microedition.io • HttpConnection • To open a connection that provides capabilities to interface through HTTP including getting/setting headers and HTTP-specific handling. This interface extends from the ContentConnectioninterface.
javax.microedition.ui • Offers two major choices in interface design • Canvas • Used to construct a custom interface using the Graphics object • Mainly used for multithreaded games or non-traditional interfaces
javax.microedition.ui • Screen • For the construction of form based user interfaces
javax.microedition.rms • Contains the classes needed to implement a temporary storage database on the device • Limited in capabilities because of the restrictions imposed by mobile phones
javax.microedition.midlet • MIDlet • Used to build MIDP applications
Hello World MIDlet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMidlet extends MIDlet implements CommandListener { // Initialize the Midlet Display variable private Display midletDisplay; // Initialize a variable for the doneCommand private Command doneCommand; public HelloMidlet() { // Retrieve the display from the static display object midletDisplay = Display.getDisplay(this); // Initialize the doneCommand doneCommand = new Command("DONE", Command.SCREEN, 1); }
/** * Create the Hello Midlet World TextBox and associate * the exit command and listener. */ public void startApp() { // Create the TextBox containing the "Hello Midlet World!!" message TextBox textBox = new TextBox("Hello Midlet", "Hello Midlet World!!", 256, 0); // Add the done Command to the TextBox textBox.addCommand(doneCommand); // Set the command listener for the textbox to the current midlet textBox.setCommandListener( (CommandListener) this); // Set the current display of the midlet to the textBox screen midletDisplay.setCurrent(textBox); } /** * PauseApp is used to suspend background activities and release * resources on the device when the midlet is not active. */ public void pauseApp() { }
/** * DestroyApp is used to stop background activities and release * resources on the device when the midlet is at the end of its * life cycle. */ public void destroyApp(boolean unconditional) { } /* * The commandAction method is implemented by this midlet to * satisfy the CommandListener interface and handle the done action. */ public void commandAction(Command command, Displayable screen) { // If the command is the doneCommand if (command == doneCommand) { // Call the destroyApp method destroyApp(false); // Notify the midlet platform that the midlet has completed notifyDestroyed(); } } }
Development Cycle • Write application using MIDP APIs • Compile • Pre-verify • Pre-processes the class for use in KVM • Test • Package classes into a .jar file • Test with Package
Hits • Simpler development • Runs on acceptably well on heterogeneous platforms
Misses • Too bloated really for mobile phones • Not powerful enough for devices like PDAs and Wireless Internet Appliances that have more resources available • Though a superset of the APIs may work fine