Developing Mobile Applications - KTHjohanmon/attic/2g1722/lectures/08 j2me.pdfDeveloping Mobile...

Post on 13-Jun-2020

3 views 0 download

Transcript of Developing Mobile Applications - KTHjohanmon/attic/2g1722/lectures/08 j2me.pdfDeveloping Mobile...

1Developing Mobile Applications 2G1722 Johan Montelius

Developing Mobile Applications

J2ME – Java 2 Micro Edition

2Developing Mobile Applications 2G1722 Johan Montelius

Virtual machines

hardware

operating system

virtual machine

portable appsnative apps

3Developing Mobile Applications 2G1722 Johan Montelius

Java - important issues

• Symbolic language– not a random access memory– dynamic memory allocation– garbage collection

• implemented using a virtual machine– portability– sand box

• Multi threaded, concurrent processes• Large library!

4Developing Mobile Applications 2G1722 Johan Montelius

Java sources

• Java Community Process www.jcp.org– JSR, java specification request– reference implementations

• Sun java.sun.com– SDK, tools, community

• Your favorite phone manufacturer– SDK, tools, community, device

emulators

5Developing Mobile Applications 2G1722 Johan Montelius

Compiling and emulating (J2SE)

: : iconst_5 istore_1 iload_1 bipush 2 iadd istore_1 return

foo.class

public class foo { int i; i = 5; i = i + 2; }

foo.java

readeval

verify

6Developing Mobile Applications 2G1722 Johan Montelius

pros and cons

• Pros– Simpler: it's simpler to build a compiler and

emulator than to build a native code compiler.– Portability; porting an emulator is simpler than

porting a native code compiler.

• Cons– slower since wee need to do a read-eval-loop– limited access to OS and hardware

7Developing Mobile Applications 2G1722 Johan Montelius

Flavors of Java 2

• J2SE - standard edition– the most used on laptops and

desktops• JSEE – enterprise edition

– additional support for running large servers

• J2ME – micro edition– mobile devices– set top boxes– embedded systems

8Developing Mobile Applications 2G1722 Johan Montelius

J2ME specification

• a configuration– defines the minimum required complement of Java

technology components and libraries for small connected devices,

– Java language and virtual machine features, core libraries, security, input/output, and networking

– no optional libraries

• a profile– defines additional libraries and features for a particular

vertical market, device category or industry– optional libraries

9Developing Mobile Applications 2G1722 Johan Montelius

J2ME

• The J2ME version that we are most interested in is the one for mobile phones.

• CLDC– Connected Limited Device Configuration– minimum 128Kbyte available– CDC (Connected device configuration) is a larger

configuration for more powerful terminals. Some mobile phones now support CDC.

• MIDP– Mobile Information Device Profile

10Developing Mobile Applications 2G1722 Johan Montelius

CLDC - Connected Limited Device Configuration

• CLDC 1.0– defined in May 2000, JSR 30 – basic java.lang– subset of java.lang/util/io/..

• CLDC 1.1– defined in Dec 2002, JSR 139– adds support for float in java.lang– java.util.Calendar/Date/TimeZone/...– bug fixes and more

11Developing Mobile Applications 2G1722 Johan Montelius

MIDP - Mobile Information Device Profile

• MIDP 1.0 - defined in Dec 2000, JSR 37– java.microedition.midlet– java.microedition.rms– java.microedition.lcdui– java.microedition.io.HttpConnection

• MIDP 2.0 - defined in Nov 2002 JSR 118– java.microedition.io.SocketConnection– java.microedition.media – java.microedition.lcdui.game

• MIDP 3.0 in pipe-line Q3 2006

12Developing Mobile Applications 2G1722 Johan Montelius

MIDP 1.0/2.0/3.0

• The numbers does not mean that MIDP evolves and that “older” versions become obsolete.

• New devices can still be MIDP 1.0 devices because of limited resources.

• MIDP 2.0 does not imply CLDC 1.1!

13Developing Mobile Applications 2G1722 Johan Montelius

Phones on the market

• older J2ME phones: – CLDC 1.0/MIDP 1.0

• most J2ME phones released since Q2 2004: – CLDC 1.1/ MIDP 2.0

• some phones also support additional libraries

14Developing Mobile Applications 2G1722 Johan Montelius

Optional libraries

• JSR 82 Bluetooth – connect to BT devices

• JSR 120 Wireless Messaging API– sending and receiving SMS messages

• JSR 135 Mobile Media API– high-level interface to sound and

multimedia capabilities

