writing your first midlet running java on a cell phone jon a. batcheller january 27, 2004

29
Writing Your First MIDlet Running JAVA on a Cell Phone Jon A. Batcheller January 27, 2004

Upload: kelly-lawson

Post on 17-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Writing Your First MIDletRunning JAVA on a Cell Phone

Jon A. BatchellerJanuary 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

MID

MID Native (SYMBIAN OS)

CLDC

MIDP

Native Apps

JAVA MIDP Apps

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 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

PropExample.java

• Review Code

• Emulators

• Test

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

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 MIDletRunning JAVA on a Cell Phone

And the discussion continues at McMenamin’s Greenway Pub, 12272 SW Scholls Ferry RoadNorth on 217 next exit, then West