CS 683 Emerging Technologies Fall Semester, 2004 Doc 18 J2ME Intro
CS 683 Emerging Technologies Fall Semester, 2004 Doc 18 J2ME Intro
References................................................................................ 2
J2ME Wireless Toolkit 2.1......................................................... 3
J2ME Overview....................................................................... 4
Connected Limited Device Configuration (CLDC) ..................... 7
Profiles & API.......................................................................... 7
Java Limitations .................................................................... 10
Packages from J2SE ............................................................ 11
HelloWorld Example ............................................................. 12
Running the Example the Hard Way .................................. 14
Running the Example the Easy Way .................................. 16
javax.microedition.midlet.MIDlet & MIDlet States .................... 19
MIDlet Methods..................................................................... 20
Using System.out.................................................................. 27
References
http://java.sun.com/j2me/docs/index.html
http://www.eli.sdsu.edu/courses/fall04/cs683/j2me/index.html
CS 683 Doc 18 J2ME Intro slide # 3
Download at:
http://java.sun.com/products/j2mewtoolkit/download-2_1.html
Documentation
User’s Guide
http://java.sun.com/j2me/docs/wtk2.1/user_html/index.html
http://java.sun.com/j2me/docs/index.html
http://www.eli.sdsu.edu/courses/fall04/cs683/j2me/index.html
CS 683 Doc 18 J2ME Intro slide # 4
J2ME Overview
• Configurations
• Profiles
• 32-bit microprocessor/controller
• 2MB of RAM for Java
• 2.5 MB of ROM Java
CS 683 Doc 18 J2ME Intro slide # 6
• Java Card
For smart cards
• PersonalJava
Obsolete
Replaced by CLDC & CDC
• Java TV API
Digital television receivers
• JavaPhone API
Direct telephony control
Datagram messaging
Address book and calendar information
User profile access
Power monitoring
Application installation
CS 683 Doc 18 J2ME Intro slide # 7
http://java.sun.com/products/midp4palm/
• Audio
• Video
• Time-based multimedia support
• Included in J2ME Wireless Toolkit 2.1
Location API
SIP API
Bluetooth API
By Motorola/Freescale
Status unknown
CS 683 Doc 18 J2ME Intro slide # 10
Java Limitations
• No Floating point
No float or double
No method that uses float or double
• No Reflection
• No Weak References
• No Object finalization
• No daemon threads
Security
Class Verification
java.io
ByteArrayInputStream ByteArrayOutputStream
DataInputStream DataOutputStream
InputStream InputStreamReader
OutputStream OutputStreamWriter
PrintStream Reader
Writer
java.lang
java.util
HelloWorld Example
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public MySample() {
}
}
CS 683 Doc 18 J2ME Intro slide # 13
You must download and install the J2ME Wireless Toolkit 2.1
Download at:
http://java.sun.com/products/j2mewtoolkit/download-2_1.html
/pathtoWTK/WTK2.1
CS 683 Doc 18 J2ME Intro slide # 14
Create subdirectories:
• classes
• src
• tmpclasses
Then run
/pathtoWTK/WTK2.1/bin/preverify -classpath
/pathtoWTK/WTK2.1/lib/cldcapi10.jar:/pathtoWTK/WTK2.1/lib/
midpapi20.jar
-d classes tmpclasses
CS 683 Doc 18 J2ME Intro slide # 15
MANIFEST.MF
MIDlet-1: MySample, MySample.png, MySample
MIDlet-Name: MySample
MIDlet-Vendor: Unknown
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
MySample.jad
MIDlet-1: MySample, MySample.png, MySample
MIDlet-Jar-Size: 1433
MIDlet-Jar-URL: MySample.jar
MIDlet-Name: MySample
MIDlet-Vendor: Roger Whitney
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
/pathtoWTK/WTK2.1/bin/ktoolbar
WTK2.1/apps/FirstExample/src/MySample.java
MIDlet States
• Active
• Paused
• Destroyed
MIDlet Methods
startApp()
If a non-transient failures
Use startApp() for resources that need action each time move
to active state
CS 683 Doc 18 J2ME Intro slide # 22
public MySample() { }
public MySample() {
Form form = new Form( "First Program" );
form.append( "Hello World" );
Display.getDisplay(this).setCurrent( form );
}
pauseApp()
destroyApp()
Should
• Release all resources
• Save any persistent state
notifyDestroyed()
notifyPaused()
resumeRequest()
getAppProperty()
checkPermission()
0 permission denied
1 permission granted
CS 683 Doc 18 J2ME Intro slide # 26
platformRequest()
URL can be a
Using System.out
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public MySample() {
Form form = new Form( "First Program" );
form.append( "Hello World" );
Display.getDisplay(this).setCurrent( form );