Writing Your First MIDlet Running JAVA on a Cell Phone Jon A. Batcheller January 27, 2004
Overview The MID The CLDC & MIDP API Developing Code Emulation Deployment
MID – Mobile Information Device Cell Phones, Palms, Blackberry…. Pocket Fisherman? JAVA = one program, multi-platforms “similar platforms” - WORA
MIDP Reduced JVM J2ME – Java 2 Mobile Edition CLDC – Connected Limited Device Configuration CDC – Connected Device Configuration – full JVM imp. MIDP – Mobile Information Device Profile Personal Java, Embedded Java, JavaPhone
MIDP MID MID Native (SYMBIAN OS) CLDC MIDP Native Apps JAVA MIDP Apps
CLDC 128K to 512K total memory Limited Power Limited Connectivity (9600bps) Reduced UI Cell Phones, Pagers, PDA’s
MIDP API and virtual machine to device domain java.lang java.util java.io javax.microedition.io javax.microedition.lcdui javax.microedition.rms javax.microedition.midlet
Development Tools Sun Micro – J2ME Wireless Toolkit MIDP Borland & Sun Forte Nokia – Standalone & JBuilder attachment Need environment to compile (library), verify, package, emulate, and finally deploy
Writing our first MIDlet Application written for the MIDP Profile Must derive from javax.microedition.midlet.MIDlet Must implement startApp(), pauseApp() and destroyApp() Typically also implement a default constructor and a commandAction() from the CommandListener interface
MIDlet Lifecycle
HelloMIDlet.java Extends MIDlet Implements startApp, pauseApp, destroyApp Like an Applet, need something and somewhere to display Display.vs. Displayable Foreground.vs. Background Current Displayable
HelloMIDlet.java Extends MIDlet Implements startApp, pauseApp, destroyApp Like an Applet, need something and somewhere to display Display.vs. Displayable Foreground.vs. Background Current Displayable
Display Object Displayable current = Display.getDisplay(this).getCurrent(); Returns current Displayable Typically in startApp(), look for current Displayable, if null, create own and set it as current.
HelloScreen Displayable current = Display.getDisplay(this).getCurrent(); Returns current Displayable Typically in startApp(), look for current Displayable, if null, create own and set it as current.
HelloMIDlet.java Compile Note project library Package Emulate Deploy Test
Package JAD Versions – JAD, CLDC, MIDP Multiple MIDlets – Suites Other Classes Other Files JAR
JAD – Java Application Descriptor Usually a link on a WAP site Info on the MIDlet Most Important – URL of the JAR Downloaded to MID then user queried to download JAR
JAD – Java Application Descriptor MIDlet-Name: HelloWorld MIDlet-Version: MIDlet-Vendor: Solidware, Inc MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC-1.0 MIDlet-Jar-URL: HelloWorld.jar MIDlet-Jar-Size: 1592 MIDlet-1: HelloWorldApp,, HelloWorldApp
Deploy JAD first JAR on request Methods –IR –BlueTooth – –WEB – “Over the Air”
Emulate Emulators – part of toolkits – Sun or Phone articles/emulators Debugging Environment Interesting Behaviors
Test –Download jad –Queries user if new or different version –Download jar –Execute Application Review Application details
PropExample.java Review Code Emulators Test
javax.microedition.lcdui MIDP Low & High-level APIs Displayable CanvasScreen AlertFormListTextBox
javax.microedition.lcdui Contents of Form and Alert Screens Item ChoiceGroupDateFieldGaugeImageItemStringItemTextField
UiDemo.java Look and Feel Bejeweled
javax.microedition.io CLDC – HTTP protocol! Connection object Content, Datagram, HTTP, Stream Normal Stream I/O –Open with URL –Get input/output streams –Read/Write –Close
javax.microedition.io HttpExample.java Log & Server2.java
javax.microedition.rms Named record store Access to byte array records Add, Get, Store Stock Ticker
Writing Your First MIDlet Running JAVA on a Cell Phone And the discussion continues at McMenamin’s Greenway Pub, SW Scholls Ferry Road North on 217 next exit, then West