0% found this document useful (0 votes)
94 views

2 - The Mobile Ecosystem and Java 2 Micro Edition

The document discusses the mobile ecosystem including operators, networks, devices, operating systems, application frameworks, and services. It provides details on major mobile operators, 2G and 3G network technologies, the evolution of mobile devices, examples of Nokia and Modu devices, 4G networks, and the effects of device portability.

Uploaded by

Chng ChernWei
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
94 views

2 - The Mobile Ecosystem and Java 2 Micro Edition

The document discusses the mobile ecosystem including operators, networks, devices, operating systems, application frameworks, and services. It provides details on major mobile operators, 2G and 3G network technologies, the evolution of mobile devices, examples of Nokia and Modu devices, 4G networks, and the effects of device portability.

Uploaded by

Chng ChernWei
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 79

Internet and Mobile Services

2 The Mobile Ecosystem and


Java 2 Micro Edition
F. Ricci
2010/2011

Content

Mobile Ecosystem

Mobile application frameworks

Java 2 Micro Edition

Configurations and profiles

Optional packages

Generic connection framework

Application manager and MIDP applications

Sun Java ME SDK 3.0

Two examples of Midlets

The Mobile Ecosystem

Services
Applications
Application Frameworks
Operating Systems - Platforms
Devices
Networks
Operators

Operators

Also called Mobile Network Operators (MNOs)


or wireless carriers

Tasks

Install cellular towers (and related


infrastructure)

Operate the cellular network

Offer services for mobile subscribers

Maintain relations with subscribers

Handle billing and support

Worlds Largest Operators


Rank

Operator

Markets

Technology

Subscribers (in
millions)

1.

China Mobile

China (including Hong


Kong) and Pakistan

GSM, GPRS, EDGE,


TD-SCDMA

436.12

2.

Vodafone

United Kingdom,
Germany, Italy,
France, Spain

GSM, GPRS, EDGE,


UMTS, HSDPA

260.5

3.

Telefnica

Spain, Argentina,
Brazil, Chile,
Colombia,

CDMA, CDMA2000 1x,


EV-DO, GSM, GPRS,
EDGE, UMTS, HSDPA

188.9

4.

Amrica Mvil

United States,
Argentina, Chile,
Colombia, Paraguay,

CDMA, CDMA2000 1x,


EV-DO, GSM, GPRS,
EDGE, UMTS, HSDPA

172.5

5.

Telenor

Norway, Sweden,
Denmark, Hungary

GSM, GPRS, EDGE,


UMTS, HSDPA

143.0

6.

China Unicom

China

GSM, GPRS

127.6

7.

T-Mobile

Germany, United
States, United
Kingdom, Poland

GSM, GPRS, EDGE,


UMTS, HSDPA

126.6

8.

TeliaSonera

Norway, Sweden,
Denmark, Finland

GSM, GPRS, EDGE,


UMTS, HSDPA

115.0

9.

Orange

France, United
Kingdom, Switzerland,
Poland, Spain

GSM, GPRS, EDGE,


UMTS, HSDPA

111.8

10.

MTS

Russia, Ukraine,
Belarus, Uzbekistan,
Turkmenistan,..

GSM, GPRS, EDGE,


UMTS

91.7

MTN Group

Afghanistan, Benin,
Botswana, Cameroon,
Republic of Congo,
Cte dIvoire,

GSM, GPRS, EDGE,


UMTS, HSDPA, HSUPA

80.7

11.

Networks
2G

Second generation of mobile phone


standards and technology

Theoretical max data


speed

GSM

Global System for Mobile


communications

12.2 KB/sec

GPRS

General Packet Radio Service

Max 60 KB/sec

EDGE

Enhanced Data rates for GSM Evolution

59.2 KB/sec

HSCSD

High-Speed Circuit-Switched Data

57.6 KB/sec

3G

Third generation of mobile phone


standards and technology

Theoretical max data


speed

W-CDMA

Wideband Code Division Multiple Access

14.4 MB/sec

UMTS

Universal Mobile Telecommunications


System

3.6 MB/sec

UMTS-TDD

UMTS +Time Division Duplexing

16 MB/sec

TD-CDMA

Time Divided Code Division Multiple


Access

16 MB/sec

HSPA

High-Speed Packet Access

14.4 MB/sec

HSDPA

High-Speed Downlink Packet Access

14.4 MB/sec

HSUPA

High-Speed Uplink Packet Access

5.76 MB/sec

