Presentation Transcript
Writing Your First MIDletRunning JAVA on a Cell Phone : Writing Your First MIDlet Running JAVA on a Cell Phone Jon A. Batcheller
January 27, 2004
Overview: Overview The MID
The CLDC & MIDP
API
Developing Code
Emulation
Deployment
MID – Mobile Information Device: MID – Mobile Information Device Cell Phones, Palms, Blackberry….
Pocket Fisherman?
JAVA = one program, multi-platforms
“similar platforms” - WORA
MIDP: 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: MIDP MID MID Native (SYMBIAN OS) CLDC MIDP Native Apps JAVA MIDP Apps
CLDC: CLDC 128K to 512K total memory
Limited Power
Limited Connectivity (9600bps)
Reduced UI
Cell Phones, Pagers, PDA’s
MIDP: 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: 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: 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: MIDlet Lifecycle
HelloMIDlet.java: 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: 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: 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: 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: HelloMIDlet.java Compile
Note project library
Package
Emulate
Deploy
Test
Package: Package JAD
Versions – JAD, CLDC, MIDP
Multiple MIDlets – Suites
Other Classes
Other Files
JAR
JAD – Java Application Descriptor: 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: 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: Deploy JAD first
JAR on request
Methods
IR
BlueTooth
Email
WEB – “Over the Air”
http://www.javac.com/index.wml
Emulate: Emulate Emulators – part of toolkits – Sun or Phone
http://developers.sun.com/techtopics/mobility/midp/articles/emulators
Debugging Environment
Interesting Behaviors
Test: Test Test
Download jad
Queries user if new or different version
Download jar
Execute Application
Review Application details
PropExample.java: PropExample.java Review Code
Emulators
Test
javax.microedition.lcdui: javax.microedition.lcdui MIDP Low & High-level APIs
Displayable Canvas Screen Alert Form List TextBox
javax.microedition.lcdui: javax.microedition.lcdui Contents of Form and Alert Screens
Item ChoiceGroup DateField Gauge ImageItem StringItem TextField
UiDemo.java: UiDemo.java Look and Feel
Bejeweled
javax.microedition.io: 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: javax.microedition.io HttpExample.java
Log & Server2.java
javax.microedition.rms: javax.microedition.rms Named record store
Access to byte array records
Add, Get, Store
Stock Ticker
Writing Your First MIDletRunning JAVA on a Cell Phone : 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