Transcript Slide 1
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 JAVA MIDP Apps MIDP CLDC Native Apps MID Native (SYMBIAN OS) MID 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 1.0.3 •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: 0.0.1 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 Email WEB – “Over the Air” http://www.javac.com/index.wml Emulate •Emulators – part of toolkits – Sun or Phone http://developers.sun.com/techtopics/mobility/midp/ articles/emulators •Debugging Environment •Interesting Behaviors Test • 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 Screen Alert Form List Canvas TextBox javax.microedition.lcdui • Contents of Form and Alert Screens Item ChoiceGroup DateField Gauge ImageItem StringItem TextField 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, 12272 SW Scholls Ferry Road North on 217 next exit, then West