What is a Phone?

For the majority of people the perception of what


is a phone has not changed

Actually the modern mobile phone is something


totally different: is a communication and
information device.

The Evolution of Devices

The Brick Era (1973-1988): large, heavy,


professional usage or for rich people
The Candy Bar Era (1988 1998): better networks
2G, for all, limited functions still produced
The Feature Phone Era (1998-2008): better data
connection GPRS and numerous features - 85% of
current phones (2009)
The Smartphone Era (2002-now): QWERTY
keyboard, PDA like, push email, various Oss 13% of
current phones (2009)
The Touch Era (2007-now): iPhone and followers

Nokia N96

Operating Frequency: WCDMA2100/900


(HSDPA) / EGSM900, GSM850/1800/1900 MHz
(EGPRS)
Memory: 128MB RAM, 256MB system memory;
16GB internal flash memory; memory card slot
Display: 2.8" QVGA (240 x 320 pixels)
Data Transfer:
WCDMA HSDPA with simultaneous voice and
packet data (PS max speed
DL/UL= 3.6Mbps/384kbps, CS max speed 64kbps)
Dual Transfer Mode (DTM) support for simultaneous
voice and packet data connection in GSM/EDGE
networks. Simple class A, multi slot class 11, max speed
DL/UL: 177.6/118.4kbps
EGPRS class B, multi slot class 32, max speed DL/UL=
296/177.6kbps
GPRS class B, multi slot class 32, max speed DL/UL=
107/64.2kbps

Nokia N96

Connectivity

WLAN - IEEE802.11 g/b with UPnP support


Hi-Speed USB 2.0 with Micro USB type B interface
3.5mm stereo headset plug , TV-out support (PAL/
NTSC)
Bluetooth 2.0 with A2DP stereo audio and
Enhanced Data Rates (EDR)
Nokia Nseries PC Suite connectivity with USB and
Bluetooth wireless technology
Local synchronization of contacts and calendar to a
compatible PC using compatible connection
Remote over-the-air synchronization
Send and receive images, video clips, graphics, and
business cards via Bluetooth wireless technology.

Nokia N96

Applications

Java MIDP 2.1, CLDC 1.1 (Connected Limited Device


Configuration (J2ME))

Over-the-air download of Java-based applications and


games

Flash Lite 3.0

Imaging and Video

Up to 5 megapixel (2592 x 1944 pixels) camera MPEG-4 Part 2 (H.263/SP), up to VGA 30 fps

Geotagging: automatic insertion of GPS-based location


tags into images

Video call and video sharing support (WCDMA network


services)

Online album/blog: photo/video uploading from gallery

Broadcast Television (DVB-H) capable

Nokia N96

Music Features

Digital music player - supports MP3/AAC/AAC+/


eAAC+/WMA/M4A with playlists and equalizer

Integrated handsfree speaker

OMA DRM 2.0 & WMDRM support for music

Stereo FM radio (87.5-108MHz /76-90MHz) with


Visual Radio support and RDS

Navigation: Built-in GPS

E-mail: e-mail client with attachment support for images,


videos, music and documents

Browsing: Nokia Web Browser with Mini Map, visual


history, HTML and JavaScript support, Flash Lite 3.0 and
Flash video support, RSS reader.

Modu

Slightly larger than a domino

Capable of sending and receiving


calls and text messages

Can store contacts and MP3s with


up to 16 gigabytes of storage
capacity

Small but usable screen and a


sparse keypad that lacks numbers

It can be slipped into a variety of "jackets," such


as in-car MP3 players, GPS, and larger cell
phones, that expand the Modu's functions and
change its look.
http://www.technologyreview.com

4G - Fourth Generation

4G : Fourth-Generation
describes the next
complete evolution in
wireless communications
4G networks will come in
2012-2015
4G will be a fully IP-based
integrated system
4G will be capable of
providing between 100
Mbit/s and 1 Gbit/s
speeds both indoors and
outdoors, with premium
quality and high security.

Effects of device portability

Power consumption
limited computing power, low quality displays, small
disks due to limited battery capacity
CPU: power consumption ~ CV2f
C: internal capacitance, reduced by integration
V: supply voltage, can be reduced to a certain limit
f: clock frequency, can be reduced temporally
Loss of data
higher probability, has to be included in advance into
the design (e.g., defects, theft)
Limited user interfaces
compromise between size of fingers
and portability
integration of character/voice
recognition, abstract symbols
Limited memory and computing power
limited RAM, and CPU

