J2ME 1 Java 2 Platform, Micro Edition (J2ME) Masha Gutkhen Keren Gazit.

70
J2ME 1 Java 2 Platform, Micro Edition (J2ME) Masha Gutkhen Keren Gazit
  • date post

    20-Dec-2015
  • Category

    Documents

  • view

    223
  • download

    2

Transcript of J2ME 1 Java 2 Platform, Micro Edition (J2ME) Masha Gutkhen Keren Gazit.

J2ME 1

Java 2 Platform, Micro Edition (J2ME)

Masha Gutkhen

Keren Gazit

J2ME 2

Contents

What’s J2ME? J2ME core concepts

Configurations (CLDC, CDC) Profiles (MIDP)

MIDlet, MIDlet Suite

Basic classes API

Installation and using the Toolkit

Demos!!!

J2ME 3

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 4

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 5

So – what’s the solution?

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

J2ME 6

J2ME 7

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 8

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 9

Java Editions

Java2 Standard Edition

(J2SE™)

Java2 Enterprise Edition

(J2EE™)

Java2 Micro Edition

(J2ME™)

Java 2 Platform

Standard desktop &workstation applications

Heavy duty serversystems

Small & memory constrained devices

J2ME 10

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.

J2ME-based devices have fewer classes.

J2ME

J2SE

J2EE

J2ME 11

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 12

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 13

J2ME Core Concepts

Configuration Minimum platform

required for a group of devices

Profile Addresses specific

needs of a certain device family

Optional Packages

J2ME Profile

J2MELibraries

Java Virtual Machine

Pro

file

sC

onfi

gura

tion

Host Operating System

Java Language

J2ME 14

J2ME Core Concepts

J2ME is based on 3 core concepts: Configurations ProfilesOptional packages

J2ME 15

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

systemSet of core Java runtime classes

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

J2ME 16

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 17

Configurations

ConfigurationConfiguration

CLDCCLDC CDCCDC

Connected Limited Device Configuration

Connected Device Configuration

J2ME 18

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 19

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

Change in classfile verification preverification

The CDC supports a complete, full-featured Java 2 virtual machine

J2ME 20

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 21

CLDC vs. CDC – J2SE Subset

The CLDC includes classes from: java.lang java.io java.util

Only selected classes from each package are included

The CDC includes 17 packages

Includes more classes even in the shared packages

J2ME 22

CLDC vs. CDC – J2SE Subset

CDC CLDCJ2SE

J2ME 23

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 24

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 25

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 26

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 27

J2ME Core Concepts

J2ME is based on 3 core concepts: Configurations ProfilesOptional packages

J2ME 28

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 29

Profiles

ProfileProfile

MIDPMIDP PDAPPDAP PPPPPBPPBPFPFP

Mobile Information

Device Profile

Personal Digital

Assistant Profile

Foundation Profile

Personal Basis Profile

Personal Profile

J2ME 30

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

J2ME 31

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 32

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 33

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 34

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 35

J2ME Core Concepts

J2ME is based on 3 core concepts: Configurations ProfilesOptional packages

J2ME 36

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 PackageJDBC Optional Package

J2ME 37

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

J2ME 38

J2ME 39

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 40

MIDlets – The heart of J2ME…

Every application must extend javax.microedition.midlet.MIDlet class to allow the application management software to:control the MIDletbe able to retrieve properties from the

application descriptor notify and request state changes

J2ME 41

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 42

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 43

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 44

Creating a MIDlet

J2ME 45

Creating a MIDlet Importing MIDP

specific packages

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

J2ME 46

Creating a MIDlet Extends MIDlet

Implements CommandListener

public class HelloMIDlet extends MIDlet implements CommandListener {

J2ME 47

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 48

Sample MIDP classes API

MIDletFormCommand

CommandListener ItemCommandListener

Item

J2ME 49

Sample classes API

MIDlet – Base classFormCommand

CommandListener ItemCommandListener

Item

J2ME 50

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 51

Sample classes API

MIDlet

FormCommand

CommandListener ItemCommandListener

Item

J2ME 52

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 53

Form class API

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

Layoutpublic void setItemStateListener(ItemStateListener iListener)

J2ME 54

Sample classes API

MIDletFormCommand

CommandListener ItemCommadListener

Item

J2ME 55

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 56

Command class

Command labelpublic String getLabel()

Command type public int getCommandType()

Command prioritypublic int getPriority()

J2ME 57

CommandListener class API

This object is a listener for Commands that are attached to a Displayable.

public void commandAction(Command c, Displayable d)

J2ME 58

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 59

Sample classes API

MIDletFormCommand

CommandListener ItemCommandListener

Item

J2ME 60

Item class

A superclass for components that can be added to a Form.

All Item objects have a label fieldChoose the Item’s layout, size, and

appearanceAttach Commands

J2ME 61

Item class API

public void setDefaultCommand(Command cmd)

public void setItemCommandListener(ItemCommandListener listener)

public void notifyStateChanged()

public int getPreferredWidth()

J2ME 62

Getting Started…

1st step: Download sun’s J2ME Wireless Toolkit from: http://java.sun.com/products/j2mewtoolkit/download-2_1.html

2nd step: Make sure you have J2SE SDK installed

3rd step: Install the J2ME Toolkit.

J2ME 63

After the installation.…

Shortcuts are available from the start menu.

New directories created

J2ME 64

Using KToolbar

J2ME 65

Creating a new Application

Press “New Project”. Enter the project’s name and the MIDlet’s

class name. New directories will automatically be created.

J2ME 66

Where to place your files?

J2ME/apps/{proj}source, resource, and binary files

J2ME/apps/{proj}/binJAR, JAD, unpacked manifest files.

J2ME/apps/{proj}/libexternal class libraries, (JAR or

ZIP) for a specific project

J2ME/apps/{proj}/resresource files

J2ME/apps/{proj}/srcsource files

J2ME/apps/libexternal class libraries, (JAR or ZIP) for all KToolbar projects.

J2ME 67

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.0Custom - user defined settings, you can select project profile, configurations and various APIs.

J2ME 68

Distribution to actual devices

Create a packagePlace your code somewhere on the net.Update .jad fileDownload the application to your mobileStart playing…

J2ME 69

Some other issues

OTA provisioningUsing ServletsWorking with EclipseMEWeb services

J2ME 70

The END!

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

Have Fun!!!