Java 2 Micro Edition ( Java2ME )

Transcription

Java 2 Micro Edition ( Java2ME )
Informatikseminar
J2ME – Java 2 Platform, Micro Edition
Mit Focus auf Geräte mit CLDC-Configuration und
MIDP2-Profil
Jochen Rink,
30.05.2005
1
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
no
Inhalt
okiao
• Java für Devices mit CLDC Geräte – Profil Æ Mobile
Phones
• Devices mit J2ME Unterstützung
• Aufbau von J2ME Java Applikationen, sog. MIDlets
• J2ME-Emulatoren
• Installation von MIDlets auf Mobile Phones
• Stand der Technik und Ausblick
• Alternative zu Java
2
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Java
Editions
J2M
E
Java Virtual Machines
Quelle: White Paper "CLDC HotSpot™ Implementation Virtual Machine "
3
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Sun Microsystems, 04.2004, Figure 2-1 - „The J2ME, CLDC and MIDP specifications"
Java 2 Platform Micro Edition
• J2ME wurde von Sun Microsystems mit Java 2 vorgestellt: http://java.sun.com/j2me/
• Einsatzmöglichkeiten von J2ME:
Mobile Phones, PDAs, Pager, SetTop Boxen, Fernseher…
• Speziell für Geräte mit Hardwareeinschränkungen
• J2ME ist nach diesen Geräten (Profile) unterteilt:
• CDC Connected Device Configuration
• CLDC Connected Limited Device Configuration
• CDC wird im Gegensatz zu CLDC kaum eingesetzt
• CLDC 1.0 wurde im März 2003 auf CLDC 1.1 erweitert
• J2ME steht quasi nur in Verbindung mit Mobile Phones
4
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
CDC / CLDC: Geräte-Konfiguration in J2ME
• Gerätegruppen zu sog. "Confgurations" zusammenfassen
• Zur Zeit stehen die Configurations "CDC" und "CLDC" zur Verfügung
• Unterteilung auf Basis von Hardwaremerkmalen
• Für jede Configuration werden spezielle Klassenbibliotheken bereitgestellt
• Die Configurations wurden vom JCP im Jahre 2000 definiert
http://jcp.org/en/home/index
• Auf den Configurations setzt die Profilebene auf
5
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Beispiele für Geräte mit CDC-Configuration
6
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Beispiele für Geräte mit CLDC-Configuration
7
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Anforderungen CDC vs. CLDC
Connected Device Configuration
Min. 32 Bit Prozzesor
Min. 2 MB ROM
„ Min.
2 MB RAM für VM und CDC
Klassen
„ Netzwerkverbindung darf drahtlos sein
„ Bandbreite unter 9600 Baud erlaubt
„ Verbindung wahlweise möglich
„ Stabile Verbindung nötig
„ Verbindung basiert auf TCP/IP
„ Compact Virtual Machine
Connected Limited Device Configuration
„
„
„
„
„
„
„
„
„
„
„
„
„
8
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Min. 160 KB ROM
Min. 32 KB RAM
Netzwerkverbindung darf drahtlos sein
Bandbreite unter 9600 Baud erlaubt
Verbindung wahlweise möglich
Verbindung basiert nicht auf TCP/IP
Instabile Verbindung möglich
Mobile Stromversorgung möglich
Minimales OS für Hardwarezugriffe
Keine getrennten Adressräume nötig
Kilo Virtual Machine
Schnittmenge der Klassen aus J2EE, J2SE, CDC
und CLDC
CDC
CLDC
J2SE
J2EE
9
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
©
NOKIA
Nokia
Mobile Phones
general
presentation
Klassenbibliotheken in CLDC
CLDC 1.0
• Java.io (InputStream, OutputStrem, Reader, Writer, ...)
• Java.lang (Class, Thread, System, String, Math, Integer, ...)
• Java.util (Vector, Stack, Date, Calendar, Hashtable, ...)
CLDC 1.1 Æ Erweiterung der CLDC 1.0
• Floating Point Arithmetic
• Exception Handling
10
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
J2ME Profile
• Profiles setzen auf den Configurations auf
• Profile sind die wichtigste Schicht für den Entwickler
• Legt die Mindestanforderung der J2ME fest
• Beispiele für Profile:
• MIDP – Mobile Information Device Profile
Erweiterung der CLDC für Mobile Phones
• PDA-Profile – Erweiterung der CLDC für PDAs
• IMP – Information Modul Profile
• Foundation Profile – Erweiterung der CDC als Basis für weitere Profile
11
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Mobile Information Device Profile - MIDP
• MIDP wurde speziell für Mobile Phones und Pager entwickelt
• MIDP ist herstellerunabhängig
• Alle MIDP-Geräte müssen die selben Schnittstellen implementieren
• MIDP ist der kleinste gemeinsame Nenner
• MIDP 1.0 ist im Jahre 2000 erschienen
• Im Moment ist das im Jahr 2003 erschienene MIDP 2.0 aktuell
12
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Klassenbibliotheken in MIDP 1.0
• javax.microedition.io
In- / Output über Streams
• javax.microedition.lcdui
UI-API
• javax.microedition.midlet
Die eigentliche Anwendung auf dem Phone
• javax.microedition.rms
Persistente Datenspeicherung
13
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Erweiterungen in MIDP 2.0
MIDP 2.0 erweitert die bestehende Bibliotheken aus MIDP 1.0:
• Verbessertes UI
• Bessere Multimediaunterstützung
• Erweiterte Connectivity ( https, datagram, socket )
• End to End Security (HTTPS, WTLS)
• Push – Ereignisse
• Over-The-Air - Installation Æ OTA
14
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Zusammenhang VM, Configuration, Profiles
Quelle: Buch "Java 2 MicroEdition "
dpunkt Verlag, Abbildung 2-1 - "Editionen, Konfigurationen, Profile und optionale Pakete "
15
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Einfachstes JAVA Programm
J2ME – Applikationen werden "MIDlet" genannt
public class FirstMIDlet extends javax.microedition.midlet.MIDlet
{
protected void startApp()
{
}
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0)
{
}
}
16
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
User Interfaces in MIDP 2.0
• Sehr einfaches User Interface
• User Interfaces sind in der Klasse javax.microedition.lcdui implementiert
• Klasse "Display" stellt den logischen Bildschirm dar
• Es gibt nur ein sog. "High-Level" und "Low-Level" UI
• High-Level-Api: Besteht aus vordefinierten Elemente
• Low-Level-Api: Keine vordefinierten Elemente
• Kein System.out.println( ) wie in der J2SE
17
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Zusammenhang der UI Klassen
Display
Displayable
Screen
Canvas
Alert
Gauge
Textfield
18
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
List
Form
StringItem
ChoiceGroup
Textbox
ImageItem
Form
• Die Form ist vergleichbar mit einem Panel in AWT / SWING
• Eine Form ist ein Screen
• Eine Form kann direkt auf ein Display hinzugefügt werden
• Auf einer Form können mehrere UI-Elemente dargestellt werden
• Funktionen wie Layout, Markieren, Selektieren sind bereits implementiert
• Es werden nur von Item abgeleitete Objekte auf einer Form dargestellt:
TextField, StrinItem, ImageItem, Gauge, ChoiceGroup…
19
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
TextField
• Einfache Benutzerinteraktion
• Muss auf eine Form geadded werden, da von Item abgeleitet
• Mehrere TextFields können in einer Form (gleichzeitig ) angezeigt werden
• Folgende Constraints sind bei der Erzeugung möglich:
• TextField.ANY
• TextField.EMAILADDR
• TextField.NUMERIC
• TextField.DECIMAL
• TextField.URL
• Die Constraints können noch weiter mit weiteren Eigenschaften
wie password, uneditable, sensitiv... Kombiniert werden
20
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
TextField
protected void startApp()
{
TextField tf1 = new TextField("TextField1", "text1", 10, TextField.ANY);
TextField tf2 = new TextField("TextField2", "123", 10, TextField.NUMERIC);
Form form = new Form("Textfields");
form.append(tf1);
form.append(tf2);
}
21
Display.getDisplay(this).setCurrent(form);
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
TextBox
• Zur Benutzerinteraktion
• Zugriff auf Phonebook möglich
• Folgende Constraints sind bei der Erzeugung möglich:
• TextField.ANY
• TextField.EMAILADDR
• TextField.NUMERIC
• TextField.DECIMAL
• TextField.URL
• Die Constraints können noch weiter mit weiteren Eigenschaften
wie password, uneditable, sensitiv... Kombiniert werden
• Identisch zum TextField aber von Screen abgeleitet
ÆKann ohne Form auf das Display gesetzt werden
22
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
TextBox
protected void startApp( )
{
String s = "Enter alert headline";
TextBox tb = new TextBox("AlertHeadline", s, 256, TextField.ANY);
Display.getDisplay(this).setCurrent(tb);
…
23
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Alert
…
String alertHeadline = tb.getString();
Alert alert = new Alert(alertHeadline, "Alert Message", null, AlertType.INFO);
}
24
Display.getDisplay(this).setCurrent(alert);
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Alert
• "Popup Fenster"
• Statusinformationen für den Benutzer
• Ist bei Aufruf im Vordergrund
• Wird direkt an das Display übergeben werden
• alert.setTimeout(10);
alert.setTimeout(Alert.FOREVER);
• Folgende AlertTypes sind definiert:
• AlertType.ERROR
• AlertType.INFO
• AlertType.CONFIRMATION
• AlertType.WARNING
25
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Interface CommanListener / Class Commands
public class AlertMidlet extends MIDlet implements CommandListener
{
…
private Command exit
private Command showalert
= new Command("Exit", Command.EXIT, 0);
= new Command("Show", Command.OK, 0);
tb = new TextBox("AlertHeadline", alertheadline, 20, TextField.ANY );
tb.addCommand(exit);
tb.addCommand(showalert);
tb.setCommandListener(this);
…
public void commandAction(Command c, Displayable d)
{
if( c == exit)
{
destroyApp(false);
notifyDestroyed();
}
if( c == showalert)
{
Alert alert = new Alert(tb.getString(), "Alert Message", null, AlertType.INFO);
Display.getDisplay(this).setCurrent(alert);
}
}
}
26
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
StringItem
Fügt Strings in eine Form ein:
protected void startApp()
{
StringItem si = new StringItem("Titel", "Text");
Form form = new Form("StrinItem");
form.append(si);
}
27
Display.getDisplay(this).setCurrent(form);
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
ImageItem
• Images auf einer Form darstellen
• Nur PNG werden sicher unterstützt
• Unterstützung anderer File Formate sind vom Gerätehersteller abhängig
28
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
ChoiceGroup
• Benutzer kann aus mehreren Choices auswählen
• Wird auf einer Form platziert
• Mehrere ChoiceTypes sind möglich:
Exclusiv, Implicit, Multiple
• Zu jedem Element kann ein Icon zugewiesen werden
• Ähnlich wie die List
29
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
ChoiceGroup
protected void startApp()
{
String[] choices = {"Choice 1", "Choice 2", "Choice 3"};
ChoiceGroup cg = new ChoiceGroup("Choicegroup", ChoiceGroup.EXCLUSIVE, choices,
Form form = new Form("CGForm");
form.append(cg);
}
30
Display.getDisplay(this).setCurrent(form);
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Canvas
• Die Canvas Klasse bildet die Basis der Low Level Api
• Die Canvas Klasse ist direkt von Displayable abgeleitet
• Keine Titelleiste
• Das Canvas Objekt kann keine weiteren Komponenten aufnehmen
• Die Canvas Object erlaubt dem User direktem Zugriff auf den Screen
des Gerätes
• Die Klasse Canvas ist abstrakt, genau wie deren Methode paint( )
Æ Eine konkrete Instanz muss erzeugt werden welche die Methode
paint( ) implementiert
• Canvas wird haupsächlich für Spiele oder andere komplexe Grafiken verwendet
31
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Canvas
Quelle: Buch " J2ME In A Nutshell "
O‘Reilly Verlag, Figure 5-1 - "The Canvas class "
32
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Wichtige Methoden der Canvas Klasse
• protected void keyPressed( int keycode )
Wird von der Plattform aufgerufen wenn ein Taste gedrückt wird
• protected void keyReleased( int keycode )
Wird von der Plattform aufgerufen wenn eine Taste wieder losgelassen wird
• void repaint( )
“Bittet” die Plattform die paint – Methode aufzurufen
• protected abstract void paint( Graphics G )
Wird aufgerufen wenn der Canvas sichtbar wird, wieder sichtbar
wird oder neu gezichnet werden soll
33
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Paint-Methode der Canvas Klasse
• Rendert den Canvas
• Wird von der Plattform aufgerufen wenn der Canvas sichtbar wird
• Kann durch die Methode Canvas.repaint( ) aufgerufen werden
• Bekommt als Übergabparemeter ein Object der Klasse javax.microedition.lcdui.Graphics
• Dieses Graphics-Object nimmt die eigentlichen Änderungen
auf dem Screen vor
34
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Wichtige Methoden der Graphics Klasse
• void setColor( int RGB)
RGB als default-Farbe setzen
• void setFont ( Font font )
font als default-Font setzen
• void drawLine( int x1, int y1, int x2, int y2 )
Eine Line von den Koordinaten (x1|y1) nach (x2|y2) zeichnen
• void fillRect( int x, int y, int width, int height )
Ein Rechteck ab der Koordinate (x|y) mit geg. Height und width füllen
• void drawArc( int x, int y, int width, int height, int startAngle, int arcAngle)
Umriss eines Kreisbogen zeichnen
• void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle )
Kreisbogen füllen
35
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
• void drawString( String str, int x, int y, int anchor )
String an die Koordinaten (x|y) schreiben
• void drawImage( Image img, int x, int y, int anchor )
Zeichnet das Bild im Imaga-Object img an die geg. Koordinaten
• Weitere Details siehe Apidocs zur Klasse
javax.microedition.lcdui.Graphics
36
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Waiting Screen – Beispiel Canvas Grafik
Midlet Klasse:
public class Rotator extends MIDlet
{
protected void startApp()
{
CanvasRotator rotator = new CanvasRotator();
Thread rotatorThread = new Thread(rotator);
rotatorThread.start();
}
Display.getDisplay(this).setCurrent(rotator);
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0)
{
}
}
37
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Canvas Klasse:
public class CanvasRotator extends Canvas implements Runnable
{
private int mCount;
private int mMaximum;
private int mWidth;
private int mHeight;
private int mX;
private int mY;
private int mRadius;
38
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
CanvasRotator()
{
mCount = 0;
mMaximum = 36;
mWidth = getWidth();
mHeight = getHeight();
int halfWidth = (mWidth - mRadius) / 2;
int halfHeight = (mHeight - mRadius) / 2;
mRadius = Math.min(halfWidth, halfHeight);
mX = halfWidth - mRadius / 2;
mY = halfHeight - mRadius / 2;
}
public void run( )
{
while(true)
{
mCount = (mCount + 1) % mMaximum;
}
}
39
}
repaint();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
public void paint(Graphics g)
{
int theta = -((mCount * 360) / mMaximum);
g.setColor(255, 255, 255);
g.fillRect(0, 0, mWidth, mHeight);
g.setColor(27, 62, 160);
g.drawArc(mX, mY, mRadius, mRadius, 0, 360);
g.fillArc(mX, mY, mRadius, mRadius, theta + 90, 90);
g.fillArc(mX, mY, mRadius, mRadius, theta + 270, 90);
}
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
MIDlet Suites
- Kleinste installierbare Einheit
Jar – File:
• Class-Files werden zu einem Jar-Archiv zusammengepackt
• Kompressionsalgorithmus: ZIP
• Format in dem ein MIDlet ausgeliefert wird
• jar.exe aus dem JSDK
• Beinhaltet ein "Manifest-File„
• Mehrere MIDlets können in ein jar – File zusammengepackt werden
Æ Midlet Suite
• MIDlets teilen gemeinsame Ressourcen
40
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Rotator.jar
META-INF
Aufbau Jar – File:
MANIFEST.MF
Rotator.class
CanvasRotator.class
41
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
MANIFEST.MF
Informationen über das / die MIDlets in einer Suite:
• MicroEdition-Profile
• MIDlet-Name, -Icon und –Class jedes Midlet in der Suite
• Midlet-Vendor
• Midlet-Version
Beispiel:
Manifest-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MIDlet-Name: Rotator
Created-By: Jochen Rink
MIDlet-Vendor: Nokia MP/Ulm
MIDlet-1: Rotator, Rotator.png, Rotator
MIDlet-Version: 1.0
MicroEdition-Profile: MIDP-2.0
42
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
JAD - File
• Das Jad – File beinhaltet ebenfalls Informationen über die Midlet Suite
• Kann benutzerdefinierte Variablen beinhalten
Æ Ähnlich wie bei einem Properties – File in der J2SE
• Die digitale Signatur eines Jar – Files ist im Jad – File untergebracht
• Jad - File wird unter bestimmten Bedingungen auf das Gerät übertragen
• Jad – File wird wie Manifest – File von der IDE erstellt
• Hat erforderliche / optionale Einträge
• Einträge überschneiden sich z.T. mit denen im Manifest – File
• Das Gerät kann aus einem Manifest-File ein Jad-File erstellen
43
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Beispiel Jad-File:
MIDlet-1: Rotator, Rotator.png, Rotator
MIDlet-Jar-Size: 1835
MIDlet-Jar-URL: Rotator.jar
MIDlet-Name: Rotator
MIDlet-Vendor: Nokia MP/Ulm
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
Property1: Value_1
MIDlet-Permissions: javax.microedition.io.Connector.datagram
MIDlet-Certificate-1-1:
MIIDijCCAvOgAwIBAgIBBDANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJESzEYMBYGA1UEChMPTm9raWFDb1Rlc3QgQ
GgYDVQQLExNOb2tpYSBNb2JpbGUgUGhvbmVzMRgwFgYDVQQDEw9Ob2tpYUNvVGVzdCBDQTMwHhcNMDMwOTA5MTgxNz
NMDcxMDE4MTgxNzM3WjB9MQswCQYDVQQGEwJVSzEQMA4GA1UECBMHVW5rbm93bjEUMBIGA1UEBxMLRmFybmJvcm91
PBgNVBAoTCFRob21hcyAyMRwwGgYDVQQLExNOb2tpYSBNb2JpbGUgUGhvbmVzMRUwEwYDVQQDEwxOZWlsIER1Z2dhbjIw
…
MIDlet-Jar-RSA-SHA1:
EucNlCzQH9L7lbMRTvxdnJKoUoYWiApAJwSXvCoZbzn7zKNJUGIAvegh4xdLY7s8CwPbb6wSy65gOv+3p8EpWFt8qH42omYnR/7
Php5rcBBOBJoqLPyCOiE55Yhg+enDIIgWhJ1EGh1FVVI5zKeni1NVfOhrOI4lEQR3WJLo=
44
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Entwicklungszyklus von MIDlets
Quelle: Buch " Java 2 MicroEdition"
dpunkt Verlag, Abbildung 2-3 - " Zweiphasige Bytecodeverifikation in der CLDC "
45
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Entwicklungstools für Midlets
• Java SDK
• J2ME WirelessToolkit von Sun
http://java.sun.com/products/j2mewtoolkit/
• Entwicklungsumgebung
Jbuilder, Intelli J, NetBeans, Eclipse….
• J2ME Plugin für die IDE
FastPorts, Sysdeo J2ME Plugin, EclipseME…
• Build Tool
Ant, besser Antenna
46
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
J2ME WirelessToolkit
47
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
EclipseME
• http://eclipseme.org
• Plugin für Eclipse Æ Kann die Vorteile der IDE nutzen
• Ideal für Einsteiger
• Automatisiert alle Vorgänge wie compilieren, preverifizieren, packen…
• Unterstützt Obfuscator
• Kann nicht signieren ( im Vergleich zum WTK )
• Viele unterschiedliche Versionen ( kompliziert ), aktuell 0.9.2 (17.05.2005)
• Etwas umständliche Installation
48
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Antenna – Ant für J2ME
• http://antenna.sourceforge.net/
• Eine Art Build Script für MIDlets
• In der Datei build.xml werden verschiedene Task angegeben
49
• Vorteil:
Größte Flexibilität
• Nachteil:
- Kenntnisse über den build Vorgang nötig
- Gewöhnungsbedürftige Syntax
- Kompliziert
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
MIDlet Debugging
• Keine Möglichkeit die Midlets im Phone zu debuggen
( außer Sony Ericsson,
http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp )
• Im Emulator kann man MIDlets wie normale Java Applikationen debuggen
( BreakPoints, Stacktraces, Variableninhalt…)
• Z.T. unbrauchbar, da die Implementierung der KVM im
Phone von der Referenzimplementierung im Emulatoru.U. abweichen kann
• Im Phone kann man z.B. über Alert Screens Statusinfos ausgeben
• Echter Nachteil bei der Entwicklung von MIDlets
50
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Emulatoren
• Jeder Phone Hersteller stellt Emulatoren zur Verfügung
• Sun stellt Emulatoren mit der Referenzimplementierung zur Verfügung
• Emulatoren lassen sich in Suns WTK integrieren
• Vielfätige Kommunikationsmöglichkeiten:
(Java-)SMS, Netzwerk, Bluetooth, Infrarot, Netzwerk
• Vielfältige Einstellmöglichkeiten der Laufzeitumgebung
jar-file Grösse, Heap, Ram, Bandbreite Netzwerk...
• MIDlet kann somit auf vielen Phones unterschiedlicher Hersteller getestet werden
51
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
52
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Installation auf dem Device
Over the air – OTA
Mit spezieller Software der Phone Hersteller - via "download"
53
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Installation via OTA
Quelle: Java Magazin 04.2003, Artikel "Over the air", Michael Jentsch
Abb. 2, Ablaufdiagramm
54
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Installation via download
• Application Installer der PCSuite (bei Nokia)
• Mobile Phone Manager (Siemens)
• Kopieren der jad- und jar Files auf MMC (Symbian OS basierende Smart-Phones
• Nachteil: Es ist nicht gewährleistet dass das jad-File übertragen wird
• Vorteil:
55
Kostenlos im Vergleich zur OTA Installation
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
J2ME Ausblick
• Derzeit ist MIDP 3.0 in der Entwicklung
Siehe JSR 271, http://www.jcp.org/en/jsr/detail?id=271
• Initiator ist Motorola, Erscheinungstermin: Mai 2006
• Geplante Neuerungen:
- Mehrere MIDlets gleichzeitig in der VM aktiv
- Kommunikation unter MIDlets (Interprozesskommunikation)
- Background Midlets (ohne UI Æ wie Daemons)
- Shared Libraries für MIDlets
- IPv6
- Unterstützung mehrere Displays
- Autostart
- Verbessertes UI
56
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Alternativen zu J2ME
• Moderne Smart-Phones basieren meist auf dem Symbian OS
http://www.symbian.com
• Das Symbian OS bietet neben MIDlets die Möglichkeit
native Applikationen auszuführen
• Diese sind in C++ geschrieben und werden auf der
CPU und nicht in einer Laufzeitumgebung ausgeführt
• Bieten ebenfalls sehr großen Funktionsumfang
• Wegen direkter Ausführung auf der CPU sehr viel schneller als MIDlets
• Entwicklungszyklus ist komplizierter,
da Kenntnisse über das Symbian-OS erforderlich sind
• Nicht so stark verbreitet wie Phones mit J2ME
57
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation
Danke für Ihre Aufmerksamkeit
58
Informatikseminar
FH-Weingarten,
Jochen
Rink,
30.05.05
© NOKIA
Nokia
Mobile Phones
general
presentation