Вы находитесь на странице: 1из 70

Java 2 Platform, Micro Edition (J2ME)

Masha Gutkhen Keren Gazit

J2ME

Contents
Whats J2ME? J2ME core concepts

Configurations (CLDC, CDC) Profiles (MIDP)

MIDlet, MIDlet Suite


Basic classes API Installation and using the Toolkit Demos!!!
J2ME 2

Introduction

Personalized and intelligent information appliances are necessities in our life today. Such appliances can be:

cell phones two-way pagers smart cards personal organizers palmtops

These appliances tend to be special-purpose, limited-resource, network-connected devices.

J2ME

Environment requirements

We need an environment which is adapted for constrained devices - devices that have limitations on what they can do when compared to standard desktop or server computers. The constraints are:

extremely limited memory small screen sizes alternative input methods slow processors

J2ME

So whats the solution?

Because of the vast need, Sun has decided to develop a special edition of Java - J2ME (Java 2 Micro Edition).

J2ME

J2ME

Java Editions
Different devices have different requirements and different expectations of Java. 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 do not.

J2ME 7

Java Editions
The Java 2 Platform is split into three editions. Each edition provides a complete environment for running Java-based applications, including the Java virtual machine (VM) and runtime classes. The three editions target different kinds of applications running on different kinds of devices.

J2ME 8

Java Editions
Java 2 Platform

Java2 Standard Edition (J2SE)

Java2 Enterprise Edition (J2EE)

Java2 Micro Edition (J2ME)

Standard desktop & workstation applications

Heavy duty server systems

Small & memory constrained devices

J2ME

Java Editions

Each edition defines different sets of class libraries. There are thousands of core J2SE runtime classes, taking up to 10-20 megabytes of space. J2EE J2ME-based devices have J2SE fewer classes.
J2ME

J2ME

10

PersonalJava and EmbeddedJava


J2ME is not the first attempt at adapting Java for constrained environments. PersonalJava

Uses the basic Java 1.1 runtime classes with a few features from Java 2. Implementation still requires a couple of megabytes of memory and a fast processor to run.

J2ME

11

PersonalJava and EmbeddedJava

EmbeddedJava
Makes every behavior of the JVM and the runtime classes optional - the implementor can choose exactly which classes and methods are required. The limitation: "write once, run anywhere".

J2ME

12

J2ME Core Concepts

Configuration

Minimum platform required for a group of devices


Addresses specific needs of a certain device family

J2ME Profile

Profile

J2ME Libraries Java Language Java Virtual Machine

Optional Packages
Host Operating System
J2ME 13

J2ME Core Concepts


J2ME is based on 3 core concepts: Configurations Profiles Optional packages

J2ME

14

Configurations

A configuration is a complete Java runtime environment, consisting of:


Java virtual machine (VM) to execute Java bytecode Native code to interface to the underlying system Set of core Java runtime classes

To use a configuration, a device must meet certain minimum requirements.


J2ME 15

Configurations
The set of core classes is normally quite small and must be enhanced with additional classes supplied by J2ME profiles or by configuration implementor. Configurations do not define any user interface classes.

J2ME

16

Configurations

Configuration
CLDC
Connected Limited Device Configuration

CDC
Connected Device Configuration

J2ME

17

CLDC vs. CDC

CLDC For very constrained devices 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

CDC 2 MB or more memory for Java platform 32-bit processor High bandwidth network connection, most often using TCP/IP

J2ME

18

CLDC vs. CDC - VM

Features missing in the CLDC VM:

Floating point types Object finalization JNI or reflection Thread groups or daemon threads User Class loaders

The CDC supports a complete, fullfeatured Java 2 virtual machine

Change in classfile verification preverification


J2ME 19

The KVM and CVM

KVM - Java virtual machines for the CLDC CVM - Java virtual machines for the CDC Written specifically to work in the constrained environment of a handheld or embedded device and to be easily ported to different platforms. CLDC and CDC specifications do not require the use of the KVM or the CVM.

J2ME

20

CLDC vs. CDC J2SE Subset

The CLDC includes classes from:

java.lang java.io java.util

The CDC includes 17 packages Includes more classes even in the shared packages

Only selected classes from each package are included


21

J2ME

CLDC vs. CDC J2SE Subset

J2SE

CDC