• JSR 184 Mobile 3D Graphics– interactive 3D graphics

15Developing Mobile Applications 2G1722 Johan Montelius

Even more ....

• JSR 177 Security and Trust Services API• JSR 179 Java Location API• JSR 180 Session Initiation Protocol (SIP) • JSR 205 Wireless Messaging API (WMA) 2.0 • JSR 226 Scalable 2D Vector Graphics API

16Developing Mobile Applications 2G1722 Johan Montelius

MIDP 3.0

• Let Java applications start and run in the back ground

• Several applications in the same JRE.• Let applications talk to each other.• Rules for firewalls.• .... is the sandbox a sandbox?

17Developing Mobile Applications 2G1722 Johan Montelius

SonyEricsson

• T610, T630– CLDC1.0/MIDP1.0 – Color 128x160 pixel, up to 60KB jar, up to 256 KB heap

• F500– CLDC1.1/ MIDP 2.0 + MMAPI, WMA, 3D ... color 128x160

pixel, 1.5MB heap

• Z1010, K700, – CLDC1.1/ MIDP 2.0 + MMAPI, WMA, 3D ... 176 x 220

pixels, 1.5MB heap

• P910i: – CLDC1.1/CDC1.0/MIDP2.0 color 208x320 pixels,

X MB jar , ...

18Developing Mobile Applications 2G1722 Johan Montelius

Nokia

• Series 30– CLDC1.0/MIDP1.0 – monochrome/color, 95x65 pixel, 32/64KB jar

• Series 40– CLDC1.0/MIDP1.0 or CLDC1.1/MIDP2.0– Color 128x128 pixel, >64KB jar, up to 200KB heap

• Series 60– CLDC1.1/MIDP2.0 + more – Color 176x208 pixel, up to 4MB jar, up to 1MB heap

• Series 80 and Series 90– CLDC1.1/MIDP2.0 + more

19Developing Mobile Applications 2G1722 Johan Montelius

How do we find out?<prf:JavaEnabled>Yes</prf:JavaEnabled><prf:JavaPlatform> <rdf:Bag> <rdf:li>CLDC</rdf:li> <rdf:li>MIDP</rdf:li> <rdf:li>Profile/MIDP-2.0</rdf:li> <rdf:li>Configuration/CLDC-1.1</rdf:li> </rdf:Bag></prf:JavaPlatform><prf:JavaPackage> <rdf:Bag> <rdf:li>jsr-75</rdf:li> <rdf:li>jsr-234</rdf:li> : <rdf:li>vscl-2.1</rdf:li> </rdf:Bag></prf:JavaPackage>

20Developing Mobile Applications 2G1722 Johan Montelius

Developing Mobile Applications

J2ME : Midlets and program development

21Developing Mobile Applications 2G1722 Johan Montelius

What you need

• a good editor (why not emacs)• development tools from java.sun.com

– Java 2 Platform SDK 1.4– the J2ME Wireless Toolkit (1.x or 2.x)

• from your local phone manufacturer – an emulator for your phone – a complete SDK

• IDE, debugger tools, ...

22Developing Mobile Applications 2G1722 Johan Montelius

Pre-verifying

readeval

: : iconst_5 istore_1 iload_1 bipush 2 iadd istore_1 return

foo.class

public class foo { int i; i = 5; i = i + 2; }

foo.java

: : iconst_5 istore_1 iload_1 bipush 2 iadd istore_1 return

foo.class

pre-verify(opt. obfuscate)

23Developing Mobile Applications 2G1722 Johan Montelius

environment

compiler

emulator

device explorer

pre-verifier IrDA/Bluetooth

WS P/HTTP

java VM

24Developing Mobile Applications 2G1722 Johan Montelius

Midlet

• Similar to a Applet• An application that is controller by

– create the object– startApp– pauseApp– destroyApp

• Interactive – javax.microedition.lcdui.Screen– javax.microedition.lcdui.Canvas

25Developing Mobile Applications 2G1722 Johan Montelius

Life of a Midlet

Start

Paused

Call the constructor.

Shutdown

destroyApp()

destroyApp()pauseApp()Running

startApp()

26Developing Mobile Applications 2G1722 Johan Montelius

JAR – Java Archive

• A JAR file contains one or more .class files and the images, sounds etc files that the midlet is using.

• MIDlets in a JAR file can share the same resources. This is one reason why you might want to include several midlets in one JAR.

27Developing Mobile Applications 2G1722 Johan Montelius

RMS record management system

RMS

