Einführung in J2ME
Transcription
Einführung in J2ME
Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Seminar Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Von Damian Raschka Betreuer Prof. Dr. F. Thiesing Autor: Damian Raschka Einführung in J2ME.pdf 1 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Inhaltsverzeichnis 1. Einleitung Überblick Geschichte 2. Aufbau Configurations Virtual Machines Profiles Zusammenfassung 3. Installation Einzelkomponenten Wireless Toolkit - WTK 4. Erstellen von Programmen Nötige Schritte KToolbar Aufbau eines Programms MIDP-GUI-Modell 5. Ausblick / Empfehlung 6. Referenzen Autor: Damian Raschka Einführung in J2ME.pdf 2 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Abbildungsverzeichnis Abbildung 1 Typische Anwendungsgeräte Abbildung 2 Java 2 Plattform Abbildung 3 J2ME Aufbau/Strukturierung Abbildung 4 J2ME Strukturierung CDC/CLDC Abbildung 5 Systemeigenschaften Abbildung 6 Umgebungsvariablen Abbildung 7 PATH CLDC bin Abbildung 8 MIDP PATH bin Abbildung 9 MIDP_HOME Abbildung 10 MIDP CLASSPATH Abbildung 11Eingabeaufforderung – Installation testen Abbildung 12 WTK Installation Abbildung 13 KToolbar opened Abbildung 14 KToolbar new project Abbildung 15 KToolbar open project Abbildung 16 KToolbar new project settings Abbildung 17 KToolbar new project settings 2 Abbildung 18 KToolbar new project saved Abbildung 19 KToolbar Build Abbildung 20 KToolbar Settings Abbildung 21 KToolbar Run Emulator Abbildung 22 KToolbar Run Emulator Abbildung 23 Quellcode Programmaufbau Abbildung 24 MIDlet Zustände Abbildung 25 Display-Screen 05 06 09 14 16 17 17 18 18 18 19 21 23 23 24 24 25 25 26 27 27 27 28 29 31 Tabellenverzeichnis Tabelle 1 Vergleich CDC-CDLC Autor: Damian Raschka 10 Einführung in J2ME.pdf 3 / 35 Fachhochschule Dortmund Fachbereich Informatik 1 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Einleitung “Java-fähig”, “Java-Spiele”, auf “Java-Basis”, “Java-Kompatibel”, etc. Dies sind alles Stichworte, die dem einem oder anderen beim Kontakt mit Handys oder anderen mobilen Geräten schon einmal begegnet sind. Vor allem in den Produktblättern oder in der Werbung des einen oder anderen Gerätes tauchen diese Begrifflichkeiten schon mal auf. Aber was genau heißt denn nun “Java-tauglich”? Und was hat J2ME damit zu tun? Ja, was ist denn überhaupt J2ME?? Diese Fragen sollen hier in diesem Kapitel beantwortet werden. Daneben soll kurz auf den Ursprung von J2ME und die groben Einsatzgebiete eingegangen werden. Autor: Damian Raschka Einführung in J2ME.pdf 4 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 1.1 Überblick Wie in der Einleitung angekündigt wollen wir hier nun klären, um was es sich bei J2ME überhaupt handelt. Dies ist an sich schnell getan, J2ME steht für “Java 2 Micro Edition”, womit man auf den ersten Blick auch den ungefähren Verwendungszweck einordnen könnte: Kleinstgeräte. Ganz so einfach ist dies jedoch nicht, wie wir in Kapitel 2 noch sehen werden. Wir können jedoch schon mal grob festhalten, dass der Verwendungszweck klar im mobilen, limitierten (bzgl. Ressourcen) Kleingerätebereich liegt. Dies ist vor allem im Vergleich zu Desktop-Rechnern zu sehen. Dabei machen sich die Einschränkungen vor allem in der Displaygröße, der Speicherausstattung und der Prozessorleistung bemerkbar. Als Beispiele lassen sich hier Mobiltelefone, Smartphones und PDAs nennen, wobei wir auch schon die momentanen Haupteinsatzgebiete (-Geräte) genannt hätten. Abb. 1: Typische Anwendungsgeräte Aber warum wird eine extra Java-Version benötigt? Während Desktop-PCs heutzutage über genügend großen Speicher und mehr als ausreichende Rechenleistung besitzen, zeigen die oben erwähnten Gerätschaften dahingehend eher (noch) eine Schwäche, auch wenn die Leistungskraft in den letzten Jahren auch hier stetig zugenommen hat. Zwar ist die J2SE (Java 2 Standard Edition) in den letzten Jahren hinsichtlich ihrer Performance stetig verbessert worden, aber gleichzeitig wuchs durch den anwachsenden Bestand an mitgelieferten Klassenbibliotheken der Umfang ebenfalls enorm. Hier liegt neben den höheren Leistungsanforderungen gleich der zweite Kritikpunkt: viele Klassen und Funktionen werden auf den kleineren Geräten überhaupt nicht benötigt! Autor: Damian Raschka Einführung in J2ME.pdf 5 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 1.1 Überblick Es wird also eine Version von Java benötigt, die sowohl keine hohen HardwareAnforderungen stellt, als auch von der möglichen Funktionalität gerade ausreichend genug ist. Mit der J2ME wurde solch eine Plattform geschaffen, die sowohl diesen “Beschränkungen” als auch den modernen Möglichkeiten und Anforderungen genügt. Gleichzeitig erschließt sich damit für Java ein weiteres, neben der J2SE (Standard Applikationen) und J2EE (Java 2 Enterprise Edition – (Firmenübergreifende) ClientServer Applikationen), 3. Anwendungsgebiet. Das Argument der Plattformunabhängigkeit wird weiter gestärkt. Abb. 2 – Java 2 Plattform Autor: Damian Raschka Einführung in J2ME.pdf 6 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 1.2 Geschichte Vorgestellt wurde J2ME das erste mal 1999 auf der Java-One Konferenz. Somit ist es noch sehr jung. Die Idee aber ist schon sehr viel älter und eng mit der Entstehung und Geschichte von Java verwoben: Das “Green Project”. 1990 stellte man bei Sun Überlegungen zur zukünftigen Entwicklung von Rechnern und Computern an. Das primäre Ziel dabei war es, dass Sun an dieser Entwicklung teilhaben / mitarbeiten solle. Dabei entstand die Idee einer Verschmelzung von digitalen Verbrauchergeräten (für die Zeit typisch: Taschenrechner und elektr. Übersetzer) mit Computern. Man könnte sagen, so eine Art Vorläufer der heutigen PDA. Daraufhin entwickelte man einen Prototyp, der wegen seinem geringen Hauptspeicher jedoch auch ein neues Betriebssystem brauchte. Da die Entwickler jedoch nicht so wirklich von C++ begeistert waren, entwickelten sie (maßgeblich James Gosling) eine neue Programmiersprache. Das Ergebnis war Oak, der Vorfahre von Java. Während der Jahre der Weiterentwicklung von Java wuchs dieses jedoch immer mehr an. Es wurde immer umfangreicher und das Ziel wurde immer mehr der Einsatz auf leistungsstarken Desktop-PCs. So verlor sich das einstige Hauptziel, der Einsatz auf mobilen Geräten, immer mehr. Erst 1998 erfolgte mit dem Start des Forschungsprojekts “Spottless System” eine Art “Rückbesinnung” zu alten Zielen: Man wollte eine Java-Laufzeitumgebung speziell für eingebettete Systeme entwickeln. Dabei sollte sie folgende Ziele erfüllen: · · kleinstmögliche, vollständige Java-Laufzeitumgebung (inklusive dem nachladen von Java-Klassen, allerdings ohne Klassen für eine GUI) Portierung auf eine größtmögliche Menge von verfügbaren eingebetteten Systemen Die erste Laufzeitumgebung kam dann auch mit nur 300 KB Speicher aus. Für die Portierung auf Endgeräte testete man zunächst den “Rolodex REX Personal Organizer” von Franklin Electronic Publishers. Aufgrund mangelnder Unterstützung entschied man sich dann jedoch für Palm-PDA (damals von 3Com). Diese erste Laufzeitumgebung war sehr Eingeschränkt und Gerätespezifisch und für andere Geräte/Systeme nicht portabel. Autor: Damian Raschka Einführung in J2ME.pdf 7 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 1.2 Geschichte 1999 erfolgte dann das Einfließen der Ergebnisse des Spottless-Projekts in die Java Familie. Ergänzt wurde dabei auch die virtuelle Maschine um die KVM, dem Nachfolger des Spottless-Systems. Von nun ab erfolgte (und erfolgt bis heute) die weitere Entwicklung nicht mehr ausschließlich von Sun-Ingenieuren, sondern durch verschiedene Firmen. Dies geschieht durch die so genannten JCPs (Java Community Process, Bildung von Expertengruppen mit dem Ziel von Java-Spezifizierungen). Zusammenfassend kann man also sagen, Java und J2ME entstanden aus der Idee, (für) kleine, mobile Geräte entwickeln zu wollen. An Bedeutung hat es seit 1999 in den letzten Jahren vor allem durch die rasche technische Entwicklung im Bereich mobile Telefone / Smartphones gewonnen. Diese machen der ursprünglichen Plattform, dem PDA auch mehr und mehr Konkurrenz. Autor: Damian Raschka Einführung in J2ME.pdf 8 / 35 Fachhochschule Dortmund Fachbereich Informatik 2 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Aufbau Wir haben in Kapitel 1 schon erfahren, dass es sich bei den Zielgeräten um vorwiegend mobile Geräte mit limitierter Leistungsfähigkeit handelt. Diese Feststellung alleine reicht jedoch nicht aus, wenn man bedenkt, wie viele “Kleingeräte” es gibt. Es sind also weitere Einteilungen innerhalb dieser Eingrenzung notwendig. Die verschiedenen Geräte liegen in ihren beabsichtigten Anwendungsfeldern mehr oder weniger stark auseinander, was sich auch in der Leistungsfähigkeit und den Systemarchitekturen der Geräte wieder spiegelt. Die J2ME-Plattform darf diese Tatsache nicht einfach ignorieren und muss eine weitest mögliche Unterstützung gewährleisten. Dies tut sie mit ihrer besonderen (Baukasten ähnliche) Architektur: Abb. 3 – J2ME Aufbau Autor: Damian Raschka Einführung in J2ME.pdf 9 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 2.1 Configuration Wir wollen uns zunächst der Configuration-Ebene widmen. Sie wird den Anforderungen des strukturellen Aufbaus (verschiedener Endgeräte) gerecht. Durch Festlegung bestimmter Merkmale stellt eine Configuration quasi eine Plattform für bestimmte Gruppen von Endgeräten dar. Konkret sehen diese Merkmale die Angabe der Unterstützung von Merkmalen und Features der Java-Programmiersprache, der JVM und der Java-API's vor. Momentan existieren zwei Configurations, die grob zwei Gerätegruppen abdecken: · · CDC (Connected Device Configuration) CLDC (Connected Limited Device Configuration) konkrete Unterscheidung: CDC CLDC min 512 KB Speicher für Java-Umgebg. min 128 KB für Java-Umgebg. min 256 KB für Laufzeitumgebg. min 32 KB für Laufzeitumgebg. 32-Bit Prozessor mobile Stromversorgung Tabelle 1 – Vergleich CDC-CLDC Für beide Configurations gilt: Verbindung zu einem Netzwerk muss vorhanden/möglich sein (wahlweise drahtlos). Während CDC vergleichsweise seltener Eingesetzt wird (Set Top Boxen, Screenphones, etc), kommt CLDC gerade im Schwerpunkt Handys und mobile Organizer bevorzugt zum Einsatz. Für PDA's ist eine dritte Configuration geplant, befindet sich jedoch noch in der Entwicklung. Momentan werden PDA's noch von beiden Configurations abgedeckt: CDC für High-End-PDA's und CLDC für Low-End-PDA's. Autor: Damian Raschka Einführung in J2ME.pdf 10 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 2.2 Virtual Machine (VM) Zur Erinnerung: Der Java-Compiler erzeugt keine, in Maschinensprache ausführbaren Programme, sondern Byte-Code für den Interpreter. Programme laufen in der Virtual Machine ab. Für das J2ME gibt es aber nun zwei Virtual Machines: · · CVM für CDC Alle Features und Möglichkeiten der gewöhnlichen J2SE VM. Lediglich bei den API's leichte Einschränkungen. Dies liegt daran, dass die Geräte meist größer sind und über großzügigere Ressourcen verfügen. KVM für die CLCD Starke Begrenzung durch die Zielrichtung auf stark limitierte Endgeräte im mobilen Bereich (Umfang der Funktionen stark reduziert). Dabei steht das K für Kilobyte, da diese VM nur wenige Kilobyte Speicher erfordert. Basis in C entwickelt worden, dadurch mehr Hardware-Nähe. Festzuhalten ist also, dass durch die Configuration die Verwendung und somit der Umfang der VM bestimmt wird. Es existieren unterschiedliche Implementierungen der VM für die jeweilige Configuration. Da wir uns im weiteren Verlauf (bedingt durch die Zielgruppe der Geräte und Anwendungen) mehr mit dem CLDC und dem (wichtigsten darauf aufbauenden Profile) MIDP beschäftigen werden, will ich hier noch kurz auf die Pakete der CLDC eingehen: Implementiert wurden java.io java.lang java.util Es ist jedoch anzumerken, dass sich die Implementierungen der Funktionen grundlegend unterscheiden. Zusätzlich hinzugekommen ist noch das Paket java.microedition.io, welches Verbindungs-Klassen enthält (spezielle Netzwerk-Funktionen der Endgeräte, werden auch Generic Connection Framework – GCF genannt). Autor: Damian Raschka Einführung in J2ME.pdf 11 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 2.2 Virtual Machine (VM) Weitere Unterschiede: · · · · · keine Fließkommazahlen (da zu rechenintensiv) Fehlerbehandlung wesentlich geringer Fehlendes JNI (Java Native Interface – Fähigkeit, Bibliotheken aus anderen Programmiersprachen verwenden zu können) keine Reflections kein Class-Loader Autor: Damian Raschka Einführung in J2ME.pdf 12 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 2.3 Profiles Die Profile-Ebene setzt auf der Configuration-Ebene auf und erweitert die bestehenden API's. Da die Spezifikation durch die Configurations immer noch sehr grob ist (z.B. Handys: benutzen zwar CLDC, aber viele verschiedene Modelle, mit verschiedenen Displays oder anderen differenzierenden Merkmalen), besteht durch die Profiles die Möglichkeit, eine Anpassung an spezielle Endgeräte vorzunehmen. Sie umfassen z.B. Schnittstellen für grafische Benutzeroberflächen oder die persistente Datenhaltung, etc. Einige mögliche Profiles: · Foundation: · Personal: · · PDA: MIDP: Autor: Damian Raschka Erweiterung der CDC, bzw. Basis für weitere, auf CDC aufbauende Profiles. Weitere Unterstützung des Foundation Profiles. Erweiterung der Schnittstelle um GUI-Komponenten. Erweiterung der CLDC. Optimierung für den Einsatz auf PDA's. Mobile Information Device Profile. Geht auf spezielle Anforderungen von mobilen Endgeräten ein (Handys, Pager, usw.). Das am meisten eingesetzte Profil. Einführung in J2ME.pdf 13 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 2.4 Zusammenfassung Letztendlich ergibt sich durch diese drei Ebenen und durch die zwei verschiedenen Configurations ungefähr folgender Aufbau: Abb. 4 – Beispiel Aufbau, OS = Operating System (Betriebssystem) Ergänzend sei hier jedoch noch angemerkt, dass es sich bei der Aufzählung der Profiles nur um einen Ausschnitt der möglichen handelt. Jede Seite könnte also noch mit weiteren ergänzt werden. Autor: Damian Raschka Einführung in J2ME.pdf 14 / 35 Fachhochschule Dortmund Fachbereich Informatik 3 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Installation Für die Installation bestehen zwei Möglichkeiten: 1. Installation der Einzelkomponenten (hier: CLDC und MIDP), oder 2. das J2ME Wireless Toolkit (WTK) Wie Abb.2 bereits zeigte, ist die Basis einer J2ME-Entwicklungsumgebung die J2SE. Sie muss also vor der Installation der J2ME bereits installiert sein. (J2SE unter java.sun.com/j2se/index.jsp) Autor: Damian Raschka Einführung in J2ME.pdf 15 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 3.1 Einzelkomponenten CLDC Den Download finden Sie unter: wwws.sun.com/software/communitysource/j2me/cldc/download.html Installation in ein beliebiges Verzeichnis. Nach der Installation sollte das Unterverzeichnis \bin als globale Pfadvariable aufgenommen werden. Dabei gehen Sie folgendermaßen vor: Win 95/98/ME Die Datei Autoexec.bat bearbeiten und folgende Zeile entweder anlegen oder ergänzen: PATH=[Ziellaufwerk\Installationsverzeichnis]\bin\win32. Beispiel: PATH=C:\j2me\j2me_cldc\bin\win32 Win2000/XP => Start =>Systemsteuerung => System => Erweitert => Umgebungsvariablen Abb.5 - Systemeigenschaften Autor: Damian Raschka Einführung in J2ME.pdf 16 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 3.1 Einzelkomponenten => Eintrag PATH suchen Abb.6 - Umgebungsvariablen und wie oben beschrieben anpassen Abb.7 – PATH CLDC bin Autor: Damian Raschka Einführung in J2ME.pdf 17 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 3.1 Einzelkomponenten Als nächstes wird das MIDP installiert. Den Download finden Sie unter: wwws.sun.com/software/communitysource/j2me/midp/download20.html Nach der Installation ebenfalls das Unterverzeichnis \bin der Umgebungsvariablen PATH hinzufügen. Abb.8 – MIDP PATH bin Ist dies erledigt, müssen noch zwei weitere Umgebungsvariablen gesetzt werden: · MIDP_HOME C:\j2me\midp2.0fcs Abb.9 - MIDP_HOME · CLASSPATH C:\j2me\midp2.0fcs\classes Abb.10 - CLASSPATH Autor: Damian Raschka Einführung in J2ME.pdf 18 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 3.1 Einzelkomponenten Um die erfolgreiche Installation zu testen öffnet man einfach eine Eingabeaufforderung und tippt dann in der Kommandozeile folgendes ein: midp -version Abb.11 - Eingabeaufforderung Das Ergebnis (die Ausgabe) sollte dem in Abb.11 entsprechen Autor: Damian Raschka Einführung in J2ME.pdf 19 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 3.2 Wireless Toolkit (WTK) Statt der Einzelkomponenten bietet Sun auch ein Gesamtpaket an. Dies macht nicht nur die Installation einfacher, sondern bringt auch noch die GUIAnwendung KToolbar mit. Sie erspart einem wesentliche Arbeit, nicht nur, weil man durch nicht mehr über Kommandozeile arbeiten muss, sondern auch, weil sie die in der Entwicklungsphase auszuführenden Schritte (siehe Kapitel 4) vereinfacht und beschleunigt. Ein weiterer großer Vorteil sind die enthaltenen Emulatoren für verschiedene Endgeräte. Durch sie wird es ermöglicht, die Anwendung ausgiebig zu testen, ohne sie jeweils auf das Endgerät laden zu müssen. Das WTK kann unter java.sun.com/products/j2mewtoolkit/download-2_1.html in der Version 2.1 runter geladen werden. Es sei jedoch darauf hingewiesen, dass es sich bei dem WTK um keine komplette Entwicklungsumgebung (IDE) handelt! Es ist kein Editor enthalten! Das WTK “nur” ein Werkzeug Projektverwaltung. Der Quellcode muss mit einem externen Editor erstellt werden. In früheren Versionen war es jedoch möglich, das WTK in eine bestehende Forte for Java Installation zu integrieren. Aus dieser Kombination erhielt man eine komplette MIDP-Entwicklungsumgebung. Bei der Installation des WTK wäre noch auf folgendes zu achten: Vor der Bestimmung des Installationspfades wird noch nach dem Installationspfad einer installierten J2SE (VM) gefragt. Wenn eine installiert ist, wird automatisch dessen Verzeichnis vorgeschlagen. Sind jedoch mehrere installiert, wird nicht automatisch die aktuellste Version vorgeschlagen! Hier muss man dann über die Schaltfläche Browse selber das Verzeichnis bestimmen. Auf Abb.12 sehen wir solch einen Fall. Entdeckt wurde jdk1.4 in dem InstallationsVerzeichnis von JBuilderX (eine umfangreiche Entwicklungsumgebung von Borland). Das Verzeichnis wurde daraufhin manuell auf die Installation 1.4.2 umgestellt. Autor: Damian Raschka Einführung in J2ME.pdf 20 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 3.2 Wireless Toolkit (WTK) Abb.12 – WTK-Install Es sollte jedoch noch angemerkt werden, dass es neben dieser Standard/Referenz Umgebung von Sun auch noch Umgebungen von Drittanbietern gibt. Seien es nun geräte-/serienspezifische SDKs/APIs, wie z.B. von Nokia, Sony Ericsson, Siemens, o. A. als auch IDE Umgebungen/Plugins, wie z.B. das erwähnte JBuilderX von Borland oder das Eclipse J2ME Plugin (Vers. 0.4.5). Zusätzliche SDK/API bringen z.B. zusätzliche gerätespezifische Funktionen für Zugriffe/Benutzung von Tasten, Grafiken, Sound, Vibration, Beleuchtung, usw. Auf den Download, Installation und Benutzung/Verwendung wird hier jedoch nicht weiter eingegangen. Download-Adressen entnehmen Sie bitte Kapitel 6 - Referenzen Autor: Damian Raschka Einführung in J2ME.pdf 21 / 35 Fachhochschule Dortmund Fachbereich Informatik 4 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Erstellen von Programmen Bevor wir nun KToolbar vorstellen und danach (“endlich” ;-) zum Aufbau von Programmen kommen, erfolgt zuerst noch mal eine kurze Zusammenfassung der nötigen Schritte zur Erstellung eines Programms. Abgeschlossen wird das Kapitel durch eine kurze Einführung in das MIDP-GUIModell. 4.1 Nötige Schritte Hier seien nur kurz die 6 nötigen Schritte zur Erstellung einer lauffähigen Applikation (bei MIDP Applikationen auch MIDlet genannt) erklärt. Es wird nur kurz auf die Bedeutung einzelner Schritte eingegangen, jedoch nicht die Ausführung erklärt. Wird ein Tool wie z.B. KToolBar benutzt, wird einem mehr oder weniger ein Großteil der Arbeit abgenommen (außer 1. ;-). Wird jedoch ausschließlich per Hand (Kommandozeile) gearbeitet, bleibt einem nicht erspart, die einzelnen Schritte selbst auszuführen. 1. Schreiben des Java-Quellcodes (Kein Kommentar) 2. Kompilieren (Kein Kommentar) 3. Pre-Verifizieren: Überprüft alle class-Dateien auf mögliche Laufzeitfehler. Warum? Auch bei J2SE wird eine Verifizierung durchgeführt. Dies geschieht dort jedoch während der Laufzeit und dabei wird ein zusätzlicher Speicher von 60-100 KB benötigt. Bei CLCD-Geräten wäre dadurch jedoch bereits ein beträchtlicher, wenn nicht sogar der Großteil des Speichers belegt. Deshalb wird hier der Preverifizierer aufgerufen, der diesen nötigen Schritt vorher (vor der Laufzeit) erledigt. Die Informationen werden innerhalb der class-Datei abgelegt und das CLDC-Gerät überprüft dann nur noch mal kurz die class-Datei auf diesen Hinweis. 4. Erstellen eines JAR-Archivs: Alle benötigten Klassen (MIDlets) und Ressourcen werden für die Auslieferung in einer JAR-Datei zusammengefasst 5. Erstellen einer JAD-Datei: Der Java Application Descriptor stellt Informationen über eine Anwendung zur Verfügung. Sie ähnelt der Manifest Datei (wird in einem JAR-Archiv angelegt), nur das sie außerhalb des JAR-Archivs liegt. Sie dient dazu, Informationen über die Anwendung zu liefern, bevor diese (auf das Gerät/in den Speicher) geladen wird! 6. Testen des MIDlet (im Emulator) Autor: Damian Raschka Einführung in J2ME.pdf 22 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.2 KToolbar Wie bereits erwähnt, handelt es sich um KToolbar um eine Anwendung zur ProjektVerwaltung. Dabei nimmt es einem so gut wie alle oben erwähnten Schritte ab. Hier nun ein kleiner “User-Guide”: Öffnen sie das Programm über Start => Programme => J2ME Wireless Toolkit => KToolbar Abb.13 KToolbar Opened Wählen Sie dann New Project Im nun erscheinenden Dialog müssen sie einen Projekt-Namen und den MIDletKlassen-Namen eingeben. Abb.14 KToolbar New Project Autor: Damian Raschka Einführung in J2ME.pdf 23 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.2 KToolbar Sie können aber auch ein bereits existierendes Projekt öffnen. Dabei sucht KToolbar standardmäßig im J2ME-Installationsverzeichnis, im Unterordner Apps. Abb.15 KToolbar Open Project Hat man sich für ein neues Projekt entschieden und die erforderlichen Namen eingegeben, erscheint als nächstes der Settings-Dialog. Abb.16 KToolbar New Settings Autor: Damian Raschka Einführung in J2ME.pdf 24 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.2 KToolbar Wie man sieht, sind bereits alle wichtigen Einstellungen vorgenommen worden. Abb.17 KToolbar New Settings2 Wenn man den Settings Dialog bestätigt erscheint nun in der Hauptkonsole folgende Ausgabe. In \Apps wurde ein neuer Ordner mit dem Projekt-Namen erstellt. Abb.18 KToolBar New Project Saved Hier wird uns auch nun mitgeteilt, wohin wir unsere fertige Java-Quellcode-Datei und andere Ressourcen hin kopieren sollen. Nachdem wir alle notwendigen Dateien in die entsprechenden Verzeichnisse kopiert haben betätigen wir den Knopf “Build”. Autor: Damian Raschka Einführung in J2ME.pdf 25 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.2 KToolbar KToolbar kompiliert daraufhin die Quell-Dateien. Sollten dabei Fehler auftreten, werden die Fehlermeldungen (mit Angabe der Fehler-Zeile) in der Konsole angezeigt. Abb.19 KToolbar - Build Autor: Damian Raschka Einführung in J2ME.pdf 26 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.2 KToolbar Wenn Sie sich beim Erzeugen des Projekts mit dem MIDlet-Namen vertippt haben, können Sie das jetzt immer noch über Settings/MIDlets korrigieren. Abb.20 KToolbar Settings Ist dann alles reibungslos abgelaufen können Sie nun mit “Run” Ihre Anwendung testend. Abb.21 Abb.22 KToolbar Emulator Autor: Damian Raschka Einführung in J2ME.pdf 27 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.2 KToolbar Wenn nach dem Testen alles problemlos läuft, können Sie nun unter der MenüOption Project/Package/Create Package die JAR- und JAD-Datei anlegen lassen. Die beiden Dateien werden im \bin Verzeichnis des Projekts abgelegt. Abschließend können Sie nun einen Ordner mit den beiden Dateien auf Ihr Gerät laden. Wenn alles geklappt hat sollte es nun dort laufen. 4.3 Aufbau eines Programms Schauen wir nun mal in unser erstes Programm. Abb.23 Quellcode Zunächst sehen wir die beiden import-Anweisungen. Die erste ermöglicht uns die Nutzung des MIDlet – Pakets, während uns die zweite gestatten soll, grafische Elemente in unser MIDlet einzubinden. Autor: Damian Raschka Einführung in J2ME.pdf 28 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.3 Aufbau eines Programms Als nächstes müssen wir unsere Klasse von MIDlet ableiten, da wir ja ein MIDlet erstellen wollen. Als nächstes fallen hier jetzt 4 Methoden auf. Die erste beschreibt den Konstruktor, der jedoch nicht unbedingt notwendig ist. Die anderen drei sind die Methoden startApp(), pauseApp() und destroyApp(). Sie müssen immer implementiert werden, der Rumpf kann aber leer gelassen werden. Die Implementation ist deshalb so wichtig, da sie den Programmablauf, und somit auch die 3 Zustände eines MIDlets widerspiegeln. Abb.24 MIDlet Zustände · Paused: · · Active: Destroyed: Zustand der Inaktivität nachdem Ausführen des Konstruktors. Kann mehrfach eingeleitet und wieder verlassen werden. Führt gerade eine Funktion aus. Nicht Paused. Nach dem Ende der Ausführung. Freigabe der Ressourcen. Normalerweise übernimmt der Applikations-Manager die Steuerung des MIDlets. Er erkennt z.B. automatisch, wenn das MIDlet keine Aktionen ausführt und nimmt entsprechenden Zustandswechsel vor. Man kann den Manager jedoch auch explizit Zustandswechsel durchführen lassen. Dies geschieht durch folgende Methoden: · · · resumeRequest() notifyPaused() notifyDestroyed() Autor: Damian Raschka Wechsel in den Zustand Active Wechsel in den Zustand Paused Zustand Destroyed, beendet MIDlet Einführung in J2ME.pdf 29 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.4 MIDP-GUI-Modell Das Paket javax.microedition.lcdui beinhaltet alle Wichtigen Komponenten und Schnittstellen für grafische Darstellung des MIDP-GUI-Modells. Allen Voran die Klassen Display und Screen, aber dazu gleich noch mehr. Vielmehr sollte aber auch noch erklärt werden, dass dieses Modell keine “eingeschränkte Version” der AWT-API ist, also nichts mit AWT oder auch SWING zu tun hat, sondern ein völlig anderes, eigenes Display-Konzept verfolgt. Gründe gegen AWT: · AWT ist für Anwendungen von Desktop-Rechnern ausgelegt · Unterscheidung von Eingabegeräten am Desktop und mobilen Rechnern · Layout- und Fenster-Verwaltungsoptionen von AWT übersteigen die Anforderungen von mobilen Geräten bei weitem. Die Klasse Display Sie liefert den Zugriff auf das Display eines Gerätes. Pro MIDlet kann nur ein einziges Display-Objekt existieren (da das Objekt auch den Display-Manager zur Verfügung stellt). Die Klasse Screen Die aktuelle, sichtbare Darstellung auf dem Display wird Screen genannt. Es kann und wird immer nur ein Screen gleichzeitig dargestellt. Mehrere Screens sind jedoch beliebig austauschbar. Autor: Damian Raschka Einführung in J2ME.pdf 30 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.4 MIDP-GUI-Modell Abb.25 Display-Screen Model Durch die Display-Methode setCurrent(Screen scr) setzt und aktualisiert man die Referenz auf den jeweils anzuzeigenden Screen. Aber bevor wir weiter darauf eingehen, müssen wir noch eine kleine Unterscheidung der MIDP-API in zwei Teilbereiche machen: 1. High-Level-API: Allgemeine Darstellung ohne direkten Hardware-Zugriff. Nur sehr begrenzte Möglichkeiten der Einflussnahme auf die GrafikElemente. Bei Zielsetzung einer höchstmöglichen Kompatibilität zu wählen. Klasse: Screen 2. Low-Level-API: Weitergehende Möglichkeiten zur Manipulation und zur Anpassung von Grafikkomponenten, Umfassende Kontrolle über die grafische Darstellung auf dem Bildschirm. Kompatibilität des MIDlet ist für andere Geräteplattformen (als das Zielsystem) nicht Gewährleistet. Klasse: Canvas. Autor: Damian Raschka Einführung in J2ME.pdf 31 / 35 Fachhochschule Dortmund Fachbereich Informatik Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME 4.4 MIDP-GUI-Modell Theoretisch ist Canvas auch ein Screen, da es ebenfalls den ganzen Bildschirm ausfüllt. Der Unterschied liegt nur darin, dass Canvas den vollen manipulativen Zugriff auf seine Elemente zulässt. Screen ist jedoch eine abstrakte Klasse und wird in der High-Level-API von den 4 folgenden abgeleiteten Klassen repräsentiert: · · · · Textbox: List Alert Form (Texteingabe, Eingabefeld) (Auswahl-Listen) (Angabe von Informationen oder Meldungen. (Container für andere/mehrere Elemente) Dabei wird die Darstellung der ersten drei auch als Screen realisiert, also auf dem ganzen Bildschirm. Weshalb auch nur eine Komponente dargestellt werden kann. So eine Art Gegenstück zu Screens sind Items, da sie meist nur einen teil des Bildschirms einnehmen, sich in einem gewissen Rahmen positionieren lassen und auch mehrere gleichzeitig zulassen. Der Behälter für Items ist Form. Autor: Damian Raschka Einführung in J2ME.pdf 32 / 35 Fachhochschule Dortmund Fachbereich Informatik 5 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Ausblick / Empfehlung Eine klare Empfehlung auszusprechen ist meiner Meinung nach ein wenig schwierig. Gerade durch die technische Entwicklung im Segment der Mobiltelefone erfolgt in den letzten 2, 3 Jahren ein drastischer Anstieg in der Entwicklung von Software. In dem momentanen Boom kriegt man vor allem die Verbreitung von Software im Unterhaltungssektor, also Spiele mit. Aber auch andere Produkte machen sich jetzt mehr und mehr auch auf Handys breit, die man vorher nur auf leistungsstärkeren PDAs gefunden hat (z.B. GPS, Satellitennavigation). Gerade durch den technischen Schub im Handy-Bereich erhält die Technik Java mit J2ME die Möglichkeit sich zu “verbreiten” und nicht nur eine Größere Konsumentenschar zu bedienen, sondern auch vermehrt das Interesse von Entwicklern an sich zu ziehen. Ein Manko wird jedoch auch weiterhin bleiben, sich mit Java auf kleinen Geräten, gerade auf Handys, nicht die volle Leistungsfähigkeit nutzbar machen zu können. Zumindest nicht ohne an Portabilität zu verlieren. Zudem kommt hinzu, dass sich auch nicht jeder mit den kleinen, bunten, “nervigen” Dingern anfreunden kann. Für manche sind diese Geräte einfach nur nervig, für andere nur Gebrauchsgegenstände. Trotz der Beschränkung der Ressourcen effizient zu Programmieren könnte aber auch für so manch einen ein weiterer Anreiz sein. Mit Prognosen vorsichtig zu sein zeigt die Seminar-Arbeit von Marco Dubacher und Markus Blatter für das Institut für Informatik der Universität Zürich von 2001. Thema des Seminars war Java, Embedded Systems and Mobile Commerce. Dabei untersuchten die beiden das MIDP genauer und Prognostizierten/Mutmaßten letztendlich, dass es MIDP sehr schwer haben würde, sich (wenn überhaupt) am Markt durchzusetzen. Das verwundert nicht unbedingt, war das MIDP zu diesem Zeitpunkt weder so entwickelt wie heute, noch gab es die große Masse an Geräten dafür. Der größte Einsatzbereich, PDA's war noch durch individuellere, hardwarenähere Lösungen bedient. Dies zeigt nur, wie schnell sich der Markt und Nachfrage und Bedürfnisse ändern können. Ich komme zu dem Schluss, dass durch momentane hohe Nachfrage die Entwicklung sowohl im Konsumenten als auch im Bereich m-Commerce und Dienstleistungen weiter steigen und positiv verlaufen wird. Dabei kommt die technische Weiterentwicklung dem nur zugute, vor allem was die Portabilität anbelangt. Autor: Damian Raschka Einführung in J2ME.pdf 33 / 35 Fachhochschule Dortmund Fachbereich Informatik 6 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Referenzen Verwendete Quellen: Java 2 Micro Edition Das Einsteigerseminar Sebastian Eschweiler Verlag moderne industrie Buch, 2003 J2ME Developers Guide Michael Kroll, Stefan Haustein Markt + Technik Verlag, 2003 Links: J2SE Download: CLDC Download: MIDP Download: WTK Download: MIDP Emulatoren: Tutorials: Techn. Artikel: Beispiele: Anwendungen Dokumentationen: FAQs: 3rd Party: Autor: Damian Raschka J2SE unter java.sun.com/j2se/index.jsp wwws.sun.com/software/communitysource/ j2me/cldc/download.html wwws.sun.com/software/communitysource/ j2me/midp/download20.html java.sun.com/products/j2mewtoolkit/download-2_1.html developers.sun.com/techtopics/mobility/midp/ articles/emulators developers.sun.com/techtopics/mobility/learn developers.sun.com/techtopics/mobility/reference/ techart/index.html developers.sun.com/techtopics/mobility/reference/ codesamples/index.html developers.sun.com/techtopics/mobility/reference/ docs/index.html developers.sun.com/techtopics/mobility/reference/ faqs/index.html developers.sun.com/techtopics/mobility/allsoftware Einführung in J2ME.pdf 34 / 35 Fachhochschule Dortmund Fachbereich Informatik 6 Komponentenorientierte Softwareentwicklung und Hypermedia Einführung in J2ME Referenzen Beispiel-Anwendungen · Falk Activepilot Navigationssystem www.activepilot.com · Mobile Education Mobiles Lernen, Dienst der Fernuniversität Hagen www.mobile-education.de · Firma Dialogs Software GmbH mehrere Applikationen und Dienste · Materna Anny Way, Mobile Solutions by Materna · www.elkware.de Spiele Autor: Damian Raschka Einführung in J2ME.pdf 35 / 35