1 / 30

MIDP

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.

Mia_John
Download Presentation

MIDP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MIDP Mobile Information Device Profile Johnny Yau CIS 642 Prof. Insup Lee

  2. 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

  3. 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

  4. 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

  5. Implementation • Stacked on top of Connected Limited Device Configuration (CLDC) and KVM

  6. 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

  7. Service Model

  8. Retrieval • Medium Verification • Figure out which communication device to use (e.g. Bluetooth or IEEE 802.11) • Negotiations

  9. 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

  10. 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

  11. Installation • Download • Security Verification • Check that the MIDlet does not violate security issues • Transformation • Convert public representation to internal representation

  12. Launch • When selected by user application is moved into KVM and run

  13. 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

  14. Provided by Mobile Device • Classes and native code that implements CLDC • JAVA Virtual Machine (KVM) • Native code for the MIDP

  15. Provided by JVM & CLDC • Multi-threading • Locking • Synchronization • Execution of byte code • Method dispatching

  16. 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

  17. JAVA Packages • java.lang.* • java.io.* • java.util.* • javax.microedition.io.* • javax.microedition.ui.* • javax.microedition.rms.* • javax.microedition.midlet.*

  18. 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.

  19. 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.

  20. 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

  21. javax.microedition.ui • Screen • For the construction of form based user interfaces

  22. 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

  23. javax.microedition.midlet • MIDlet • Used to build MIDP applications

  24. 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);     }

  25.      /**      * 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()     {     }

  26.  /**      * 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();       }     } }

  27. Screenshot

  28. 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

  29. Hits • Simpler development • Runs on acceptably well on heterogeneous platforms

  30. 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

More Related