76
Click to add text J2ME 1 Java Platform, Micro Edition (J2ME)

J2 me 1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: J2 me 1

Click to add text

J2ME 1

Java Platform, Micro Edition (J2ME)

Page 2: J2 me 1

J2ME 2

Contents

J2ME:

Why?

What?

Who?J2ME core.InstallationDemo

Page 3: J2 me 1

J2ME 3

Introduction

Why? – To have the ability to program to

day to day devices such as:cell phonessmart cardspersonal organizers , palmtops

What? – A java base platform for such customizations.

Who? Sun!!!, But also vendors like Nokia , …

Page 4: J2 me 1

J2ME 4

Java? – J2ME Java – “write once run anywhere” But:

Different devices have different requirements. Those devices doesn’t have the same environment as regular

computers (standard desktop), the constrains we have: Limited memory and processor. Small screen sizes. Alternative input methods.

One platform (solution) cannot address all the market segments (web server, video games etc.)

Users/developers want flexibility. They want to choose what they want to use and what they don’t.

Sun decided to develop a special edition of Java – J2ME (Java 2 Micro Edition).

Page 5: J2 me 1

Features

•Robust •Flexible environment ,•Secure ,•built-in network protocols•supports for networked •offline applications.

Page 6: J2 me 1

J2ME 6

Java Editions

The Java 2 Platform is split into three editions: Java 2 Standard Edition (J2SE) - Desktop-based applications. Java 2 Enterprise Edition (J2EE) - Server-based applications. Java 2 Micro Edition (J2ME) – For handheld and embedded

devices. Each edition provides a complete environment for

running Java-based applications including the Java virtual machine (VM) and runtime classes.

What separates one edition from another, then, is primarily the set of class libraries that each edition defines.

you can think of J2ME as a subset of J2SE and J2SE as a subset of J2EE.

Page 7: J2 me 1

J2ME 7

What will we know.

Page 8: J2 me 1
Page 9: J2 me 1
Page 10: J2 me 1

Relative Features of various VMs

JVMJava Spec

Target DevicesProcessor

Memory

HotSpot VM

J2EEEnterprise ServersUp to 64 bitUpwards of 2 MB

HotSpot VM

J2SEWorkstations, Desktop Clients, Laptops

32-64 bitUpwards of 2MB

CVMJ2MEHigh end, consumer electronic and embedded devices like wireless communicators eg.

devices running Symbian's EPOC OS), high-end PDAs (e.g. devices

running embedded Linux or Windows CE), residential

gateways, automotive telematic systems, set-top boxes and

screen phones

32 bit2MB – 10 MBMin 512Kb ROMMin 256 kB RAM

Relatively constrained GUI

KVMJ2MECell Phones, Pagers, PDAs 16 bit160-512 kBHighly

constrained GUI

Card VMJava Card API

Smart Cards8 bit<32 kB

Page 11: J2 me 1

•Java platform for mobile devices and embedded systems

–Resource-constrained in terms of CPU, memory, energy

–Smallest footprint and smallest VM

•Differentiates between different types of resource-constrained devices

–Some with more resources, such as set up boxes, automobile navigation systems

–More constrained devices, such as cellular phones, PDAs, pagers

•Architecture has four layers

–JVM that sits on top of the operating system

–The configuration layer

–The profile layer

–Optional packages layer

Page 12: J2 me 1

Operating System

Java Virtual Machine

Optional Packages

