introduction to java 2 micro editionjava.ociweb.com/javasig/knowledgebase/2001june/j2me.pdf ·...

25
Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff Brown Senior Software Engineer

Upload: others

Post on 09-Feb-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

Introduction toJava 2 Micro Edition

Mark Balbes, Ph.D.Senior Software Engineer

Jeff BrownSenior Software Engineer

Page 2: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(2)

What is J2ME

• Java platform for small devices

• A subset of Java 2 Standard Edition

• Complementary technology to WAP/WML

• For programming the Palm

• For programming wireless devices (e.gmobile phones)

Page 3: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(3)

J2ME-Enabled Devices• Motorola

– i85s and i50sx iDen phones

– Applications are downloaded and installed via a special cablehttp://commerce.motorola.com/iupdatephone/main/j2me_softcat.cfm

• NTT DoCoMo– Japanese phone company

• ~80% of wireless internet users are in Japan

– iMode and iAppli support

• Research In Motion– CLDC and MIDP compliant

– http://www.rim.net/

• Palm and compatibles

• WinCE devices

i85s

P503iRIM BlackBerry

Page 4: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(4)

Configurations and Profiles• CDC - Connected Device Configuration• CLDC - Connected Limited Device Configuration• MIDP - Mobile Information Device Profile• PDAP - Personal Digital Assistant Profile• Personal Profile

Host Operating System

JVM KVM

CDC

Personal MIDP PDAP

CLDC

kJava

Page 5: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(5)

CLDCConnected Limited Device Configuration

• Specification Version 1.0

• Hardware Requirements– 160 - 512 kB of memory

– 16 or 32 bit processor

– network connectivity (possibly wireless)

• No floating point support

• Deliver applications dynamically

Page 6: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(6)

CLDC (Cont’d)Connected Limited Device Configuration

• CLDC addresses– Java languages and virtual machine features

– Core Java libraries

– Input/output

– Networking

– Security

– Internationalization

Page 7: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(7)

CLDC (Cont’d)Connected Limited Device Configuration

• CLDC does not address– Application life-cycle management

– User interface functionality

– Event handling

– High-level application model

• These can be addressed in profiles

Page 8: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(8)

CLDCWhat’s been removed

• Floating point

• Java Native Interface

• User-defined class loaders

• Reflection

• Thread groups and daemon threads

• Finalization

• Weak references

Page 9: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(9)

CLDC Security

• Less memory-consuming than J2SE model

• Sandbox– No user-defined class loaders

– Classes loaded at native level

• No native method calls except from JVM

• System classes cannot be overridden byprogrammer

Page 10: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(10)

Programming the Palm

• Development Environment– J2ME CLDC API

• Contains a subset of the standard J2SE classes

– J2ME KJava API• GUI components

• Access to Palm database

• Access to IR port

– JBuilder Handheld Express

– POSE Palm Emulator

Already superceded.Not supported!

Page 11: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(11)

Programming the PalmCLDC Packages

• io– InputStream, OutputStream, Reader, Writer

• lang - No floating point support

• util– Enumeration, Calendar, Date, Hashtable,

Random, Stack, TimeZone, Vector

• javax.microedition.io– Connection, Datagram, InputConnection,

OutputConnection, Connector

Page 12: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(12)

Programming the PalmKJava GUI Components

• Spotlet– Container for other components

– Handles events• All events go to the spotlet.

• Spotlet must send events to the contained components.

– Only one spotlet can be registered• The registered spotlet is displayed.

• The registered spotlet receives all events from keys andscreen.

Page 13: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(13)

Programming the PalmHelloSpotlet

public class HelloSpotlet extends Spotlet {

private Graphics g;

private Button quitButton;

private String message = "Hello Spotlet!";

public HelloSpotlet() {

g = Graphics.getGraphics();

g.clearScreen();

quitButton = new Button("Quit", 5, 125);

quitButton.paint();

g.drawString(message, 5, 5, Graphics.PLAIN);

}

Graphics must be managedmanually!

Cannot specify thesize of the button.

Page 14: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(14)

Programming the PalmHelloSpotlet (Cont’d)

public void penDown(int x, int y){

if (quitButton.pressed(x, y)) {

System.exit(0);

}

}

public static void main(String[] args) {

new HelloSpotlet().register(Spotlet.NO_EVENT_OPTIONS);

}

}