Computers for the next decades?

Computers are integrated


small, cheap, portable, replaceable
Technology is in the background
computer are aware of their environment and adapt (location
awareness)
computer recognize the location of the user and react
appropriately (e.g., call forwarding, fax forwarding, context
awareness))
Advances in technology
more computing power in smaller devices
flat, lightweight displays with low power consumption
new user interfaces due to small dimensions
more bandwidth per cubic meter
multiple wireless interfaces: wireless LANs, wireless WANs,
regional wireless telecommunication networks etc. (overlay
networks)

The Mobile Ecosystem

Services
Applications
Application Frameworks
Operating Systems - Platforms
Devices
Networks
Operators

Mobile Operating Systems - Platforms

Palm OS: advanced OS now supporting webOS


that is based on the WebKit browser framework

Windows Mobile: compact version of the


Windows OS
Symbian: open source OS with libraries, user
interface, frameworks, reference implementation of
common tools

Linux: used in some phones e.g. Motorola RAZR2


or larger mobile devices as Nokia 900

Mac OS X: iPhone and iPod touch (unix based)


Android: unix based a fast growing
set of devices are using it

Application Frameworks (I)

Java: Java ME can be deployed purchase through


the operator or for free over the air across the
majority of devices (Java-Based)
S60: application framework for devices sunning
Symbian OS. Runs mostly on Nokia phones.
Applications are created on Java, Symbian C++ or
Flash Lite
BREW: Binary Runtime Environment for Wireless
Download and run small programs (C or C++) for
playing games, sending messages, and sharing
photos
Applications can be ported among all Qualcomm
devices
Applications must go through a costly certification
process trough the operator.
http://brew.qualcomm.com/brew/en/

Application Frameworks (II)

Windows Mobile: applications written for Win32


API can be deployed on the majority of Mobilebased devices

Cocoa Touch

API for creating native applications


for the iPhone and iPod touch

Applications must be submitted and


certificated by Apple before they
can be included in the AppStore

Android SDK: based on java exploit activities


offered and shared by the framework e.g. map
visualization.

Application Frameworks (III)

Web Runtimes (WRTs)

Provided by Nokia, Opera and Yahoo!

Miniframeworks for creating mobile


widgets based on web standards
(XHTML+JS+CSS)

They are programmed in a SDK and are distributed as


Symbian applications (OVI)

Widgets run in WRT (not in the browser), a webapplication runtime environment that is part of the S60
Browser the phone must support it!

PC widgets can be ported to WRT

widget can combine information from the internet with


data stored on a device

http://developer.symbian.org/wiki/index.php/Apps:Web_Apps_in_a_Nutshell

http://www.forum.nokia.com/Develop/Web/
http://wiki.forum.nokia.com/index.php/Category:Web_Runtime_(WRT)

Application Frameworks (IV)

The Web

The only application framework


that work across all devices and
operating systems

Applications are built using web


standards
WML
XHTM-MP
Java

script

CSS

A variety of web standards support in different


devices and the characteristics of devices makes
building mobile web applications difficult.

Mobile Applications

Mobile applications are designed to support


services

They can be pushed to a mobile device or


downloaded and installed locally or they may
rely on the browser

Classification technology based

SMS

Mobile Websites

Mobile Web Widget

Mobile Web Applications

Native Applications

Games

SMS

The simplest but more complex applications,


e.g., native ones, can use it as a component

Examples

Self service provisioning: INTERNET YES to


4033 and you get roaming for one month for 3
euro

Game and ringtones requesting and paying

On twitter you can receive SMS alerts from


friends or post tweets

Notifications when making a purchase with the


credit card.

Mobile Websites

A website designed specifically for


mobile devices

Simple architecture, presentation


and navigation links

Mobile websites are typically


informational

Easy to create but fail to display


consistently across multiple web
browsers

Is becoming increasingly used

Better browsers are stimulating


the development of new sites.

Mobile Web Widgets

Introduced in response to the poor


experience provided by the mobile
web in the past

Web application that must be


downloaded and installed

The difference between widgets and


mobile applications that run in the
browser is subtle

They require a specific widget platform on the device

They are built with (proprietary) techniques that


extend web standards

They are used to support short, task-based operations

Examples: Java ODP, Web Runtimes.

Mobile Web Applications

They do not need to be installed or


compiled for the target device

Developed using XHTM, CSS and


JavaScript

They provide application-like


