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 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 2 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 JavaLaufzeitumgebung – Portierungsmöglichkeit auf größtmögliche Menge verfügbarer Systeme • Implementierung in Palm-PDA 3 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-PDA angepasst, 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) 4 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 SunLabs entwickelt – Privatpersonen und Firmen können an der Entwicklung teilnehmen – So genannte Java Specification Requests (Vorschläge) müssen dazu eingereicht werden 5 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 6 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 7 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 Anwendungen laufen in abgeschlossener Umgebung, in der nur „unkritische“ Aktionen ausgeführt werden können. – Sicherheitsmodell der J2SE verbraucht zuviel Ressourcen 8 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 9 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 10 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 11 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 12 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! 13 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 14 Java 2 Micro Edition Informatikseminar - Steffen Lahm Anwendungsentwicklung Java 2 Micro Edition Informatikseminar - Steffen Lahm Beispiele 15 Java 2 Micro Edition Informatikseminar - Steffen Lahm Anwendungsmöglichkeiten • • • • • • • • • • • Spiele E-Mail Clients WebBrowser Instant Messenger Chatclients Mobile SQL Telnet Client Kalender Blutzucker Logbuch Währungsrechner … 16