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

Java 2 Platform, Micro Edition (J2ME) : Abhijit Raut Archana

Uploaded by

Abhijit Raut
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
439 views

Java 2 Platform, Micro Edition (J2ME) : Abhijit Raut Archana

Uploaded by

Abhijit Raut
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 70

Java 2 Platform, Micro Edition

(J2ME)
Abhijit Raut
Archana

J2ME 1
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 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 3
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 4
?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 5
J2ME 6
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 Java2 Java2


Standard Edition Enterprise Edition Micro Edition
(J2SE™) (J2EE™) (J2ME™)

Standard desktop & Heavy duty server Small & memory


workstation applications systems constrained devices

J2ME 9
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
fewer classes. J2SE

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

Profiles
J2ME
 Minimum platform Profile
required for a
group of devices
J2ME
 Profile Libraries

Configuration
 Addresses specific Java Language
needs of a certain
device family 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
Configuration

CLDC
CLDC CDC
CDC

Connected Limited Connected Device


Device Configuration Configuration

J2ME 17
CLDC vs. CDC
 CLDC  CDC
 For very constrained  2 MB or more
devices memory for Java
 160 - 512 KB of total platform
memory  32-bit processor
 16-bit or 32-bit  High bandwidth
processor network connection,
 Low power most often using
consumption and TCP/IP
often operating with
battery power
 Connectivity with
limited bandwidth
J2ME 18
CLDC vs. CDC - VM
 Features missing in  The CDC supports a
the CLDC VM: complete, full-
featured Java 2
 Floating point types virtual machine
 Object finalization
 JNI or reflection
 Thread groups or
daemon threads
 User Class loaders
 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  The CDC includes
classes from: 17 packages
 java.lang  Includes more
 java.io classes even in the
 java.util shared packages
 Only selected
classes from each
package are
included

J2ME 21
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
Profile

MIDP
MIDP PDAP
PDAP FP
FP PBP
PBP PP
PP

Mobile Personal Foundation Personal Personal


Information Digital Profile Basis Profile Profile
Device Assistant
Profile 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 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 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 Item’s 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 sun’s 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 project’s name and the MIDlet’s
class name.
 New directories will automatically be created.

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

source files J2ME/apps/{proj}/src

external class libraries, (JAR or


J2ME/apps/lib
ZIP) for all KToolbar projects.
J2ME 66
And then what?
 Choose the target platform
 Write
JTWIyour code
- conforms to Java Technology for the Wireless
Industry (JSR-185).
 Save
MIDP1.0 - includes MIDP 1.0 and CLDC 1.0
Custom - user defined settings, you can select project
 Build
profile, configurations and various APIs.
(Compile + Preverify)
 Run

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

You might also like