experience they do not use the
drill-down or page metaphors

The challenge is device


fragmentation

Rendering of CSS2 is inconsistent,


support for JavaScript simple

Only recently some phones (iPhone)


are supporting better them.

Native Applications

Platform applications they are


developed and compiled for each
mobile platform

The most common native


application platform is Java ME

Other Smartphone programming


languages are C, C++ (Symbian),
Objective-C (iPhone), Java
(Android)

You must decide the platform

Native applications must be


tested, certificated and distributed

They can work off-line, access the


file system, use the camera, the
music player, etc.

Consumer Devices and Embedded Systems

One solution does not fit all: consumer devices are


highly specialized for the intended use
Diverse range of existing applications and features
Users/developers want flexibility: they want to choose
what they want to use and what they dont
The performance of a consumer device is not just measured
by the computing power but how well it serves the intended
usage
Factors differentiating consumer devices from desktop
computers
Small screen size
Different usage models: stylus, tiny keypad, small
QWERTY keyboards, voice operated
Mobility: in traffic, while skiing, etc.
Limited network bandwidth with intermittent
connections.

J2ME Core Concepts

J2ME
Libraries
Java Language
Java Virtual Machine

Host Operating System

Configuration

J2ME
Profile

Profiles

Optional Packages

Configuration

A configuration is a complete Java runtime environment:

Java virtual machine (VM) to execute Java

Set of core Java runtime classes

Interface to the underlying system

Defines a minimum platform for a horizontal category or


grouping of devices with similar requirements on memory
and processing power

A J2ME application is written for a particular profile and


a profile is based upon or extends a particular
configuration

The CLDC/MIDP stack is based on the open source project


PhoneME at https://phoneme.dev.java.net/

CDC (Connected Device Configuration)

CDC (Connected Device Configuration): high-end


consumer devices (TV set-top boxes, Internet TV)
512KB of read-only-memory (ROM), 256 KB
of random access memory (RAM), minimum
32-bit processor
High bandwidth network connection
Full-featured Java2 virtual machine (CVM)
17 packages
Use for devices like Palms
Most of the core APIs are identical between
CDC and J2SE 1.3.1.
The main differences are in java.awt and the
omission of javax.swing

Configuration: CLDC

CLDC (Connected Limited Device Configuration): lowend consumer devices - cell phones, two-way pagers,
personal digital assistants (PDAs), organizers, home
appliances, and point of sale terminals
160 - 512 KB of total memory (160KB ROM and 32KB
RAM, minimum)
16-bit or 32-bit processor
Low power consumption and often operating with battery
power
Connectivity with limited bandwidth
Selected classes from: java.lang , java.io , java.util
Limited VM (called KVM):
NO Object finalization
NO JNI (Java Native Interface) or reflection
NO Thread groups or daemon threads
NO User Class loaders

Relationships between J2ME conf. and J2SE

J2SE
CDC

CLDC

Profile and Optional Packages

The profile adds classes to a configuration:

To fill in missing functionality

To support specific uses of a device

To address the specific demands of a vertical market


sector, e.g., cellular telephones, washing machines,
electronic toys

The Optional Packages are set of APIs that support


additional and common behaviors

Examples of optional packages:

Bluetooth Optional Package

JDBC Optional Package

File connection

Personal Information Management (PIM)

Location API

Profiles

Several profiles in various stages of development:


Mobile Information Device Profile (MIDP) - CLDCbased, used for running applications on cell phones and
interactive pagers with small screens, wireless HTTP
connectivity, and limited memory
Foundation Profile (FP) CDC-based, is a set of
Java APIs that support resource-constrained devices
without a standards-based GUI
Personal Basis Profile (PBP) CDC is a set of Java
APIs that support resource-constrained devices with a
standards-based GUI framework based on lightweight
components
Personal Profile (PP) - extends the PBP with
lightweight (AWT-derived) user interface
classes and a new application model with
applet support and heavyweight UI
classes (nokia 9300i)
Check on http://jcp.org/ the state of these specifications

Optional Packages for the Wireless Market

JSR 120: Wireless Messaging API


JSR 135: Mobile media API
JSR 172: J2ME Web Services Specification
JSR 177: Security and Trust Services
Specification
JSR 179: Location API for J2ME (many students
used that last year)
JSR 082: Bluetooth
JSR 075: PDA optional
JSR 184: Mobile 3D Graphics for J2ME
JSR 226: SVG Scalable Vector Graphics
JSR 190: Event Tracking API for J2ME
monitoring and tracking MIDlets

