Westfälische Wilhelms-Universität Münster Ausarbeitung JavaME Konfigurationen (im Rahmen des Seminars "Mobile Java") Yifan Tan Themensteller: Prof. Dr. Herbert Kuchen Betreuer: Michael Poldner Institut für Wirtschaftsinformatik Praktische Informatik in der Wirtschaft Inhaltsverzeichnis 1 Einleitung................................................................................................................... 3 2 Konfigurationen in Java ME...................................................................................... 4 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 2.2.4 3 CLDC 1.1.......................................................................................................... 5 Grundkonzept................................................................................................ 5 Eigenschaften................................................................................................ 7 Klassenbibliotheken.................................................................................... 10 Neuerung der CLDC 1.1 im Vergleich zu 1.0 ............................................ 15 CDC ................................................................................................................ 16 Anforderungen an die Hardware................................................................. 16 Aufbau und Eigenschaften.......................................................................... 16 Sicherheitssystem........................................................................................ 17 Einschränkungen und Erweiterungen im Vergleich zur J2SE.................... 18 Zusammenfassung ................................................................................................... 19 Literaturverzeichnis ........................................................................................................ 20 1 Einleitung „Bis Ende 2006 werden weltweit 986 Millionen Mobiltelefone verkauft werden. Die Zahl der verkauften Geräte dürfte 2007 weltweit bei 1,1 Milliarden liegen.“ Das ist das Ergebnis einer am 22.11.2006 veröffentlichten Studie der Marktforschungsfirma Gartner [Ga06]. Jetzt gibt es kaum noch Menschen, die nicht über mindestens ein Mobiltelefon erreichbar sind. Ein Mobiltelefon von heute bietet viel mehr als nur die Möglichkeit zu telefonieren, z.B. die Möglichkeit MMS Nachrichten zu versenden, Klingeltöne zu ändern, eine Kamerafunktion, eingebaute Spiele usw. Außerdem bietet es die Möglichkeit, spezielle Anwendungen aus dem Internet auf das Handy zu laden. Die Java Micro Edition (J2ME) ist die jüngste, auch kleinste Generation der Java 2 Plattform Familie. Das Anwendungsgebiet der J2ME liegt im Bereich der mobilen Applikationen und der Möglichkeit, Java Applikationen auch mit beschränkten Ressourcen zu nutzen. Die Konfiguration ist eines der wichtigsten technischen Konzepte, auf denen die J2ME beruht. Diese Arbeit soll die Connected Limited Device Configuration und Connected Device Configuration vorstellen und deren Begrenzungen und Erweiterungen zur Java 2 Standard Edition (J2SE) diskutieren. Fragen wie: Wozu werden Konfigurationen in Rahmen der J2ME benötigt? Welche Rahmenbedingen werden von Konfigurationen geregelt? Welche grundlegenden Unterschiede lassen sich bei den Konfigurationen in J2ME gegenüber der anderen Java Edition erkennen? werden schrittweise im Verlauf dieser Arbeit beantwortet. Nach der Einleitung wird zunächst auf die theoretischen Grundlagen zu den Konfigurationen in J2ME eingegangen. Dabei werden zwei verschiedene Konfigurationen vorgestellt. Im Kapitel 2.1 und 2.2 wird eine Detailanalyse über die Anforderungen und Aufgaben, den Aufbau und die Eigenschaften der jeweiligen Konfiguration gebildet. Weiterhin werden Klassenbibliotheken beschrieben und ausführlich auf die spezifischen Klassen der Konfigurationen eingegangen. In diesem Zusammenhang wird auch ein Vergleich zur J2SE vorgestellt, der sich nach Einschränkungen aufgliedert. Die gewonnen Erkenntnisse werden im abschließenden Teil der Arbeit zusammengefasst. -3- 2 Konfigurationen in Java ME Die Zahl der auf dem Markt verfügbaren Geräte, wie Handys und PDAs, steigt ständig an. Jedes Endgerät hat eigene Eigenschaften. Die Java Laufzeitumgebung muss auf diese Eigenschaften abgestimmt sein. Neben vielen Unterschieden gibt es aber auch Gemeinsamkeiten, z.B. bei Prozessoren und Speichergröße. Deshalb ist es sinnvoll, gleichartige Geräte zusammenzufassen und jeder Gruppe eine speziell angepasste Version der J2ME zur Verfügung zu stellen. Konfigurationen definieren eine horizontale Gruppierung der Produkte, die auf der gleichen Größe des Hauptspeichers und Leistung des Prozessors basieren. Anhand dieser Basis an unterstützten Hardwaremerkmalen werden von der Konfiguration folgende Angaben definiert [RTP04]: • Die Unterstützung von Merkmalen und Eigenschaften der Java-Programmiersprache • Die Unterstützung von Merkmalen und Features der Java Virtuelle Maschine • Die unterstützten Java - Application Programming Interfaces (APIs). Konfigurationen sind Spezifikationen innerhalb der J2ME Architektur, die von einer Expertengruppe definiert werden, die den Java Community Prozess (JCP) verwendet. Zurzeit gibt es zwei J2ME Konfigurationen: • Connected Limited Device Configuration (CLDC) • Connected Device Configuration (CDC) Die CLDC konzentriert sich auf persönliche Endgräte mit beschränkter Speicherausstattung, schwacher Rechenleistungen [KH03], einer geringen Bandbreite und oftmals instabilen Netzwerkverbindungen, wie z.B. bei Mobiltelefonen. Die CDC ist geeignet für die Endgeräte mit größerer Speicherausstattung, dauerhaften Netzwerkverbindungen und vielfältigen Benutzerschnittstellen, wie z.B. bei Autonavigationssystemen. Abbildung 1 veranschaulicht das Verhältnis zwischen Konfigurationen und virtuellen Maschinen und zeigt die unterschiedlichen Anwendungsbereiche von CLDC und CDC. Konfigurationen legen den Zusammenhang zwischen einem Profil und der Java virtuellen Maschine fest. Profile stellen Geräte und User-spezifische APIs zur Verfügung. -4- Abbildung 2: Anwendungsbereiche von CLDC und CDC Wie in dieser Abbildung in Anlehnung an [RTP04] dargestellt, haben die CDC und die CLDC Konfigurationen ihre eigenen virtuellen Maschinen. Die CDC benutzt die Connected-Virtuelle Maschine (CVM) und die CLDC verwendet die Kilobyte-virtuelle Maschine (KVM) [To02]. Die Implementierung einer J2ME virtuellen Maschine muss die Spezifikationen beachten, die durch die Konfiguration definiert werden. Besonders im KVM wird Funktionalität explizit entfernt, um der geringen Speicheranforderung der CLDC zu genügen [GDC02]. 2.1 CLDC 1.1 2.1.1 Grundkonzept 2.1.1.1 Zielsetzungen Einer der wichtigsten Gründe für die Entwicklung der J2ME ist die Festlegung des Standards einer Java-Plattform für kleine, vernetzte Geräte mit eingeschränkten Ressourcen. Dies ist die Aufgabe der CLDC, die damit die Anforderung erfüllt, dynamische Java-Anwendungen auf Geräten wie zum Beispiel Handys oder Organizern auszuführen. Das Primärziel dieser Konfiguration ist, dass die CLDC Spezifikation einen „kleinsten gemeinsamen Nenner“ [Ma02] definiert, der nur die minimalen Java -5- Plattform-Eigenschaften und die APIs für eine große Anzahl unterschiedlicher Endgeräte bereitstellt. Ein weiteres Ziel der CLDC ist es, die Java-Plattform nicht nur aufgrund der eingeschränkten Ressourcen zu minimalisieren, sondern gleichzeitig einen mächtigen Befehlssatz für die möglichst einfache Entwicklung mobiler Anwendungen bereitzustellen. Die CLDC garantiert dem Programmierer, dass seine Software auf allen Geräten lauffähig ist, welche die CLDC-Klassen bereit stellen. Vorteile für den Programmier bzw. Entwicklers und auch für der Gerätehersteller werden durch die CLDC-Referenzimplementierung (RI) realisiert. Sie ist in erster Linie für HandwareIndustrie von Interesse, die die CLDC auf eine neue Handware portieren und nativen Code einbinden möchten. 2.1.1.2 Anforderungen an die Handware und Software Die CLDC schränkt nicht die Hardware-ausstattung ein, weil sich sehr unterschiedliche Geräte anbieten, um Java zu nutzen. Die einzige Beschränkung bezieht sich auf die Speichergröße, die das Gerät bereitstellen muss. Die Mindestanforderungen der CLDC an die Hardware sind folgende [BM06]: • Es müssen mindestens 32 Kilobyte flüchtiger Speicher (RAM) für die Laufzeitumgebung von Java (JVM) vorhanden sein. • Es müssen mindestens 160 Kilobyte nichtflüchtiger Speicher (ROM) für die JavaUmgebung vorhanden sein. Diese werden von der Virtuelle Maschine (KVM) und den CLDC Bibliotheken in Anspruch genommen. • Die Verbindung zu einem Netzwerk muss vorhanden sein. Hierbei kann die Verbindung wahlweise drahtlos erfolgen. Die Bandbreite darf zudem unter 9600 Baud liegen. • Das Endgerät darf über eine mobile Stromversorgung verfügen. Die Anforderungen an das Betriebssystem des verwendeten Endgerätes sind relativ gering und definieren nur die Mindestvoraussetzung. Die einzige Grundvoraussetzung für die Software ist ein minimales „host operating system“, falls nicht der Kernel selbst die zu Grunde liegende Hardware verwalten kann. Das „host operating system“ muss weder getrennte Adressräume oder Prozesse verwalten können, noch braucht es eine Echtzeitunterstützung. Es muss nur die Ablaufsteuerung eines einzelnen Prozesses überwacht werden, um die Java Virtuelle Maschine ausführen zu können. -6- 2.1.1.3 Anwendungsgebiete und -abgrenzungen Um den geringen Speicher nicht zu übersteigen, hat die CLDC Expertengruppe entschieden, den Anwendungsbereich von CLDC möglichst eng einzuschränken. Basierend auf den Entscheidungen der Expertengruppen JSR-30 und JSR-139 [BM06], deckt CLDC Spezifikation die folgenden Anwendungsgebiete ab: • Festlegung der Merkmale der Java Sprache und der Virtuelle Machine • Bestimmung des Kerns der Java Bibliotheken [java.lang.*, java.util.*] • Input und Output auf dem Endgerät (java.io.*) • Sicherheit • Netzverbindungen • Internationalisierung Folgende Aufgaben gehören nicht zu dem Anwendungsgebiet der CLDC Spezifikation, sondern werden von den jeweiligen Profilen umgesetzt: • Installation, Ausführung und Entfernen von Anwendungen • Benutzerschnittstelle • Ereignisbehandlung 2.1.2 Eigenschaften 2.1.2.1 CLDC Application Model Der Aufbau einer J2ME-Implementierung in einem Mobiltelefon wird in Abbildung 2 veranschaulicht. Er besteht aus einer virtuellen Maschine, einer Konfiguration und einem oder mehreren Profilen. Die Implementierung einer CLDC umfasst eine virtuelle Maschine (KVM), welche der Java VM Spezifikation und der Java-Sprachspezifikation entspricht. Die virtuelle Maschine ist ein Bestandteil, der logisch über dem Host Betriebssystem sitzt. Über der virtuellen Maschine sind die Java Bibliotheken hinterlegt. Einige dieser Bibliotheken werden durch die CLDC selbst definiert. Zusätzliche Bibliotheken und Eigenschaften können durch J2ME Profile definiert werden, welche auf CLDC bzw. CDC basieren. -7- J2ME Application Mobile Information Device Profil PDAP PDA Profil CLDC (Connected Limited Device Configuration) Klassebibliothek CLDC Profiles MIDP K Virtuelle Maschine Betriebssystem (PalmOS, Windows32, Linux oder Solaris) Abbildung 2: Aufbau der CLDC Application Modell Auf dem Markt stellen einige mobile Endgräte eine graphische Benutzschnittstelle zur Verfügung, während andere nur eine Text-Benutzerschnittstelle bieten können bzw. keine sichtbare Benutzerschnittstelle haben. Die CLDC kann keiner spezifischen Kategorie der Endgräte zugeordnet werden. Aus diesem Grund ist das Anwendungsmodell, das in der CLDC Spezifikation definiert wird, relativ einfach. Die CLDC umfasst eine Sammlung von class-files, auf welche sich die Anwendungen stützen. Sie enthalten die Methode main, die als eine Startmethode für jedes Java Application ist. Die Methode main wird wie folgt deklariert: public static void main (String [] args). Durch den Aufruf von main startet die KVM eine Java Application. J2ME Profile, wie das Mobile Information Device Profile (MIDP), können alternative Anwendungsmodelle definieren, die das grundlegende Anwendungsmodell von CLDC definiert oder erweitet. Das Management der Anwendungen bezieht sich auf die folgenden Fähigkeiten: • Download und installation einer Java Application • Kontrolle der bestehenden Java Application, die auf den Endgeräten gespeichert werden • Auswahl und Durchführung der Java Application -8- • Löschen einer bestehenden Java Application Das CLDC System kann mehrere Java Applications gleichzeitig ausführen lassen oder das System beschränken, um nur die Durchführung von einer Java Application zu ermöglichen. Dieses ist abhängig von den zur Verfügung gestellten Ressourcen auf dem Endgerät. Die gleichzeitige Ausführung mehrerer Java Applicationen wird entweder von der Multitaskingfähigkeit auf dem Host Betriebssystem oder von mehreren logischen virtuellen Maschinen unterstützt. An dieser Stelle entscheidet die CLDC sich für eine optimale Lösung. 2.1.2.2 Sicherheit Die Sicherheit spielt im Bereich mobiler Anwendungen und kabelloser Netze eine besonders wichtige Rolle. Die J2SE ist so aufgebaut, dass sie den Entwicklern eine Reihe umfangreicher und flexibler Schutzmechanismen bietet. Die Gesamtmenge des Codes für Sicherheit in der J2SE ist größer als der Gesamtspeicher, der für die CLDC vorhanden ist. Daher ist das Sicherheitsmodell der CLDC im Vergleich deutlich eingeschränkt [Es03]. Das Sicherheitsmodell der CLDC wird auf zwei unterschiedlichen Ebenen definiert: Das Sicherheitssystem auf low-level Ebene Es wurde eine Pre-verifikation entwickelt, die nur wenige Systemressourcen benötigt. Der gesamte Verifikationsprozess wird in zwei Teile unterteilt. Die eigentliche Klassenverifikation wird auf dem Desktop-Rechner des Entwicklers durchgeführt. Nach der Überprüfung werden die korrekten Dateien mit dem Attribut „StackMap“ markiert. Zur Laufzeit auf dem mobilen Endgerät wird nur das Attribut „StackMap“ überprüft, nicht aber die kompletten class-Dateien. Diese Überprüfung benötigt nur wenige Systemressourcen. Das Sicherheitssystem auf der Anwendungsebene Durch die Sicherheitsmaßnahmen auf der untersten Ebene können nicht alle Sicherheitslücken geschlossen werden. Dort wird nur die Gültigkeit der JavaAnwendung überprüft, was aber hat keinen Einfluss auf die von den Anwendungen durchgeführten Aktionen hat. Das Sicherheitssystem auf der Anwendungsebene sorgt -9- dafür, dass nur auf die freigegebenen Klassenbibliotheken und Systemressourcen zugegriffen wird. Dies wird gewährleistet durch die folgenden Mechanismen: - Das Prinzip des Sandbox-Modells: In diesem Modell wird eine feste Laufzeitumgebung zur Verfügung gestellt, innerhalb der die Applikationen eine gesicherte Ablaufumgebung finden. Java-Anwendungen können nur auf Klassenbibliotheken oder Ressourcen zugreifen, die zuvor definiert wurden. - Schutz der Systemklassen: Dieser Mechanismus verhindert, dass neu installierte Anwendungen Systemklassen überschreiben. 2.1.3 Klassenbibliotheken Die CLDC Klassenbibliothek enthält die Interfaces und grundlegenden Klassen, welche in zwei Kategorien eingeteilt werden. Wie in Abbildung 3 dargestellt, besteht die erste aus einer Teilmenge der Java 2 Standard Edition (J2SE) Klassen und die zweite aus CLDC-spezifischen Klassen. Abbildung 3: CLDC Klassebibliothek 2.1.3.1 Geerbte Klassen von J2SE Die Bibliothek der CLDC bietet viele Klassen, die aus J2SE 1.3.1 Bibliotheken übernommen werden. Die Klassen, die mit J2SE Klassen identisch sind oder zu einer Teilmenge der entsprechenden J2SE Klassen gehören, müssen mit dem gleichen Paketnamen definiert werden. Die Semantik dieser Klassen und ihrer Methoden darf nicht geändert bzw. ergänzt werden. In der Tabelle 1 werden die Pakete, Klassen und Interfaces in die CLDC 1.1. eingeordnet und dargestellt. - 10 - JavaPaket Klassetype System Datentypen Fehler Klassen Interfaces Objet, Class, Runtime, Thread, String, StringBuffer, Throwable Boolean, Byte, Short, Integer, Long, Character Float, Double Error, NoClassDefFoundError, OutOfMemoryError, Exception, java.lang. Exception System, Runnable VirtualMachineError ArrayIndexOutOfBoundsException, ArithmeticException, ArrayStoreException, ClassNotFoundException, ClassCastException, IllegalThreadStateException, IllegalAccessException, IllegalMonitorStateException, IllegalArgumentException, IndexOutOfBoundsException, InstantiationException, InterruptedException, NullPointerException, NegativeArraySizeException, NumberFormatException, RuntimeException, SecurityException, StringIndexOutOfBoundsException ergänzend Weak java.lang.ref Reference java.util. Math Reference, WeakReference Collections Vector, Stack, Hanshtable Klander und Zeit Calender, Date, TimeZone Exception ergänzend Input / Output java.io. Exception EmptyStackException, Enumeration NoSuchElementException, Randum InputStream, OutputStream, ByteArrayInputStream, ByteArrayOutputStream, DataInputStream, DataOutputStream, Reader, PrintStream, Writer, InputStreamReader, OutputStreamWriter InterruptedIOException, IOException, DataInput, DataOutput UnsupportedEncodingException, UTFDataFormatException Tabelle 1: Pakets, Klassentype, Klassen und Interfaces in der CLDC 1.1. Diese Tabelle zeigt, dass java.lang, java.util, und java.io jeweils nur eine Teilmenge der J2SE umfassen. Sie bieten auch nicht alle Methoden und Konstanten wie die gleichnamigen Pakete in J2SE [BM06]. - 11 - 2.1.3.2 CLDC spezifische Klassen – Generic Connection framework Die CLDC spezifischen Klassen werden im Paket javax.microedition.io deklariert. Im Bereich des Netzwerk- und Speicherzugriffes unterstützt J2SE viele unterschiedliche Funktionen der Ein- und Ausgabe für den Verbindungsaufbau. Diese Funktionen sind nicht in die CLDC übertragbar, da der Speicherbedarf zu groß wäre. Aus diesem Grund sind in dem Package „javax.microedition.io“ eine Reihe von Verbindungsklassen, die spezielle Netzwerkfunktionen implementieren, allgemein unter dem Namen Generic Connection Framework (GCF) bekannt. Durch diesen Standard ist es möglich, die Verbindungen zu einem Kommunikationspartner einheitlich durch die Connection-Schnittstelle zu realisieren [Sc07]. Der Vorteil des GCF liegt in den gleich bleibenden Schnittstellen. Unabhängig vom Übertragungsprotokoll stellt Connection ein API zur Verfügung, das auf alle Arten von Verbindungen gleichermaßen anwendbar ist. Die Syntax eines „Connector.open“-Aufrufes stellt sich wie folgt dar [RTP04]: Allgemein: Connector.open ("<protocol>:<address>;<parameters>"); HTTP Connection: Connector.open ("http://www.sun.com:port"); Socket Connection: Connector.open ("socket://129.144.111.222:2800"); Communication ports: Connector.open ("comm:0;baudrate=9600"); Datagrams Connection: Connector.open ("datagram://129.144.111.222:2800"); Die Methode Connector.open wird ein Parameter in Form eines Strings übergeben, um bei einem Verbindungsaufbau das richtige Protokoll für die Datenübertragung auszuwählen. Das Klassendiagramm in Abbildung 4 zeigt in Anlehnung an [Sc07] die wesentliche sieben Klassen und Interfaces des GCF in der CLDC. Wenn ein Verbindungsaufbau erfolgreich durchgeführt wurde, gibt die Methode ein Objekt zurück, das eines der untergeordneten Interfaces aufruft. Wie in Abbildung 4 zu sehen ist, sind die Interfaces hierarchisch angeordnet. - 12 - CLDC <exception> Connection NotFound Esception throws Connector <interface> creates Connection <interface> <interface> <interface> <interface> Datagram Connection Input Connection Output Connection Stream ConnectionNotifier creates <interface> Datagram <interface> Stream Connection <interface> Content Connection Abbildung 4: Klassendiagramm für das Generic Connerction Framework in der CLDC 2.1.3.3 Einschränkungen und Erweiterungen im Vergleich zur J2SE Aufgrund der stark eingeschränkten Ressourcen der mobilen Kommunikationsgeräte fehlen den Klassenbibliotheken der CLDC im Vergleich zur J2SE folgende Funktionen [KH03]: - finalize-Methode Zur Reduzierung des Ressourcenverbrauchs bei CLDC-Geräten ist die finalize()Methode nicht bei der Klasse Objekt zu finden. Die finalize()-Methode der J2SEPlattform unterstützt einer Methode, um offene Verbindung zu schließen (z.B. zum Speicher, Grafikkontext oder zu Streams). - 13 - - Fehler und Exceptions Die Fehlerbehandlung bei mobilen Endgeräten ist im Vergleich zu normalen DesktopSystemen deutlich vereinfacht. Wenn ein Fehler auftritt, der in der J2SE aber nicht in der CLDC definiert ist, soll die JVM anhalten oder ein Objekt einer Error Klasse der CLDC auswerfen [BM06]. Dies wird bereits bei den Exceptions deutlich, die im wesentlichen nur sehr eingeschränkt implementiert wurden. Asynchrone Exceptions werden nicht unterstützt. - Class-Loader Der Class-Loader wird von classLoader geerbt und benutzt in der zu implementierenden Methode loadClass() einen selbstgeschriebenen Algorithmus zum dynamischen Laden von Klassen übers Netzwerk oder vom Dateisystem. Aufgrund höherer Sicherheitsrichtlinien der CLDC wurde diese Eingriffsmöglichkeit des Benutzers nicht realisiert. - Thread Die KVM unterstützt nebenläufige Threads, aber keine Thread-Gruppen und DämonThreads. Der Garbage Collector ist eingeschränkt. - „Weak references“ Es gibt keine „Weak references“ in der CLDC - java native interface (JNI) Das JNI ist nicht verfügbar, um den Zugriff auf für das Java Programm nicht verfügbare Funktionalität des Geräts zu unterbinden. - Reflection Die Reflection-Fähigkeiten der CLDC sind sehr beschränkt. Sowohl class.forName()als auch class.newInstance() sind verfügbar, aber es ist nicht möglich, durch Reflection auf Methoden, Variablen order Konstruktoren zuzugreifen. - Preverifier Bytecode–Verifikation mittels Preverifier und Bytecode wurden neu implementiert und erweitet. - 14 - 2.1.4 Neuerung der CLDC 1.1 im Vergleich zu 1.0 Es gibt keine grundlegenden Änderungen in der neuen Spezifikation. Die CLDC Spezifikation Version 1.1 ist hauptsächlich eine Erweiterung. Sie ist voll abwärtskompatibel zur Version 1.0. Die Mindestanforderung an Speicher wurde von 160 auf 192 KB erhöht, um ein paar neue wichtige Funktionsfähigkeiten wie Fließkomma-Arithmetik [Sc07] hinzuzufügen. Im Folgenden sind die neuen Klassen, Ausnahmen und Methoden in CLDC 1.1 aufgeführt: • Die Datentypen Java.lang.Float und Java.lang.Double sowie deren Wrapper Float und Double wurden hinzugefügt. • Um die Fließkomma-Arithmetik zu unterstützen, wurden die Konstanten java.lang.Math.E und java.lang.Math.PI ergänzt. • Die Klassen und java.lang.ref.Reference java.lang.ref.WeakReference wurden für Unterstützung der schwachen Referenzen beigefügt. • Um eine höhere Kompatibilität mit der J2SE aufzuweisen, sind die Klassen Calender, Date und TimeZone neu entworfen worden. • Das Errorhandling wurde überarbeitet; eine neue Exception NoClassDefFoundError wurde hinzugefügt. • Attribute java.lang.Boolean.TRUE und java.lang.Boolean.FALSE und Methoden String.intern(), String.equalsIgnoreCase(), Date.toString(), Random.nextInt(int n) wurden hinzugefügt. • Die Klasse Thread wurde um neue Mehtoden erweitet. Dies sind thread.getName(), thread.interrupt(), thread.(Runnable Target, String name) und thread.(String name). Alle oben aufgelisteten Klassen und Methoden kommen aus der J2SE Bibliothek. Seit dem Jahr 2003 wird die Konfigurationsversion CLDC 1.1 von den meisten Java-fähigen Handys und Smartphones unterstützt. - 15 - 2.2 CDC 2.2.1 Anforderungen an die Hardware Die CDC wurde für Endgeräte entwickelt, die eine bessere technische Ausstattung als die Geräte der CLDC besitzen, wie z.B. eine größere Speicherausstattung, einen schnelleren Prozessor und eine stabilere Netzwerkanbindung. Die CDC hat die folgenden Anforderungen an Hardware und Software: • Das Endgerät muss mindestens einen 32-bit Prozessor besitzen. • Es müssen mindestens 2 MB nichtflüchtiger Speicher (ROM) für die Virtuelle Machine und die CDC Bibliotheken zur Verfügung stehen. • Es müssen mindestens 2 Megabyte flüchtiger Speicher (RAM) für die Laufzeitumgebung von Java bereitgestellt werden. • Die Verbindung zu einem Netzwerk muss vorhanden sein. Hierbei kann die Verbindung wahlweise drahtlos erfolgen. Die Bandbreite darf zudem unter 9600 Baud liegen. 2.2.2 Aufbau und Eigenschaften - 16 - Abbildung 5: Aufbau der CDC Application Modell Die CDC ist sehr modular aufgebaut. Jede Implementation eines CDC-Profils beinhaltet die Realisierung einer Klassenbibliothek und einer Java Virtuellen Maschine. Die CDCProfile sind in mehreren Schichten angeordnet und können vielfältig kombiniert werden. Auf diese Weise lassen sich Funktionalitäten hinzufügen oder entfernen und optimal an die jeweilige Hardwarebasis anpassen [Sc07]. Die unterste Ebene der Profile bildet das Foundation Profile (vgl. Abb.5). Das Foundation Profile besteht aus einigen Java-APIs und einer kompletten J2ME Laufzeitumgebung. Zudem wird die Netzwerkfunktionalität unterstützt. Das Personal Basis Profil und das Personal Profil liegen auf nachfolgenden Profilschichten. Sie bieten eine grafische Benutzerschnittstelle an. 2.2.3 Sicherheitssystem In der Spezifikation der CDC werden fünf Sicherheitsebenen definiert, die sowohl dem Benutzer als auch dem Anwendungsentwickler eine große Auswahl von Sicherheitsmechanismen zur Unterstützung anbieten [Sc07]: - Virtual Machine Security Die Sicherheitsebene der Virtuellen Maschine ist die unterste Schutzebene. Im Gegensatz zur CLDC übernimmt diese Schutzebene die Klassenverifikation von der J2SE-Spezifikation. Aufgrund zu hoher Sicherheitsrisiken wurden Pointer vermieden. - Signed Classes Signed Classes bieten eine Verbesserung des Sandbox-Modells aus der CLDC. Sie garantieren die Vollständigkeit und Korrektheit der Java Klassendatei, die anschließend von der Virtuellen Maschine geladen wird. - Policy-based security Basierend auf Richtlinien bietet dieses Sicherheitssystem eine Kontrollfunktion an. Mit dieser Kontrollfunktion kann der Zugriff auf Daten, Schnittstellen oder Anwendung festgelegt werden. Diese Richtlinien werden von dem Softwareentwickler festgelegt und können nur von dem Systemadministrator angepasst werden. - Cryptography - 17 - Bei dem Java Sicherheitssystem ist die Verschlüsselung durch die Java Cryptography Architecure (JCA) realisiert. Es bietet die Möglichkeit, Software und Daten für eine sichere Übertragung zu verschlüsseln. - Certificate management Bei diesem standardisierten Mechanismus findet ein Authentifizierungsprozess statt, der durch ein Zertifikat einer Person den Zugriff gewährt. 2.2.4 Einschränkungen und Erweiterungen im Vergleich zur J2SE Die CDC-Geräte haben bessere Hardwareressourcen, so dass die Virtuelle Maschine der J2SE im Prinzip nicht eingeschränkt werden müsste, sondern die komplette Spezifikation unterstützen werden kann. Im Gegensatz zu der CLDC hat die CDC jedoch zusätzliche benutzerspezifische class-Loader, eine vollständige Fehlerbehandlung und die Unterstützung von Fließkommazahlen. Auch die KlassenBibliotheken der CDC weichen nicht so stark von dem J2SE-Standard ab, wie bei der CLDC. Die einzige Einschränkung betrifft die in den Klassen-Bibliotheken vorhandenen Schnittstellen. Die CDC hat nur die benötigten Schnittstellen beibehalten. - 18 - 3 Zusammenfassung Mit dem Boom mobiler Informationsgeräte war es aufgrund der Ressourcenlimitierung mobiler Endgeräte wie Mobiltelefone, Pager und auch PDAs der Einstiegsklasse notwendig, ein neues Java Gebiet zu definieren, um Java Anwendungen nutzen zu können. Durch die Konfigurationen stellt J2ME in diesem Bereiche geeignete Lösungen zur Verfügung. Nachdem in dieser Arbeit eine umfangreiche Einführung in das Konzept der CLDC und der CDC gegeben und wichtige Unterschiede im Klassenumfang zur J2SE erläutert wurden, wurde festgestellt, dass CLDC weitaus öfter zum Einsatz kommt als CDC. CLDC ist millionenfach in Handys und mobilen Organizer implementiert. Aus diesem Grund stellt die CLDC 1.1 neben MIDP 2.0 die wichtigste Grundlage für jede Anwendung der J2ME dar. Für den Bereich der Software-Entwicklung ist zu erwarten, dass der Umfang der standardisierten Java-APIs in nächster Zeit erheblich erweitert wird, damit auch andere Funktionen nach dem Java Motto "Ein Programm auf allen Handys ausführen zu können" entwickelt werden können. Allerdings sind aufgrund der eingeschränkten Fähigkeiten der mobilen Endgräte, wie z.B. geringer Programmspeicher, kleine Displays sowie begrenzte Eingabemöglichkeiten, im Vergleich zu dem Desktop PC, bei der J2ME differente Programmiertechniken erforderlich. Es wird erwartet, dass für den Einsatz auf PDAs eine dritte Konfiguration entwickelt wird, die die Abgrenzung zwischen den Hardwaregruppen noch genauer vornehmen kann. - 19 - Literaturverzeichnis [BM06] Ulrich Breymann, Heiko Mosemann: Java Me, Anwendungsentwicklung für Handys, PDA und Co., 2. Auflag, Hanser, 2006. [Es03] Sebastian Eschweiler: Das Einsteigerseminar, Java 2 Micro Edition, 2003. [Ga06] Gartner: Handy-Absatz übertrifft Milliardenmarke, Financial Times Deutschland, 22.11.2006. [GDC02] Vikas Gupta, Avnish Dass, Yashraj Chauhan: Keneth C. Louden: Wireless Programming with J2ME, Cracking the Code, Hungry Minds, 2002. [KH03] Michael Kroll, Stefan Haustein: J2ME Developper's Guide, JavaAnwendungen für mobile Geräte, Reilly, Markt + Technik Verlag, 2003. [RTP04] Roger Riggs, Antero Taivalsaari, Jim Van Peursem: Programming Wireless Devices with thr Java 2 Platform, Micro Edition, The java Series from the Source, Second Edition 2. 2004. [Ma02] Qusay H. Mahmoud: Learning Wireless Java, Help for New J2ME Developers., O'Reilly, 2002. [Sc07] Klaus-Dieter Schmatz: Java Micro Edition, 2. Auflag, dpunkt.verlag, 2007. [To02] Kim Topley: J2ME in s Nutshell, O'Reilly, 2002 [WH02] James White, David Hemphill: Java 2 Mirco Edition, Java in small thing, Manning, 2002. - 20 -