CLDC

J2ME

22

Handling I/O
J2SE includes many classes for performing input and output. There are a large number of I/O classes and they tend to encapsulate I/O models that are not necessarily found on all devices. For example, some handheld devices do not have file systems. Socket support is not universal, either.

J2ME 23

Handling I/O in CLDC

The CLDC has define 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. The CLDC does not actually define any I/O implementations these are left to the profiles and/or the device vendor to define.

J2ME

24

GCF - example
import java.io.*; import javax.microedition.io.*;
StreamConnection conn = null; InputStream is = null; String url = "socket://somewhere.com:8909";

try {
conn = (StreamConnection) Connector.open( url ); is = conn.openInputStream(); .... // etc. etc.

}
J2ME 25

Handling I/O in CDC


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. The reason: CDC includes the relevant classes from java.io and java.net packages.

J2ME 26

J2ME Core Concepts


J2ME is based on 3 core concepts: Configurations Profiles Optional packages

J2ME

27

Profiles

Adds domain-specific classes to a configuration:


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

Most profiles define user interface classes for building interactive applications. To use a profile, the device must meet the minimum requirements of the underlying configuration and of the profile.
J2ME 28

Profiles

Profile MIDP
Mobile Information Device Profile

PDAP
Personal Digital Assistant Profile

FP
Foundation Profile

PBP
Personal Basis Profile

PP
Personal Profile

J2ME

29

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 color A keypad, keyboard, or touch screen Two-way wireless networking capability

J2ME 30

MIDP - Specification
There

are two versions of the MIDP:

MIDP

1.0 - released in September 2000. Many devices currently on the market support it. MIDP 2.0 - currently in proposed final draft form. No devices yet support it.

J2ME

31

MIDP - Specification

The MIDP adds APIs to the basic APIs defined by the CLDC. The new features include:

Support for application lifecycle management similar to the way applets are defined in J2SE. Persistent storage of data. HTTP-based network connectivity based on the CLDC's GCF. Simple user interface support, with enough flexibility to build games or business applications.

J2ME

32

MIDP - Specification

The MIDP specification is silent about a number of things:


No standard way to interface to the device's phonebook, in order to initiate voice calls. How MIDP applications are loaded onto a device and how they are activated or deactivated.

J2ME

33

MIDP Applications restrictions

Memory is a particularly scarce resource.

The early Motorola J2ME-enabled phones limited the size of an application to 50K. Some Nokia phones limit them to even less, about 30K.

MIDP 1.0 applications cannot share classes. Placing part of the application in a web or application server (as a servlet, typically) that the MIDP application calls is almost a requirement for anything serious.

J2ME

34

J2ME Core Concepts


J2ME is based on 3 core concepts: Configurations Profiles Optional packages

J2ME

35

Optional Packages
Set of APIs in support of additional, common behaviors. Have specific dependencies on a particular configuration and/or one or more profiles. Examples of optional packages :

RMI Optional Package Bluetooth Optional Package JDBC Optional Package

J2ME 36

What it all means

"J2ME application" is an ambiguous term. Configuration, profile and optional packages should be chosen. CDC-based profiles make development simpler due to J2SE-like APIs, but dont 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.
J2ME 37

J2ME

38

MIDlets The heart of J2ME


MIDP does not support the running of applications that use a static main method as their entry point, nor calling the System.exit method in order to terminate. Instead, we use a MIDlet, which is a MID Profile application.

J2ME

39

MIDlets The heart of J2ME

Every application must extend javax.microedition.midlet.MIDlet class to allow the application management software to:
control the MIDlet be able to retrieve properties from the application descriptor notify and request state changes

J2ME

40

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()).

J2ME

41

MIDlet Suite

One or more MIDlets are packaged together into a MIDlet suite, composed of:
JAR (Java archive) file JAD (Java Application Descriptor) file

All the user-defined classes and resources required by the suite's MIDlets must be in the JAR file.
J2ME 42

MIDlet Suite
The JAR file must also include a manifest that describe the MIDlets in the suite. The application descriptor (JAD) contains similar information, and is used by devices to obtain information about a MIDlet suite without having to download and install the MIDlet suite first.

J2ME 43

Creating a MIDlet

J2ME

44

Creating a MIDlet

Importing MIDP specific packages

