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