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