import javax.microedition.lcdui.*; import javax.microedition.midlet.*;

J2ME

45

Creating a MIDlet
Extends MIDlet Implements CommandListener

public class HelloMIDlet extends MIDlet implements CommandListener {

J2ME

46

Creating a MIDlet
Creating the form, adding the Commands

public HelloMIDlet() { mMainForm = new Form("HelloMIDlet"); mMainForm.append(new StringItem(null, "Hello, Seminar Software Design!")); mMainForm.addCommand(new Command("Exit", Command.EXIT, 0)); mMainForm.setCommandListener(this); }

J2ME

47

Sample MIDP classes API


MIDlet Form Command

CommandListener ItemCommandListener

Item

J2ME

48

Sample classes API


MIDlet

Base class

Form Command
CommandListener ItemCommandListener

Item

J2ME

49

MIDlet class API


protected abstract void startApp() protected abstract void pauseApp() protected abstract void destroyApp(boolean unconditional) public final String getAppProperty(String key) public final void notifyDestroyed()

J2ME

50

Sample classes API

MIDlet

Form

Command
CommandListener ItemCommandListener

Item

J2ME

51

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.

J2ME

52

Form class API


Item

management

public

int append(Item item) public Item get(int itemNum)


Layout

public void setItemStateListener(ItemState Listener iListener)


J2ME 53

Sample classes API


MIDlet Form

Command CommandListener ItemCommadListener

Item

J2ME

54

Command class

The Command class represents the semantic meaning of an action. Command objects are presented in the user interface. The action itself is implemented in a CommandListener object. The CommandListener is associated with a Displayable or an Item. Once the Command is called the CommandListener is invoked, and the action is performed.
J2ME 55

Command class

Command label public String getLabel()

Command type public int getCommandType() Command priority public int getPriority()

J2ME

56

CommandListener class API


This object is a listener for Commands that are attached to a Displayable. public void commandAction(Command c, Displayable d)

J2ME

57

ItemCommandListener class API


When a command (attached to an Item) is invoked, the application is notified by having the commandAction() method called on the ItemCommandListener that had been set on the Item. public void commandAction(Command c, Item item)

J2ME 58

Sample classes API


MIDlet Form Command

CommandListener ItemCommandListener

Item

J2ME

59

Item class
A superclass for components that can be added to a Form. All Item objects have a label field Choose the Items layout, size, and appearance Attach Commands

J2ME

60

Item class API


public void setDefaultCommand(Command cmd) public void setItemCommandListener(ItemCom mandListener listener) public void notifyStateChanged() public int getPreferredWidth()

J2ME 61

Getting Started
1st

step: Download suns J2ME Wireless Toolkit from:


http://java.sun.com/products/j2mewtoolkit/d ownload-2_1.html

2nd

step: Make sure you have J2SE SDK installed 3rd step: Install the J2ME Toolkit.

J2ME

62

After the installation.

Shortcuts are available from the start menu.

New directories created

J2ME

63

Using KToolbar

J2ME

64

Creating a new Application


Press New Project. Enter the projects name and the MIDlets class name. New directories will automatically be created.

J2ME

65

Where to place your files?


J2ME/apps/{proj} J2ME/apps/{proj}/bin J2ME/apps/{proj}/lib source, resource, and binary files JAR, JAD, unpacked manifest files. external class libraries, (JAR or ZIP) for a specific project

J2ME/apps/{proj}/res
J2ME/apps/{proj}/src J2ME/apps/lib

resource files
source files

external class libraries, (JAR or ZIP) for all KToolbar projects.


J2ME 66

And then what?

Choose the target platform Write your code Save Build (Compile + Preverify) Run
JTWI - conforms to Java Technology for the Wireless Industry (JSR-185). MIDP1.0 - includes MIDP 1.0 and CLDC 1.0 Custom - user defined settings, you can select project profile, configurations and various APIs.
J2ME 67

Distribution to actual devices


Create a package Place your code somewhere on the net. Update .jad file Download the application to your mobile Start playing

J2ME

68

Some other issues


OTA provisioning Using Servlets Working with EclipseME Web services

J2ME

69

The END!

You can download all the demos JARs from: www.cs.huji.ac.il/~kerengaz/j2me/ Have Fun!!!

J2ME

70

Вам также может понравиться