Java 2 Micro Edition Informatikseminar - Steffen Lahm Java 2 Micro Edition Informatikseminar - Steffen Lahm Vortragsüberblick • Historische Entwicklung • Konfigurationen und Profile • Anwendungsentwicklung • Beispiele • Anwendungsmöglichkeiten
1
Java 2 Micro Edition
Informatikseminar - Steffen Lahm
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Vortragsüberblick• Historische Entwicklung• Konfigurationen und Profile• Anwendungsentwicklung• Beispiele• Anwendungsmöglichkeiten
2
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• 1990 Überlegungen zur Evolution der
Computerentwicklung• „Green Project“ • Ergebnis: Star7 („*7“)
– Kabelloser PDA– 5 Zoll Touchscreen– Datenaustausch per Funk
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• Anforderungen an das O/S des Star7:
– Weniger als 1Mb groß– Hohe Effizienz
• James Gosling entwickelt „Oak“• 1992 Fertigstellung des Star7
3
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• 1995 Java wird „offiziell“• Überbleibsel aus Oak: • Hauptziele haben sich geändert:
– Optimierung für Arbeitsplatzrechner– Schnelle Ausführungsgeschwindigkeit– Keine Rücksicht auf Ressourcen
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• 1998 Projekt „Spotless System“• Ziele:
– Erstellung kleinstmöglicher Java-Laufzeitumgebung
– Portierungsmöglichkeit auf größtmögliche Menge verfügbarer Systeme
• Implementierung in Palm-PDA
4
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• Ergebnis:
– Laufzeitumgebung mit nur kleiner Untermenge der Klassenbibliothek der Arbeitsplatzversion
– Komponenten für grafische Benutzeroberflächen speziell auf Palm-PDAangepasst, nicht portierbar
– Besteht aus zentraler Palm-Applikation= Programmstarter um Klassen mit statischer main() Methode zu starten
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• Entwicklerkonferenz JavaOne99:
– Ergebnisse des Spotless-Projekts fliessen in die Java-Familie ein
– Sun teilt die Java-Technologie in 3 Sparten:• Java 2 Enterprise Edition (J2EE)• Java 2 Standard Edition (J2SE)• Java 2 Micro Edition (J2ME)
5
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• Herzstück der J2ME bildet die:
KVM „Kilobyte Virtual Machine“• Nachfolger aus dem Spotless System• Klassenbibliothek wurde überarbeitet• Weiterentwickelte Klassenversionen für
grafische Benutzeroberflächen
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Historische Entwicklung• Sun startet Java Community Process:
– KVM wird nicht mehr nur in den SunLabsentwickelt
– Privatpersonen und Firmen können an der Entwicklung teilnehmen
– So genannte Java Specification Requests(Vorschläge) müssen dazu eingereicht werden
6
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Konfiguration:
Hier sind grundlegende Eigenschaften und Grundfunktionen der Java-Laufzeitumgebung für eine Gerätesparte definiert.Momentan zwei Konfigurationen für J2ME
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Connected Device Configuration (CDC)
– Größere PDAs oder Settopboxen– Vollständige JVM– Kleinere Einschränkungen bei den APIs
7
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Connected Limited Device Configuration
(CLDC 1.0)– Mobiltelefone, PDAs oder Pager– KVM– Stark eingeschränktes API
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Mindestanforderungen CLDC 1.0
– Display: • Auflösung: 96x54 • Farbtiefe: 1-bit (schwarz/weiss) • Pixel shape (Seitenverhältnis): ungefähr 1:1
– Input: • einen oder mehrere der folgenden Mechanismen:
"one-handed keyboard„ "twohanded keyboard" oder "touch screen"
– Speicher (Memory): • 128 Kbyte beständiger Speicher für die MIDP Komponenten • 8 Kbyte beständiger Speicher für von der Applikation erzeugten Daten. • 32 Kbyte flüchtiger Speicher für die Java Runtime
– Networking:• bidirektional, drahtlos, mind. 9600bps
8
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Einschränkungen der CLDC (1.0)
– Keine Unterstützung für Fließkommazahlen (kein double oder float)– Keine Reflection (Features die es einem Java-Programm erlauben
die Objekte in einer JavaVM zu inspizieren: Inhalt von Klassen, Objekten, Methoden, Feldern, Threads, Execution-Stacks, ...)
– Keine Thread-Gruppen oder Daemon-Threads– Keine weak refrerences (Referenzen auf Objekte behalten, die an
sich ein Kandidat für den Garbage Collector wären)– Vereinfachte Fehlerbehandlung– Keine Finalisierung (fehlende finalize() Methode)– Keine Unterstützung für das Java Native Interface (JNI)– Keine benutzerdefinierten Klassenlader
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Das vereinfachte Sicherheitsmodell
– Sandbox Modell:Java Anwendungenlaufen in abgeschlossenerUmgebung, in der nur „unkritische“ Aktionenausgeführt werden können.
– Sicherheitsmodell der J2SE verbraucht zuviel Ressourcen
9
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• CDC und CLDC
im Vergleich
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Profil:
Im Gegensatz zur Konfiguration viel stärker auf einen bestimmten Gerätetyp zugeschnitten. Hier findet man z.B. Schnittstellen für die grafische Benutzeroberfläche und die persistente Datenhaltung in Datenbanken
10
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• Mobile Information Device Profile (MIDP)
– Spezialisiert auf Mobiltelefone und Pager– Erweiterungen der in der CLDC enthaltenen Klassen– Eigenständiges Paket javax.microedition.midlet– Abstrakte Benutzerschnittstelle LCDUI
(nicht kompatibel mit Swing oder AWT)– Record Management System (RMS) zur Speicherung
persistenter Daten in einfacher Datenbank
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Konfigurationen und Profile• J2ME Pakete der CLDC, MIDP
11
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• Prinzipieller Ablauf:
– Erstellen der .java Dateien– Kompilieren (.class Dateien generieren)– Preverify– Test im Emulator– „Verpacken“ in .jar File, Erstellung .jad– Transfer auf Zielgerät (Infrarot, Bluetooth, OTA -
Over the Air)
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• Entwicklungsmöglichkeiten:
– Referenzimplementierung und manuelle Kompilierung
– Wireless Toolkit (und angepasste SDKs der Hersteller)
– IDEs:• Sun ONE Studio, Mobile Edition• JBuilder mit Mobile Set• ME Plugin für Eclipse• Metrowerks Codewarrior Wireless Studio
12
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• MIDlet:
– Grundsätzlich abgeleitet von Klasse MIDlet– 4 verschiedene Zustände möglich:
• loaded• active• paused• destroyed
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• Lebenszyklus eines MIDlet
13
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• „Gerüst“ eines MIDP-Programms
public class Geruest extends MIDlet {protected void startApp() {}
protected void pauseApp() {}
protected void destroyApp(boolean unconditional) {}
}
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• Das High-Level-API des lcdui Pakets
– Unterstützt Formulare und Formularelemente wie z.B. Textfelder, Selektionsboxen
– Formularelemente können nicht frei im Formular platziert werden, nur 2 Modi screen oder item
– Anordnung nach dem gerätespezifischem Look and Feel
• Das Low-Level-API des lcdui Pakets– Voller Zugriff auf Display eines MIDP Geräts auf Pixelebene
Vermischung von Low und High Level nicht möglich!
14
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung• Einfaches Beispielprogramm mit Formular und Formularelementen:
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.io.*;
public class HelloMidp extends MIDlet {
Form meineform = new Form("HelloMidp für Isem");Display meindisplay;
protected void startApp() {meindisplay = Display.getDisplay(this);meindisplay.setCurrent (meineform);
try {ImageItem logo =new ImageItem("FH-Weingarten",Image.createImage ("/welle.png"),ImageItem.LAYOUT_CENTER|ImageItem.LAYOUT_NEWLINE_BEFORE|ImageItem.LAYOUT_NEWLINE_AFTER, "Welle");meineform.append (logo);
}catch (IOException e){meineform.append (new StringItem("FH-Weingarten","Logo not available:" +e));}
}protected void pauseApp(){}protected void destroyApp(boolean unconditional){}
}
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung
15
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Anwendungsentwicklung
Java 2 Micro Edition Informatikseminar - Steffen Lahm
Beispiele