JTWI

JSR-185: Java Technology for Wireless Industry umbrella specification defined in 2003

MSA Mobile Service Architecture JSR248

Version 1.1.0b 18-August-2008


Only a few phones (8)
support the full MSA

Hardware Requirements: MIDP

Memory:

256Kb non-volatile for MIDP components (in


addition to the requirements of CLDC),

8Kb non-volatile for application created


persistent data,

128 Kb volatile for virtual machine run time

Display: 96x54, depth 1-bit, pixel shape 1:1

Input: either keypad, or keyboard, or touch


screen

Networking: two-way, intermittent, with limited


bandwidth

Sound: play tones.

Software Requirements: MIDP

Minimal kernel to manage the underlying


hardware (interrupts, exceptions, and minimal
scheduling)

Mechanism for reading and writing from nonvolatile memory (to support persistence API)

Read and write access to devices' wireless


networking (to support networking API)

A mechanism to time-stamping the records


written in the persistence storage

Support to write a bit-mapped graphic display

Mechanism to capture user input from keypad


or touch screen.

Security

Low-level security (virtual machine security):


ensure that the application running in the JVM
follows the semantic of the java prog. language
(malicious classes must not harm the device)
Class file verifier ensures that the bytecode:
cannot contain illegal instructions,
cannot be executed in an illegal order, and
cannot contain references to invalid memory
locations
Application security: Java application running
on the device can access only those libraries,
system resources, and components that the
device and Java environment allow to access.
Midlet can be downloaded from Internet and may not be
certified or signed

Malware detection in mobile phones

Mobile devices lack the processing


power to scan for large numbers
of signatures

Approach:

First shutting off non vital applications, such as an


e-mail app or a browser

Nothing should be running except the detection


software and the operating system itself

If malware is present and active, it will need to use


some RAM to execute instructions on the device

The central server contacts the detection software


to check to see if malware is using RAM by
measuring how much memory is available
http://www.technologyreview.com/computing/26093/

CLDC 1.1 and MIDP 2.0 packages


MIDP 2.0

CLDC 1.1

javax.microedition.lcdui

java.lang

javax.microedition.lcdui.game

java.lang.ref

javax.microedition.media

java.io

javax.microedition.media.control

java.util

javax.microedition.midlet

javax.microedition.io

javax.microedition.pki
javax.microedition.rms
Latest MIDP2.1 has minor differences with 2.0: making LCDUI layout
directive mandatory, javax.microedition.io.SocketConnection and
javax.microedition.io.HTTPConnection is no longer optional

Devices Evolution (Nokia)


6600 (2003)

MIDP 2.0
CLDC 1.0
Bluetooth API
(JSR-82 No OBEX)
Mobile Media API
(JSR-135)
Nokia UI API
Wireless Messaging API
(JSR-120)

N70 (2005)

MIDP 2.0
CLDC 1.1
Bluetooth API (JSR-82)
FileConnection and PIM API
(JSR-75)
JTWI (JSR-185)
Mobile 3D Graphics API
(JSR-184)
Mobile Media API
(JSR-135)
Nokia UI API
Web Services API
(JSR-172)
Wireless Messaging API
(JSR-120)

N95 (2007)

MIDP 2.0
CLDC 1.1
Advanced Multimedia
Supplements (JSR-234)
Bluetooth API (JSR-82)
FileConnection and PIM API
(JSR-75)
JTWI (JSR-185)
Location API (JSR-179)
Mobile 3D Graphics API
(JSR-184)
Mobile Media API (JSR-135)
Nokia UI API
Scalable 2D Vector Graphics API
(JSR-226)
Security and Trust Services API
(JSR-177)
SIP API (JSR-180)
Web Services API (JSR-172)
Wireless Messaging API
(JSR-205)

What device?

If you want to know what devices support what profile/


configuration/package go to the WTK3.0 and the select
"Tools>Device Database Search"

It is based on WURFL
The WURFL is an "ambitious" configuration file that
contains info about all known Wireless devices on earth
http://wurfl.sourceforge.net
Or go to http://www.forum.nokia.com/devices/

CLDC 1.1. Class Library

Classes that are a subset of standard J2SE:

java.lang.*, java.util.*, java.io.*,


java.lang.ref

A class with the same name and package


name as a J2SE class must be identical to or
a subset of the corresponding J2SE class

The classes cannot add any public or