Midlet A Midlet B

RecordStore rs = RecordStore.openRecordStore("Foo",true);

Persistent storageFoo

App.jar

1: Hello2: World

28Developing Mobile Applications 2G1722 Johan Montelius

JAR Manifest

• The JAR file also contains a manifest file (META-INF/MANIFEST.MF) that describes the content:– MIDlet-Name: The Hello App– MIDlet-Version: 1.0– MIDlet-Vendor: Your company– MIDlet-1: Hello, img/hello.gif , demo.Hello– MicroEdition-Profile: MIP-1.0– MicroEdition-Configuration: CLDC-1.0

29Developing Mobile Applications 2G1722 Johan Montelius

JAR Manifest

• The manifest can also contain user defined parameters that can be access from the midlet.

• This is useful for to keep constants separate form the Java code.

• The manifest information is accessible to all midlets in the JAR file.

30Developing Mobile Applications 2G1722 Johan Montelius

Developing Mobile Applications

J2ME: Provisioning

31Developing Mobile Applications 2G1722 Johan Montelius

Over the air

• As with all larger files we would like to know what is about to be downloaded before we actually download it.

• A JAD – Java application description – file is very similar to a manifest file but is delivered in plain text and contains information about the jar-file.

32Developing Mobile Applications 2G1722 Johan Montelius

JAD

MIDlet-1: HelloWorld, , HelloWorldMIDlet-Name: HelloWorldMIDlet-Vendor: Your CompanyMIDlet-Version: 1.0MIDlet-Jar-URL: http://www.compmy.com/HelloWorld.jarMIDlet-Jar-Size: 1801MicroEdition-Profile: MIDP-1.0MicroEdition-Configuration: CLDC-1.0MIDlet-Description: HelloWorld Example

33Developing Mobile Applications 2G1722 Johan Montelius

Deploy

• Place the .jar and .jad file on a web server.• Patch the .jad file to point to the .jar file• Have the .jad file referred to from a WML

or XHTML file. • When downloaded the user will be

prompted.• Download and execute.

34Developing Mobile Applications 2G1722 Johan Montelius

JAD user defined parameters

• The JAD file can also contain user defined parameters.

• Can be access in the same way as manifest parameters.

• You can change JAD parameters with out repacking the JAR file.

• Could be useful for device specific information.

• JAD parameters override manifest parameters (unless the midlet is signed)

35Developing Mobile Applications 2G1722 Johan Montelius

OTA – MIDP 2.0 provisioning

GET JAR

GET JAD

JAD

JAR

36Developing Mobile Applications 2G1722 Johan Montelius

JADMIDlet-1: HelloWorld, , HelloWorldMIDlet-Name: HelloWorldMIDlet-Vendor: jmMIDlet-Version: 1.0MIDlet-Jar-URL: http://www.compny.com/HelloWorld.jarMIDlet-Jar-Size: 1801MicroEdition-Profile: MIDP-1.0MicroEdition-Configuration: CLDC-1.0MIDlet-Description: HelloWorld ExampleMIDlet-Install-Notify: http://www.company.com/installed.php

37Developing Mobile Applications 2G1722 Johan Montelius

OTA – MIDP 2.0 provisioning

GET JAR

GET JAD

JAD

JAR

POS T 900 S ucess

38Developing Mobile Applications 2G1722 Johan Montelius

Security (MIDP 2.0)

• MIDlets are divided into trusted and untrusted applications:– untrusted applications can not (or only after user

acceptance) access for example network resources etc.

• There are several domains, each with a set of rights:– manufacturer– operator – third party

• MIDlets are digitally signed and can be verified by certificates for each domain.

39Developing Mobile Applications 2G1722 Johan Montelius

Security (MIDP 2.0)

• The JAD and manifest file should contain the description of the rights that an application needs:– MIDlet-Permissions: javax.microedition.io.Connector.http– MIDlet-Permissions-Opt:

javax.microedition.io.Connector.https

• Verifying signatures is done at installation, the MIDlet can still be executed even if the certificate has expired.

40Developing Mobile Applications 2G1722 Johan Montelius

Native

• If the support is not there in the Java libraries you will have to do a native code implementation:

• SymbianOS – Nokia Series 60/80– SonyEricsson P900

• Microsoft Mobile– Qtek, Palm Treo, ...

• Qualcomm BREW• Linux Mobile

41Developing Mobile Applications 2G1722 Johan Montelius

Lab session 5

• Write, compile, debug and deploy a small J2ME application (yes more than Hello World)