Robert Eigner 29.06.2006

Werbung
Verteilte Anwendungen
Java 2 Mobile Edition
Robert Eigner
29.06.2006
Gliederung
•
•
•
•
•
•
–
–
–
–
–
–
–
–
–
Organisatorisches
Einführung J2ME
Geschichte
Das Java Universum
J2ME Basics
J2ME: CLDC/MIDP
Midlets
Anwendungsentwicklung
MIDlet Entwicklungsprozess
MIDlet Grundgerüst
Übersicht - Schnittstellen
LCDUI
Tools und IDE
Ausblick
Links
29.06.2006
Robert Eigner
2
Organisatorisches
•
Betreuung:
Robert Eigner
E-Mail: [email protected]
Tel.: 289-18684
Büro: 01.05.053
•
Programmierberatung:
Thomas Jansson
[email protected]
29.06.2006
Robert Eigner
3
Organisatorisches
•
•
2 Aufgabenblätter
Abgabe der Aufgaben per E-Mail
–
–
•
•
1. Blatt: Mi, 05.07.2006, 18:00 Uhr
2. Blatt: Di, 11.07.2006, 18:00 Uhr
Testat: Mi, 12.07.2006, ab: 16:00 Uhr
Gruppeneinteilung: bis 30.06.2006,
12:00 Uhr
29.06.2006
Robert Eigner
4
Organisatorisches
•
Bewertungskriterien:
–
–
–
–
–
Angemessener Lösungsansatz
Funktionalität
Strukturierung Quellcode
Dokumentation Quellcode
Testat
29.06.2006
Robert Eigner
5
Einführung J2ME
•
•
•
1990: Java wird internes Projekt bei SUN
Microsystems
1996: Erstes Release von JDK 1.0
1999: JavaOne Konferenz:
Unterteilung von Java in
–
–
–
•
Geschichte
Java 2 Enterprise Edition (J2EE)
Java 2 Standard Edition (J2SE)
Java 2 Micro Edition (J2ME)
2000/01: Erste Mobiltelefone mit
Unterstützung für J2ME
29.06.2006
Robert Eigner
6
Einführung J2ME
•
•
•
•
Geschichte
2002: MIDP 2.0
April 2004: 250 Million Handies
June 2005: 700 Million mobile phones
support – mehr Handies unterstützen
J2ME als Desktops
Jetzt: die meisten Anbieter von Handies
(Motorola, Nokia, Panasonic, Samsung,
Sharp, Siemens, Sony Ericsson, Toshiba,
etc.) unterstützen J2ME
29.06.2006
Robert Eigner
7
Einführung J2ME
29.06.2006
Das Java Universum
Robert Eigner
8
Einführung J2ME
Optionale Pakete
Profile:
• MIDP 1.0
• MIDP 2.0
• IMP 1.0
• IMP 2.0
Configuration:
• CLDC
J2ME Basics
• Configuration: Geräteklassen
• Virtual Machine
• Untermenge von J2ME
• Zusätzliche APIs
• Profile: spezifischer als Configuration
• basiert auf Configuration
• zusätzliche APIs für user interface,
persistent storage, usw.
• Optionale Pakete:
• Bluetooth
• Multimedia
• Mobile 3D
•…
• CDC
Virtual Machines:
JVM
29.06.2006
KVM
Robert Eigner
9
Einführung J2ME
J2ME Basics
SIP API
Location
BT
IMP
Web Svc.
PDA
MIDP
MMAPI
Optionale Pakete
WMA
RMI
J2ME Micro Edition
Personal
Personal Basis
Foundation
29.06.2006
Profile
CDC
CDLC
JVM
KVM
Robert Eigner
10
Einführung J2ME
J2ME: CLDC/MIDP
• CLDC: Connected, Limited Device
Configuration
• Für kleine Geräte mit beschränkten
Ressourcen (Handies, PDAs, …)
• Kleine Bildschirme, beschränkter
Speicher, langsam
• Netzwerkverbindung
• 160 bis 512KB Speicher für Java
29.06.2006
Robert Eigner
11
Einführung J2ME
•
J2ME: CLDC/MIDP
KVM („Kilobyte Virtual Machine“)
–
–
–
–
–
–
–
–
–
–
–
–
Kein vollwertiger Bytecode verifier
Kein Floating Point
Kein finalize()
Keine Thread Groups
Kein Java Native Interface (JNI)
Keine Reflection
Keine eine Weak References
java.lang
java.lang.ref
Aber: das sind nicht
java.io
die Standardjava.util
Pacakges!
java.microedition.io
29.06.2006
Robert Eigner
12
Einführung J2ME
•
•
MIDP 2.0: Mobile Information Device
Profile
Gerätechharacteristika
–
–
–
•
•
J2ME: CLDC/MIDP
Min. 128KB RAM (Java Runtime Heap)
8KB for persitente Daten
Bildschirm: > 94*54 pixel
Eingabemöglichkeiten
Network connection
29.06.2006
Robert Eigner
13
Einführung J2ME
•
•
•
•
•
•
J2ME: CLDC/MIDP
User Interface Packages
–
–
javax.microedition.lcdui
javax.microedition.lcdui.game
–
javax.microedition.rms
–
javax.microedition.midlet
–
javax.microedition.io
–
–
javax.microedition.media
javax.microedition.media.control
–
javax.microedition.pki
Persistence Package
Application Lifecycle Package
Networking Package
Audio Packages
Public Key Package
29.06.2006
Robert Eigner
14
Einführung J2ME
•
•
•
Midlets
Jede J2ME-Anwendung ist ein MIDlet, d.h.
Unterklasse von
javax.microedition.midlet.Midlet
Mehrere MIDlets werden in MIDlet-Suite
zusammengefasst
Meta-Information über MIDlets (MIDlet-Suiten)
in Manifest-Dateien und .jad-Dateien
MIDLET
SUITE
.jar-Datei
29.06.2006
Manifest
MIDlet
.jad-Datei
Robert Eigner
15
Einführung J2ME
Midlets
MIDlet-Lebenszyklus:
Konstruktor
startApp()
Paused
pauseApp()
notifyPaused()
destroyApp()
notifyDestroyed()
Destroyed
29.06.2006
Active
destroyApp()
notifyDestroyed()
Robert Eigner
16
Anwendungsentwicklung
Entwicklungsprozess
1. Source Code
schreiben
2. Kompilieren (javac)
3. Präverifizieren
4. Verpacken
1. .jar-Archiv erstellen
2. .jad-Datei erzeugen
5. Test im Emulator
(oder echtes Gerät)
29.06.2006
Robert Eigner
17
Anwendungsentwicklung
Grundgerüst
MIDlet-Grundgerüst:
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyMIDlet extends MIDlet {
public MyMIDlet() {
}
protected void startApp() throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0) throws
MIDletStateChangeException {
}
}
29.06.2006
Robert Eigner
18
Anwendungsentwicklung
29.06.2006
Robert Eigner
Schnittstellen
19
Anwendungsentwicklung
LCDUI
theDisplay = Display.getDisplay(this);
theDisplay.setCurrent(Displayable);
Displayables:
– Canvas (Grafische Ausgaben)
• StringItem
– Screen:
•
•
•
•
•
•
•
•
•
•
•
List
Alert
TextBox
Form
– Items
29.06.2006
Robert Eigner
ImageItem
TextField
Datefield
Choice Group
Spacer
Gauge
CustomItem
20
Anwendungsentwicklung
LCDUI
• Ändern des Display-Inhalts:
Übergebenn Displayable-Instanzen
an setCurrent
• Typischer Ablauf:
– Displayable anzeigen
– Auf Eingabe warten
– Entscheiden, welches Displayable das
nächste sein soll
– Wiederholen
29.06.2006
Robert Eigner
21
Anwendungsentwicklung
LCDUI
• Benutzerinteraktion über die
Listener
– CommandListener
Command exitCommand
= new Command("Exit",
command.STOP, 1);
Displayable.addCommand(Command exitCommand);
public void commandAction(Command c, Displayable d)
– ItemStatsListener
– ItemCommandListener
29.06.2006
Robert Eigner
22
Tools und IDE
•
•
•
•
Netbeans + Mobility Pack
Eclipse (mit EclipseME Plug-In)
Borland JBuilder MobileSet
IBM WebSphere Studio Device
Developer
• Metrowerks Code Warrior Wireless
Studio
• Sun ONE Studio, Mobile Edition
29.06.2006
Robert Eigner
23
Tools und IDE
• Sun Wireless Toolkit (WTK)
http://java.sun.com/products/sjwtoolkit/
• Sony Ericsson
http://developer.sonyericsson.com
• Nokia
http://www.forum.nokia.com/
• Siemens Mobility ToolKit (MTK)
http://market.benqmobile.com
29.06.2006
Robert Eigner
24
Ausblick
• Bugfix und Erweiterung der Konfigurationen und Profile
• JavaTV (JSR 927 - http://jcp.org)
– Fernsehen auf mobilen Geräten
• Scalable 2D Vector Graphics API2.0 (JSR 287)
– interaktive Karten
– skalierbare Benutzeroberfläche
– Verbesserung des SVG Rendering Model (JSR 226)
• IMS Service API (JSR 281)
– Integration von IP Multimedia Subsystem
– Echtzeitkommunikation zwischen Einzelpersonen und Gruppen
– Kombination von Sprach- und Multimediadaten bei der
Übertragung
• XML API (JSR 280)
– XML-Unterstützung für J2ME (SAX und DOM)
• Service Connection API (JSR 279)
– Entwicklung von Clients für high-level Web services und SOA
29.06.2006
Robert Eigner
25
Ausblick
• Nächste Woche: Grafische Ausgaben
• …es gibt noch viel mehr als wir im
Praktikum machen können:
– Networking
•
•
•
•
–
–
–
–
HTTP
Sockets
Datagrams
Infrarot
Bluetooth
Persistent Storage
GameAPI
J2ME und WebServices
29.06.2006
Robert Eigner
26
Links
• http://java.sun.com/j2me/
– Downloads, Dokus, WirelessToolkit, …
– MIDP2.0 Javadoc:
http://jcp.org/aboutJava/communityprocess/fin
al/jsr118
• J2ME Tutorial für den Einstieg
– http://today.java.net/pub/a/today/2005/02/09
/j2me1.html
• Foren
– http://www.j2meforum.com
– http://forum.java.sun.com/wireless/
• Google hilft!
29.06.2006
Robert Eigner
27
Herunterladen