Connected Limited Device Configuration

)CLDC(

Connected Device Configuration

)CDC(

Mobile Information Device Profile

)MIDP(Foundation Profile

Personal Profile

Optional Packages

Page 13: J2 me 1

Operating System

Java Virtual Machine

Optional Packages

Connected Limited Device Configuration

)CLDC(

Connected Device Configuration

)CDC(

Mobile Information Device Profile

)MIDP(Foundation Profile

Personal Profile

Optional Packages

Page 14: J2 me 1

Java Programming Language and VM features

•Floating point support

–Float and Double

•Calendar, Date, Timezone, and Thread objects redesigned to be more Java SE-compliant

•JVM the same as the one used in Java SE, except:

–No finalization of class instances

•Method Object.finalize() not included

–Exemption and error handling limitations

–User-defined class loaders are not supported

–Thread groups not supported; only individual threads

–Class file verification not supported

•Only offline preverification with stack maps

Page 15: J2 me 1

The Preverification Process

Page 16: J2 me 1

J2ME 16

J2ME Core Concepts

At the heart of Java 2 Micro Edition (J2ME) are three core concepts: configurations, profiles, and optional packages.

You can't write a J2ME application without understanding these concepts, because they determine the features of Java that you can use, which application programming interfaces (APIs) are available, and how your applications are packaged.

Page 17: J2 me 1
Page 18: J2 me 1

J2ME Delivers:

•Two Configurations:•CDC – Connected Device Configuration•CLDC – Connected, Limited Device Configuration

•Two major Profiles:•MIDP – Mobile Information Device Profile•Foundation Profile•Others Upcoming – PDA Profile, Personal Profile, RMI Profile,

Java Game Profile, MIDP_NextGen Profile

Page 19: J2 me 1

J2ME 19

J2ME Core Concepts Optional Packages

Profile: A collection of Java Classes

selected from one or more Java core, extension or vertical APIs. Classes are chosen to provide a complete solution for a specific vertical market

Configuration: A subset of the Java core

APIs and Java language functionality selected to provide a minimal Java platform for a set of vertical markets

J2ME Profile

J2MELibraries

Java Virtual Machine

Pro

file

sC

onfi

gura

tion

Host Operating System

Java Language

Page 20: J2 me 1

J2ME 20

J2ME Core Concepts Optional Packages

Profile: A collection of Java Classes

selected from one or more Java core, extension or vertical APIs. Classes are chosen to provide a complete solution for a specific vertical market

Configuration: A subset of the Java core

APIs and Java language functionality selected to provide a minimal Java platform for a set of vertical markets

J2ME Profile

J2MELibraries

Java Virtual Machine

Pro

file

sC

onfi

gura

tion

Host Operating System

Java Language

Page 21: J2 me 1

Java ME technology comprises with three elements as:

•Configuration•Profile•Optional package

Page 22: J2 me 1

J2ME 22

What it all means

There is no "J2ME application“:Configuration, profile and optional packages

should be chosen.

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

Page 23: J2 me 1

ME Configuration are 2 types

•J2ME Configuration are 2 types

•1 .Connected Limited Device Configuration (CLDC)

•2 .Connected Device Configuration (CDC)

Page 24: J2 me 1
Page 25: J2 me 1

Configurations-1: CDC

•CDC is based on CVM

•The CVM is a full-featured, Java 2 Virtual Machine; designed for devices needing the functionality of the Java 2

VM feature set.

•The CDC is a configuration that could become interesting for mobile terminals as their capabilities increase

•CDC targets networked devices with relatively constrained Graphical user Interfaces.

•Basic packages: java.lang, java.util, java.net, java.io, java.text, java.security

Page 26: J2 me 1

Configurations-2: CLDC

•CLDC is based on KVM•Limitations w.r.t. J2SE:

•No support for JNI (Java Native Interface)•Limited bytecode verifier

•Limited support for internationalization•No support for object finalization

•No thread groups and daemon threads•Limited error handling

•Simplified sandbox security model•No certificates supported

•No refection: No Serialization, RMI or JINI

•Features like Floating point support and J2ME Web Services support added in latest CLDC v1.1

Page 27: J2 me 1

J2ME 27

What it all means

The profile adds classes to a configuration: To fill in missing functionality To support specific uses of a device

The Optional Packages are set of APIs that support additional and common behaviors. Examples of optional packages :

Bluetooth Optional Package JDBC Optional Package

Page 28: J2 me 1

J2ME 28

Configuration

There are 2 basic configurations.

The superset:CDC (Connected Device Configuration):

2 MB or more memory for Java platform.32-bit processor.High bandwidth network connection. full-featured Java 2 virtual machine (CVM).17 packages.Use for devices like Palms.

Page 29: J2 me 1

•CLDC is a configuration for small devices. Connected Limited Device Configuration is designed in such a way that the devices with limited resources can run on Java platform, limited resources specifies that limited memory, processing power, and graphical capabilities.

•It uses KVM•Ex: pagers, cell phones, etc:

Page 30: J2 me 1

• 160 - 512 KB of total memory• 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

Page 31: J2 me 1

J2ME 32

Handling I/O in CDC / CLDC

The CLDC has defined a new set of APIs for I/O called the Generic Connection Framework.

The GCF, part of the new javax.microedition.io package, defines interfaces for the different kinds of I/O that are possible.

Since the CDC is a superset of the CLDC, it includes the GCF.

CDC also requires GCF support for two specific connection types: files and datagrams since it includes the relevant classes from java.io and java.net packages.

Page 32: J2 me 1

CDC 

•CDC is a configuration for more capable devices and smart phones .

•Connected Device Configurationis designed for for example:

• smart phones, embedded device can run on Java Platform.Minimum

•It uses JVM

Page 33: J2 me 1

J2ME 34

Configuration - What it all means

CDC-based profiles make development simpler due to J2SE-like APIs, but don’t suit the low-end devices.

CLDC-based profiles makes the development task harder, especially when trying to shrink the size of the application to run on many of the small devices.

Page 34: J2 me 1

J2ME 35

Profile

Several profiles in various stages of development: Mobile Information Device Profile (MIDP) - CLDC-based,

used for running applications on cellphones and interactive pagers with small screens, wireless HTTP connectivity, and limited memory.

Personal Digital Assistant Profile (PDAP) – CLDC-based, extends MIDP with additional classes and features for more powerful handheld devices.

Foundation Profile (FP) – CDC-based, extends the CDC with additional J2SE classes.

Personal Basis Profile (PBP) - extends the FP with lightweight (AWT-derived) user interface classes and a new application model.

Personal Profile extends the PBP with applet support and heavyweight UI classes.

Page 35: J2 me 1

• The profile consists of java classes to a configuration:

• To fill in missing functionality • To support specific uses of a device

Page 36: J2 me 1

J2ME 37

Profile

The CLDC-profile used today:

MIDP (Mobile Information Device Profile) The MIDP defines a platform for dynamically

and securely deploying optimized, graphical, networked applications.

The MIDP specification was defined through the Java Community Process (JCP) by players like: Motorola, Nokia, Ericsson, Research in Motion, and Symbian.

Page 37: J2 me 1

J2ME 38

MIDP – MID Profile

MIDP is targeted at a class of devices known as mobile information devices (MIDs).

Minimal characteristics of MIDs:Enough memory to run MIDP applications Display of at least 96 X 56 pixels, either

monochrome or colorA keypad, keyboard, or touch screenTwo-way wireless networking capability

Page 38: J2 me 1

MIDP (Mobile Information Device Profile)

• The MIDP defines a platform for dynamically and securely deploying optimized, graphical, networked applications.

• The MIDP specification was defined through the Java Community Process (JCP) by players like: Motorola, Nokia, Ericsson, Research in Motion, and Symbian.

Page 39: J2 me 1

J2ME 40

MIDP - Specification

There are two versions of the MIDP:

MIDP 1.0 - is the original specification, provides core application functionality required by mobile applications, including basic user interface and network security

MIDP 2.0 - is a revised version of the MIDP 1.0. Have new features include an enhanced user interface, multimedia and game functionality, more extensive connectivity, over-the-air provisioning, and end-to-end security.

Page 40: J2 me 1

J2ME 41

MIDlets – The heart of J2ME…

MIDP does not run in the “regular” Java fashion. using: Main() , System.exit().

Instead, we use MIDlet aplications - which are subclasses of: javax.microedition.midlet.MIDlet that is defined by MIDP.

The MIDlet class allows the application management software to: control the MIDlet be able to retrieve properties from the application

descriptor notify and request state changes

Page 41: J2 me 1

J2ME 42

MIDlets – The heart of J2ME…

The extending class is the main class of the application.

The MIDlet class defines abstract methods that the main class implements (for example: startApp(), destroyApp(), notifyDestroyed()).

Page 42: J2 me 1

J2ME 43

MIDlet Suite

One or more MIDlets are packaged together into a MIDlet suite, composed of: JAR (Java archive) file - The JAR file contains Java

classes for each MIDlet in the suite and Java classes that are shared between MIDlets. The JAR file also contains resource files used by the MIDlets and a manifest file.

JAD (Java Application Descriptor) file - This file contains a predefined set of attributes that allows the device application management software to identify, retrieve, and install the MIDlets

Eventually the JAR / JAD files are upload to the machine in order to run the application.

Page 43: J2 me 1

J2ME 44

Configuration + Profile

When the Java 2 Platform, Micro Edition (J2ME) was first introduced, only one configuration, the Connected Limited Device Configuration (CLDC), and one profile, the Mobile Information Device Profile (MIDP) had been defined as formal specifications.

Today, there are nearly forty J2ME-related specifications at various stages in the JCP, and many of these specifications define optional packages instead of configurations or profiles.

Page 44: J2 me 1

J2ME 45

So what is an optional package?

An optional package is also a set of APIs, but unlike a profile, it does not define a complete application environment.

An optional package is always used in conjunction with a configuration or a profile. It extends the runtime environment to support device capabilities that are not universal enough to be defined as part of a profile or that need to be shared by different profiles.

Examples: RMI Optional Package (Remote Method Invocation). Wireless Messaging API. Mobile Media API

Page 45: J2 me 1

J2ME 46

Extenders

There are some companies that created different suite for J2ME.

Those companies are “competing partners” with Sun (- they buy the KVM from Sun).

Example:Nokia’s Developer's Suite:

provides tools for creating application classes and packages, signing the application, and deploying it to a device. It is also an essential tool for managing, configuring, and running emulators for various Nokia Platform.

Page 46: J2 me 1

J2ME 47

What we know so far:

Page 47: J2 me 1

J2ME 48

summary Java 2 Micro Edition defines a small footprint version of

Java for resource constrained devices. Specifically, code space of <512K and RAM (for java heap) of 64KBytes or more.

The Connected Limited Device Configuration (CLDC) defines the minimum required complement of Java technology components and libraries for small connected devices. Java language and virtual machine features, core libraries, input/output, networking and security are the primary topics addressed by this specification.

The Mobile Information Device Profile (MIDP) defines an additional set of API’s on top of the Connected Limited Device Configuration (CLDC) for small handheld devices such as PDA’s and cellular phones. These include UI, Persistence, Networking, Timers, and Application Lifecycle.

Page 48: J2 me 1

J2ME 49

Page 49: J2 me 1

J2ME 50

Requirements

Java2 SE SDK 1.4.x (Can be downloaded at: http://java.sun.com/j2se/1.4.2/download.html)

The Eclipse IDE 3.x (Can be downloaded at: http://www.eclipse.org/downloads/index.php)

A supported wireless toolkit (A List of supported toolkits can be found at: http://eclipseme.org/docs/support_wtk.html)

Any kind of Emulator EclipseME 1.x.x

version 1.1.0 (supports Eclipse 3.1 only) version 1.0.1 (either Eclipse 3.0 or Eclipse 3.1 are

supported) prior 1.0.0 (support Eclipse 3.0 only)

Page 50: J2 me 1

•Minimum requirements for hardware: •Hard Disk 100 MB•RAM 128 MB•CPU 800 MHz Pentium III

Page 51: J2 me 1

J2ME 52

Installation

Verify J2SE SDK is installed on your system (1.4.2 and later is preferable)

Verify Eclipse 3.0 or later is installed on your system Install a Wireless Toolkit

J2ME Wireless Toolkit 2.2 + Patch (Can be downloaded at: http://java.sun.com/products/sjwtoolkit/download-2_2.html)

Nokia S40 DP20 SDK 6230i 1.0 (Can be downloaded at: http://forum.nokia.com) install either integrated with J2ME WT or as Standalone

Install an Emulator Install EclipseME

Page 52: J2 me 1

J2ME 53

Verify Plug In installation

If the J2ME plug-in is properly installed, there will be a J2ME entry in the Window / Preferences dialog

Page 53: J2 me 1

J2ME 54

Select the Preferences menu item from Eclipse's Window menu.

Expand the J2ME item in the pane to the left and click on Platform Components.

Verify that the Wireless Toolkits appears

If not right click on the Wireless Toolkit and add the root directory.

Verify Wireless Toolkit Installed

Page 54: J2 me 1

J2ME 55

Create New Midlet Suite

Create a new project File -> new -> Project

Page 55: J2 me 1

J2ME 56

Project properties

Give a name to the project and Select the location on the disk

Page 56: J2 me 1

J2ME 57

Select Wireless Toolkit

Select the Wireless Toolkit you wish to work with

Page 57: J2 me 1

J2ME 58

Creating a new MIDlet

On the ToolBar Select File -> New -> Other

Page 58: J2 me 1

J2ME 59

MIDlet Properties

Select a Name for the Midlet, Superclass and implemented interfaces.

Page 59: J2 me 1

J2ME 60

The MIDlet content

Page 60: J2 me 1

J2ME 61

Importing PackagesImporting MIDP

specific packages

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

Page 61: J2 me 1

J2ME 62

LCDUI

The UI API provides a set of features for implementation of user interfaces for MIDP applications.

The central abstraction of the MIDP's UI is a Displayable object, which encapsulates device-specific graphics rendering with user input. Only one Displayable may be visible at a time, and the user can see and interact with only contents of that Displayable.

The Screen class is a subclass of Displayable that takes care of all user interaction with high-level user interface component. The Screen subclasses handle rendering, interaction, traversal, and scrolling, with only higher-level events being passed on to the application.

Page 62: J2 me 1

J2ME 63

Superclass And InterfaceExtends MIDlet

Implements CommandListener

public class TestMIDlet extends MIDlet implements CommandListener {

Page 63: J2 me 1

J2ME 64

MIDlet API

Abstracts: protected abstract void startApp() –

Signals the MIDlet that it has entered the Active state

protected abstract void pauseApp() –

Signals the MIDlet to enter the Paused state protected abstract void destroyApp(boolean arg0) -  

Signals the MIDlet to terminate and enter the Destroyed state

Page 64: J2 me 1

J2ME 65

MIDlet APIInherited:

Int checkPermission(String permission)String getAppProperty(String key)Void notifyPaused() Boolean platformRequest(String URL)Void resumeRequest()Void notifyDestroyed() - Used by an MIDlet to

notify the application management software that it has entered into the Destroyed state.

Page 65: J2 me 1

J2ME 66

CommandListener API

This interface is used by applications which need to receive high-level events from the implementation.

public void commandAction(Command c, Displayable d) - Indicates that a command event has occurred on Displayable d

Page 66: J2 me 1

J2ME 67

The MIDlet content

Creating the form, adding

the Commands

public TestMIDlet() { mMainForm = new Form(“Ahalan"); mMainForm.append(new StringItem(null,

“First Message")); mMainForm.addCommand(new Command("Exit",

Command.EXIT, 0)); mMainForm.setCommandListener(this); }

Page 67: J2 me 1

J2ME 68

Form class

A Form is a Screen that contains an arbitrary mixture of items: images, read-only text fields, editable text fields, editable date fields, gauges, choice groups, and custom items.

In general, any subclass of the Item class may be contained within a form.

The implementation handles layout, traversal, and scrolling.

Page 68: J2 me 1

J2ME 69

Form and Item classes

Page 69: J2 me 1

J2ME 70

Test your code

Choose the target platform

Choose the desired Device (Emulator)

Run

Page 70: J2 me 1

J2ME 71

Choose your device

Page 71: J2 me 1

J2ME 72

Distribution to actual devices

Create a packagePlace your code somewhere on the net.Update .jad fileDownload the application to your mobileRun the application

Page 72: J2 me 1

J2ME 73

Page 73: J2 me 1

J2ME 74

The SMS server We have build a MIDlet that acts as an SMS server.

The MIDlet listens to incoming SMS events. If the SMS matches a predefined pattern, it is processed as a command.

We have defined a few sample commands: Add a contact to the device’s phonebook Flash the backlights Turn on vibrating mode

Many more option can be added. For example: A command that will order the phone to take a snapshot using

it’s built-in camera

Page 74: J2 me 1

J2ME 75

Nokia Connectivity Framework Nokia Connectivity Framework (NCF) is a tool, which

manages, configures and integrates products so that they can communicate with each other and with exterior integratable hardware or software.

NCF provides an integration platform for delivering content data in mobile development environment between the connected external software components.

For example, phone emulators, content development tools, software development tools, real time server emulators and server emulators.

With the aid of NCF a user can construct, maintain, modify and use development environments that support different technologies, formats, and versions.

Page 75: J2 me 1

J2ME 76

Nokia Connectivity Framework

We will use the framework to display a demonstration of the SMS server MIDlet.

We will use the framework to simulate two phones and the two-way communication between them.

Page 76: J2 me 1

J2ME 77