writing your first midlet running java on a cell phone jon a. batcheller january 27, 2004
TRANSCRIPT
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
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
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.
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 Phonehttp://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
javax.microedition.lcdui
• MIDP Low & High-level APIs
Displayable
CanvasScreen
Alert Form List TextBox
javax.microedition.lcdui
• Contents of Form and Alert Screens
Item
ChoiceGroup DateField Gauge ImageItem StringItem TextField
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.rms
• Named record store
• Access to byte array records
• Add, Get, Store
• Stock Ticker