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