protected methods or fields that are not
available in J2SE

Classes that are specific to CLDC

javax.microedition.io

CLDC Classes (subset of J2SE)

System Classes

Data Types Classes

java.lang.Object

java.lang.Boolean

java.lang.Class

java.lang.Byte

java.lang.Runtime

java.lang.Short

java.lang.System

java.lang.Integer

java.lang.Thread

java.lang.Long

java.lang.Runnable
(interface)

java.lang.Float

java.lang.Double

java.lang.String

java.lang.Character

java.lang.StringBuffer

Collection Classes

java.lang.Throwable

java.util.Vector

java.util.Stack

java.util.Hashtable

java.util.Enumeration
(interface)

New in CLDC1.1

CLDC Classes (subset of J2SE)

IO Classes

Calendar and Time Classes

java.io.InputStream

java.util.Calendar

java.io.OutputStream

java.util.Date

java.io.ByteArrayInputStream

java.util.TimeZone

java.io.ByteArrayOutputStrea
m

Utility classes

java.io.DataInput (interface)

java.util.Random

java.io.DataOutput (interface)

java.lang.Math

java.io.DataInputStream

java.io.DataOutputStream

java.io.Reader

Exception and Error


classes

java.io.Writer

See the specification!

java.io.InputStreamReader

java.io.OutputStreamWriter

http://jcp.org/en/jsr/detail?
id=139

java.io.PrintStream

CLDC Specific Classes: javax.microedition.io

The package java.net of JDK contains 31 classes and


interfaces and 8 exception classes

It is difficult (and not useful) to make all this


functionality fit in a small device with only few
hundreds Kbs of memory

There is a plethora of wireless technologies in use with


varying levels of sophistication, compatibility and
interoperability (GSM, TDMA, CDMA, WCDMA, UMTS, GPRS,
EDGE, ...)

J2ME standardization efforts is to define solutions that


can work effectively with all these network
technologies and standards

J2ME (in CLDC) defines a Generic Connection


Framework connect to Internet irrespectively to the
wireless communication technology.

Connection Interface Hierarchy


Connection

InputConnection

OutputConnection

StreamConnection

DatagramConnection

UPDDatagramConnection

CommConnection ContentConnection SocketConnection StreamConnectionNotifier

HttpConnection

HttpsConnection

SecureConnection

ServerSocketConnection

Summary

MIDlets The heart of J2ME

MIDP does not run in the regular Java fashion using: main
(), System.exit()
Instead, we use MIDlet applications - which are subclasses
of javax.microedition.midlet.MIDlet
The application must extend this class to allow the
application management software to control the MIDlet:
control the MIDlet installation
Inspect existing Java applications stored on the device
be able to retrieve properties from the application
descriptor
Select and launch Java applications; respond to a
request for state change
Delete existing applications
A CLDC system may allow multiple Java applications to
executes concurrently (MIDP2.1) or restrict to one
application at a time (MIDP2.0).

MIDP Application Lifecycle

Active

Destroyed

destroyApp

Pause
startApp

constructor

destroyApp

MIDlets move from state to state in the lifecycle it


is the application manager (AM) or the midlet that
changes the state
Pause: after the constructor
pauseApp() called by AM or the midlet: signals
the MIDlet to enter the paused state
notifyPaused(): notifies the AM that the MIDlet
does not want to be active and has entered the
Paused state
Active
The AM has called startApp()
The midlet has called resumeRequest(): indicate
that it is interested in entering the active state
Destroyed
The AM or the midlet has called destroyApp():
signals the MIDlet to terminate and enter the
destroyed state
notifyDestroyed(): the midlet notifies the AM
that has entered the destroyed state.

pauseApp

MIDlet Suite

One or more MIDlets are packaged together into a MIDlet


suite, composed of:

JAR (Java archive) file

Contains resource files (e.g. an image) used by the


MIDlets and a manifest file

JAD (Java Application Descriptor) file

Contains Java classes for each MIDlet in the suite


and Java classes that are shared between MIDlets

Contains a predefined set of attributes that allows the


device application management software to identify,
retrieve, and install the MIDlets
Can be modified after packaging (and signing)

Eventually the JAR / JAD files are uploaded to the device


in order to run the application.

Wireless Development Tutorial Part I