Register for screen events only. No key events

Pass screen events to the button

Page 15: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(15)

Programming the PalmDeploy & Test HelloSpotlet

• Use JBuilder Wizard to create .prc file

• Command linejava palm.database.MakePalmApp

• Install into POSE

• No debugger

Page 16: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(16)

Programming the PalmKAWT Project

• Implementation of the AWT classes

• Can make GUIs that work in J2ME & J2SE

• Open source

• Not part of J2ME

• Lightweight

• Clean-room implementation

Page 17: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(17)

Building the Conduit

• Synchronizes data with desktop

• Java Conduit Development Kit– Claims to require Visual Café

– MS Windows

– Supports generic conduits

Page 18: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(18)

What is MIDP?

• Provides APIs for building software on mobiledevices with limited resources.

• Works on top of the Connected Limited DeviceConfiguration (CLDC)

Page 19: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(19)

Where does MIDP fit in the Javaplatforms?

– Works with CLDC

– Runs in the KVM

– Examples of devices:mobile phones

pagers

BlackBerry devices

personal digital assistants From http://java.sun.com/products/midp/

Page 20: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(20)

HelloMIDLetimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class HelloMIDlet extends MIDlet implements CommandListener {

private Command exitCommand;private Display display;

public HelloMIDlet() {display = Display.getDisplay(this);exitCommand = new Command("Exit", Command.SCREEN, 2);

}

public void startApp() {TextBox t = new TextBox("Hello MIDlet", "Hello World!", 256, 0);t.addCommand(exitCommand);t.setCommandListener(this);display.setCurrent(t);

}

public void pauseApp() {}public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {if (c == exitCommand) {

destroyApp(false);notifyDestroyed();

}}

}

Signals the MIDlet to terminate and enter theDestroyedstate.

Notify the application manager thatthe MIDlet has entered theDestroyedstate

Make TextBox the current screen

Page 21: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(21)

J2ME Wireless Toolkit• J2ME Wireless Toolkit 1.01

– http://java.sun.com/products/j2mewtoolkit/

– Integrates with Sun Forte IDE

• J2ME Wireless Toolkit 1.02– adds debugging capabilities

– adds new emulators

– early access version available (as of 6/3/01)

Page 22: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(22)

J2ME Wireless Toolkit Emulators

Page 23: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(23)

Final thoughts

• What happened to write-once, runanywhere. Now there are differentconfigurations and profiles to write to.

• How many developers can actually write forphones? Access may be controlled by thephone companies.

• CLDC & KJava provides a more familiardevelopment paradigm.

It’s back withJ2ME for Palm!

Wireless SIG

Page 24: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(24)

Wireless SIG

• A joint special interest group of the St.Louis Web Developers Organization andthe St. Louis Java User’s Group

• http://www.stlwebdev.org

• First meeting is on Tuesday, July 24 at 6:30p.m. in this auditorium.

• I will be talking about J2ME MIDP

• Contact Mark Balbes (me) to be a speakerat [email protected]

Page 25: Introduction to Java 2 Micro Editionjava.ociweb.com/javasig/knowledgebase/2001June/J2ME.pdf · Introduction to Java 2 Micro Edition Mark Balbes, Ph.D. Senior Software Engineer Jeff

J2ME(25)

References

• CLDC Specificationhttp://java.sun.com/aboutJava/communityprocess/final/jsr030/index.html

• MIDP Specificationhttp://java.sun.com/aboutJava/communityprocess/final/jsr037/index.html

• J2ME Archive http://www.billday.com/j2me/index.html

• http://www.kvmworld.com/

• Palm Emulator (POSE) http://www.palmos.com/dev/tech/tools/emulator/

• J2ME Wireless Toolkit http://java.sun.com/products/j2mewtoolkit/

• Conduit Development Kit - Windows Java Editionhttp://www.palmos.com/dev/tech/tools/cdk/java