What do we need
Java Platform, Standard Edition version 1.5 or
higher
Sun Java Micro Edition SDK This is a package of
tools for building and testing MIDlets
Text editor. This can be something as
rudimentary as Notepad (on Windows) or
something more elaborate (IDE environment as
NetBeans)
Following example is from
http://developers.sun.com/techtopics/mobility/
midp/articles/wtoolkit/
http://developers.sun.com/techtopics/mobility/
midp/articles/tutorial2/

Java ME SDK

Download the Java ME SDK 3.0 from


www.oracle.com/technetwork/java/javame/

Execute the installation file

There is a very good user guide

Project

Java ME SDK works with projects, where the end


result of each project is one MIDlet suite

Uncheck
this
2

HelloWorld MIDlet
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HelloMIDlet
extends MIDlet
implements CommandListener {
private Form mMainForm;
public HelloMIDlet() {
mMainForm = new Form("HelloMIDlet");
mMainForm.append(new StringItem(null, "Hello, MIDP!"));
mMainForm.addCommand(new Command("Exit", Command.EXIT, 0));
mMainForm.setCommandListener(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(mMainForm);
}

public void pauseApp() {}


public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
code

Hello World

Right click on the project and select New ->


MIDlet

Input the midlet name (class) and the click on


finish

Write the Code and Build

Copy the code in the generated file

Click here to build - or right click on the


project and select build

Running

Click on the Run button

You should see a phone


emulator

The emulator is showing a list


of MIDlets if there are more
than one otherwise it starts
the uniqu MIDlet

1) Build

What happens when you press the Build button?

The toolkit finds all the .java files in the src directory of
your project and 1) compiles them

Source files must be compiled in a MIDP environment


rather than a J2SE 5.0 environment

For instance a MIDlet that uses the java.lang.System


class: this class has different APIs in J2SE 5.0 and MIDP

When the toolkit compiles your MIDlet class it uses the


MIDP java.lang.System, not J2SE 5.0 version of the
class

You could make this selection yourself (if you installed


the MIDP reference implementation), using the
command javac and the -bootclasspath option

javac bootclasspath hellomidlet.java

2) Preverifying Class Files

The toolkit performs an initial verification at


build time (preverifying)

The device's runtime system performs a second


verification when it loads the classes

Certain checks are performed and the class file


is modified in such a way that the second-step
(runtime) can be easily handled

If a class file has not preverified it is rejected

You could perform the first verification yourself


using the command line preverify tool.

3) JARing

Finally, MIDlets are bundled into MIDlet suites for


distribution to actual devices 3) package

Bundling entails JARing the MIDlet suite class files


and the resource files, and putting some extra
information in the JAR manifest

Finally the files are 4) deployed on the device

The above steps are not required for running the


application in the Wireless Toolkit (actually
WTK3.0 always build a package)

But are required if you want to deploy the MIDlet


suit on a mobile device.

Deploying MIDlets

MIDlets can be deployed on a phone in two ways:

Transfer the jar and jad files to the phone from


the computer via an external connection:
serial cable, USB cable, IRDA, Bluetooth

Over the Air (OTA) provisioning: download


the midlet suite from a server

Installation is specific to the device!

Check the documentation of your device to see


how to install a MIDlet suite

More on these topics in the LABS!

Manifest Information

Every JAR includes a manifest file META-INF


\MANIFEST.MF
MIDlet-1: Hellosuite, Hellosuite.png, HelloMIDlet
MIDlet-2: HitMIDlet, , HitMIDlet
MIDlet-Name: Hellosuite
MIDlet-Vendor: Unknown
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0

It describes the content of the archive


It may contain extra information that is important
to the MIDP runtime environment (e.g. a URL to
connect).

MIDlet Suite Descriptor

Before a midlet can be deployed an additional file


is required: an application description, a .jad file

The .jad file contains a lot of the same


information thats in the manifest file

The application descriptors contains information


that help the device and/or the user to decide
whether or not to load a MIDlet suite

It can be downloaded and examined before


downloading the .jar

Useful in OTA provisioning the server returned


MIME type for the .jad file must be text/
vdn.sun.j2me.app-descriptor

Hellosuite.jad
HitMIDlet.URL: http://localhost:8080/midp/hits
MIDlet-1: Hellosuite, Hellosuite.png, HelloMIDlet
MIDlet-2: HitMIDlet, , HitMIDlet
MIDlet-Jar-Size: 3016
MIDlet-Jar-URL: Hellosuite.jar
MIDlet-Name: Hellosuite
MIDlet-Vendor: Unknown
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0

Connection with a Servlet

Install NetBeans

Remember at the beginning of the installation to


choose customize installation and deselect
GlassFish and select Tomcat

We need to develop simple Web applications


based on servlets

Create a new java web project with the servlet


shown in the next slide

HitServlet
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

code

public class HitServlet extends HttpServlet {


private int mCount;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String message = "Hits: " + ++mCount;
response.setContentType("text/plain");
response.setContentLength(message.length());
PrintWriter out = response.getWriter();
out.println(message);
}
}

MIDLET
import
import
import
import

java.io.*;
javax.microedition.io.*;
javax.microedition.lcdui.*;
javax.microedition.midlet.*;

public class HitMIDlet


extends MIDlet
implements CommandListener {
private Display mDisplay;
private Form mMainForm;
private StringItem mMessageItem;
private Command mExitCommand, mConnectCommand;
public HitMIDlet() {
mMainForm = new Form("HitMIDlet");
mMessageItem = new StringItem(null, "");
mExitCommand = new Command("Exit", Command.EXIT, 0);
mConnectCommand = new Command("Connect",
Command.SCREEN, 0);
mMainForm.append(mMessageItem);
mMainForm.addCommand(mExitCommand);
mMainForm.addCommand(mConnectCommand);
mMainForm.setCommandListener(this);
}

code

MIDLET cont.
public void startApp() {
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mMainForm);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
if (c == mExitCommand)
notifyDestroyed();
else if (c == mConnectCommand) {
Form waitForm = new Form("Waiting...");
mDisplay.setCurrent(waitForm);
Thread t = new Thread() {
public void run() {
connect();
}
};
t.start();
}
}

MIDLEt cont
private void connect() {
HttpConnection hc = null;
InputStream in = null;
String url = getAppProperty("HitMIDlet.URL");
try {
hc = (HttpConnection)Connector.open(url);
in = hc.openInputStream();
int contentLength = (int)hc.getLength();
byte[] raw = new byte[contentLength];
int length = in.read(raw);
in.close();
hc.close();
// Show the response to the user.
String s = new String(raw, 0, length);
mMessageItem.setText(s);
}
catch (IOException ioe) {
mMessageItem.setText(ioe.toString());
}
mDisplay.setCurrent(mMainForm);
}
}

MIDlet Properties

Attributes that have meaning in a MIDlet can be added to


the manifest and/or the application descriptor files

It is more convenient to add an attribute to the application


descriptor it may be changed without touching the
application files (user defined attributes only in JAD)

If an attribute is listed in both files the value in the


application descriptor will be used

A MIDlet can retrieve the values of these attributes using


getAppProperty()

Example:

HitMIDlet.URL: http://localhost:8080/midp/hits in the


Hellosuite.jad

String url = getAppProperty(HitMIDlet.URL) // in the


code

Add an Attribute to a Suite

Add this property only to the JAD

Running

After 4 clicks on
the connect
command

MIDP 3.0 (still a JSR -complete)

JSR 271: Mobile Information Device Profile 3


Enable multiple concurrent MIDlets in one VM
Specify proper firewalling, runtime behaviors, and lifecycle management
issues for MIDlets
Enable background MIDlets (e.g. UI-less)
Enable ?auto-launched? MIDlets (e.g. started at platform boot time)
Enable inter-MIDlet communications
Enable shared libraries for MIDlets
Improve UI expressability and extensibility
Better support for devices with larger displays
Enable MIDlets to draw to secondary display(s)
Enable richer and higher performance games
Secure RMS stores
Removable/remote RMS stores
IPv6
Multiple network interfaces per device
Specify standard ways for doing MIDlet provisioning through other means
(e.g. OMA (SyncML) DM/DS, Bluetooth, removable media, MMS, JSR-232,
etc.)
Extensive device capabilities query
Localization & Internationalization

http://java.sun.com/developer/technicalArticles/javame/midp3_enhance/

Exercises

Install Java ME SDK and NetBeans

Follow the slides and install, compile, and run the two
midlets: HelloMIDlet.java, HitMIDlet.java (the code is
on the course web site)

First install the two midlets in Java SDK and then in


NetBeans

Write a MIDlet that displays the current date and time


use the HelloMIDlet.java code and the class
Calendar (consult the MIDP API in your J2ME SDK
install directory or in Netbeans)

Write a new MIDlet that asks a servlet to return the


IPAddress of the server, the name of the student, and
a timestamp (use the Java classes InetAddress and
Calendar).

You might also like