JavaME Profile und optionale Pakete

Werbung
Westfälische Wilhelms-Universität Münster
Ausarbeitung
JavaME Profile und optionale Pakete
im Rahmen des Seminars Mobile Java
Peter Grosskopf
Themensteller: Prof. Dr. Herbert Kuchen
Betreuer: Michael Poldner
Institut für Wirtschaftsinformatik
Praktische Informatik in der Wirtschaft
Inhaltsverzeichnis
1
Einleitung...............................................................................................................3
1.1
1.1.1
1.1.2
1.1.3
2
Einführung in die JavaME..............................................................................4
Konfigurationen, die Grundlage von Profilen .............................................5
Profile ........................................................................................................6
Optionale Pakete ........................................................................................7
MIDP .....................................................................................................................8
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.3
2.3.1
2.3.2
Grundlagen ....................................................................................................8
Architektur.................................................................................................9
Hardwareanforderungen...........................................................................10
Softwareanforderungen ............................................................................12
MIDP 1.0 .....................................................................................................13
Funktionalität und Pakete .........................................................................13
MIDP 2.0 .....................................................................................................14
Unterschiede zur Vorversion ....................................................................14
Sicherheitsaspekte....................................................................................15
3
Optionale Pakete...................................................................................................17
4
Ausblick ...............................................................................................................20
Literaturverzeichnis.....................................................................................................22
II
Kapitel 1: Einleitung
1 Einleitung
Die Programmiersprache Java hat sich im letzten Jahrzehnt zu einer der führenden
Programmierumgebungen weltweit entwickelt. Die J2SE (Java 2 Standard Edition)
ermöglicht
die
Entwicklung
von
Anwendungen
für
Stand-Alone-PCs.
Die
Durchdringung von Anwendungsszenarien im betrieblichen Umfeld wird durch die
J2EE (Java 2 Enterprise Edition) unterstützt. Mit den Spezifikationen dieser Edition
lassen sich komplexe Webanwendungen und Server-Backends programmieren. Mit
zunehmender Zeit begannen sich die verschiedenen Java-Versionen immer weiter zu
vermischen. Die Grenzen der Plattformen sind fließend, zumal Rich-Clients via Internet
auf die Backends der J2EE zugreifen. Die rasante Verbreitung von Handys und PDAs
rücken mobile Endgeräte als Clientsysteme immer weiter in den Fokus. Neue
Anwendungsmöglichkeiten für Softwareprodukte werden realisierbar. Ein denkbares
Szenario wäre beispielsweise, dass ein Außendienstler mit seinem PDA oder
Mobiltelefon auf die Serverinfrastruktur seines Unternehmens zugreifen kann, um
Informationen abzurufen. Buzzwords wie „Ubiquitous Computing“, vor allem aber
„Location Based Services“ [Heise02a] sind momentan allerorten zu vernehmen. Um die
Lücke im Java-Portfolio zu schließen, wurde im Jahre 2000 die Java Micro Edition
(JavaME) eingeführt. Ziel ist es, die Java-Programmierung für mobile Endgeräte und
Embedded Systems zu ermöglichen.
Da
der
Mobilfunkmarkt
stark
umkämpft
ist,
ist
eine
Minimierung
der
Herstellungskosten erforderlich. Dies führt zum Einbau preisgünstiger Komponenten
und damit zu einer Limitierung der Ressourcen wie
Rechenleistung und
Speicherkapazität [Sc07, S.3]. Die Herausforderung und gleichzeitiges Designziel der
JavaME ist es, eine Java-Version für begrenzte Ressourcen zu konzipieren, da sich
J2SE und J2EE aufgrund der knappen Speicherressourcen auf mobilen Geräten nicht
nutzen lassen. Zugleich müssen unterschiedliche Bedienkonzepte berücksichtigt
werden, zumal diese sich von Hersteller zu Hersteller mitunter sehr stark unterscheiden.
Die gegebenen Rahmenbedingungen haben zu einer spezifischen Architektur der
JavaME geführt. Im ersten Teil der Arbeit wird zunächst in die Architektur und das
Design der JavaME eingeführt. Aufbauend auf diesen Grundlagen werden Profile
erläutert, welche maßgeblich für die Anwendungsentwicklung im Mobile-Bereich eine
Rolle spielen. In Kapitel 2 wird das MIDP im Detail beschrieben. Dieses Profil ist das
3
Kapitel 1: Einleitung
am weitesten verbreitete Profil; von daher lohnt sich ein vertiefender Einblick. Um
weitergehende Funktionalität zu bieten, werden optionale Pakete benötigt. Kapitel 3
gibt einen Überblick über die wichtigsten optionalen Pakete.
1.1 Einführung in die JavaME
Bei der Entwicklung einer Technologie für Java auf mobilen Systemen wurde eine
Architektur entworfen, welche es ermöglicht, eine möglichst breite Masse an Geräten
anzusprechen.
Kennzeichnend
Schichtenarchitektur,
wie
für
man
diese
sie
Architektur
auch
aus
ist
anderen
die
Wahl
Bereichen
einer
der
Softwareentwicklung, wie der Entwicklung von Web-Applikationen, kennt. Typisch für
eine solche ist, dass jede Schicht bestimmte Funktionalitäten bereitstellt. Auf diese kann
die darüber liegende Schicht zugreifen; die Zugriffe erfolgen also top-down. Der Vorteil
einer solchen Schichtenarchitektur ist es, dass Vereinbarungen zwischen den Schichten
in Form von Schnittstellen bzw. Interfaces getroffen werden. Es ist somit leicht
möglich, die Schichten auszutauschen, so lange die Schnittstellen eingehalten werden.
Wie Abbildung 1 zeigt, besteht die JavaME aus drei Schichten: aus Konfigurationen,
Profilen und optionalen Paketen [Sun06a].
Abb.1: JavaME – Schichtenarchitektur.
Welche Aufgaben diese Schichten im Einzelnen übernehmen, wird im folgenden
Kapitel beschrieben.
4
Kapitel 1: Einleitung
1.1.1 Konfigurationen, die Grundlage von Profilen
„Mobile Geräte haben Eigenschaften, aber nicht alle Eigenschaften sind auf allen
Geräten verfügbar“ [BM02, S.33]. Ziel der JavaME ist daher, eine Grundfunktionalität
der Programmiersprache Java zu bieten und dabei eine einfache Portierbarkeit zwischen
den Systemen und Interoperabilität zwischen den Geräten sicherzustellen. Die Java
Laufzeitumgebung wird also so angepasst, dass sie zu den entsprechenden
Eigenschaften passt. Die erste Schicht, die Konfiguration, abstrahiert von den
heterogenen Plattformen.
Eine Konfiguration ist eine Spezifikation, die eine Software-Umgebung für eine Palette
von Geräten mit bestimmten Merkmalen (Speicher, Prozessor, Networking) definiert
[To02, S.5]. Sie besteht aus einer Kombination von einer speziellen ‚Java Virtual
Machine’ und einem API, die eine möglichst breite Masse an Geräten unterstützt
[BM02, S.33]. Die Vorgabe von bestimmten Merkmalen dient dazu, einen kleinsten
gemeinsamen Nenner zu definieren [BM02, S.35]. Nur so kann sichergestellt werden,
dass jedes Gerät von jedem Hersteller ohne Anpassungen eine Java-Konfiguration
unterstützen kann. Die JavaME beinhaltet zwei verschiedene Konfigurationen: die
CLDC (Connected Limited Device Configuration) und die CDC (Connected Device
Configuration).
CLDC: Die CLDC ist eine Konfiguration für Geräte mit langsamen Prozessoren, wenig
Speicherplatz und unzuverlässigen Netzwerkverbindungen [BM02, S.20]. Sie umfasst
grundlegende Klassen und Interfaces, die ein gemeinsames Fundament für die
Anwendungsentwicklung auf der einen Seite und für die Definition von weitergehenden
Profilen, welche Gegenstand des nächsten Kapitels sein werden, auf der anderen Seite
schaffen [Sc07, S.17]. Bei der CLDC handelt es sich um eine Konfiguration, welche in
Bezug auf den Sprachumfang nur eine Teilmenge der J2SE beinhaltet [Sun06], da die
Zielplattform eher kleine, mobile Computer sind und die Hardwareanforderungen so
reduziert werden können. Für die CLDC musste daher eine eigene, spezielle Virtual
Machine entwickelt werden, die KVM (Kilobyte Virtual Machine). Da die CLDC am
weitesten verbreitet ist, liegt der Fokus dieser Arbeit primär auf ihr..
CDC: Die CDC ist eine Konfiguration für größere, teilweise nicht mobile Geräte, wie
Set-Top-Boxen und Embedded-Systems mit mindestens 2 Megabyte Speicher [BM02,
S.20]. Der Sprachumfang der CDC ist im Gegensatz zur CLDC nicht reduziert.
5
Kapitel 1: Einleitung
Die beiden Konfigurationen sind ein Versprechen an den Programmierer, nur für
wenige Plattformen entwickeln zu müssen. Er kann sich also auf zwei Plattformen
konzentrieren. Die Hersteller hingegen haben den Vorteil, dass sie eine klare Vorgabe
haben, welche Spezifikationen ihre Geräte erfüllen müssen, um Java-fähig zu sein.
1.1.2 Profile
Die zweite Schicht bilden die Profile. Sie greifen auf die Basisdienste, welche die
Konfiguration anbietet, zu, erweitern die Konfiguration allerdings um zusätzliche
Features für einen bestimmten Typ von Geräten oder ein bestimmtes vertikales
Marktsegment [To02, S.7]. Die zusätzlichen Funktionen werden in Form von APIs
(Application Programming Interfaces) zur Verfügung gestellt [Sun06a]. Diese „Higherlevel“-APIs
können
Aufgaben
wie
Benutzerschnittstellen,
Persistenz
oder
gerätespezifische Funktionen übernehmen [Sun06a]. Ein Profil ist spezifisch für die
zugrunde liegende Konfiguration [Sc07, S.6]. Dies liegt daran, dass sie wie bereits
erwähnt die Konfiguration von bestimmten Typen oder Klassen von Geräten erweitern.
Für CLDC und CDC gibt es verschiedene Beispiele für Profile. Tabelle 1 listet Profile
für die CLDC; Tabelle 2 beschreibt Profile der CDC.
Profil
MIDP
(JSR-37
bzw. 118)
Beschreibung
Die typische Kombination von Konfiguration und Profil ist CLDC plus
MIDP. MIDP steht für ‚Mobile Information Device Profile‘. Das
MIDP ist ein Profil, welches Geräte wie Mobiltelefone mit „Higherlevel“-APIs wie UI (Benutzerschnittstellen) und Persistenz ausstattet.
IMP
(JSR-195)
IMP steht für ‚Information Module Profile‘. Es ermöglicht Javafähigen Geräten die Maschine-zu-Maschine-Kommunikation. Es steht
ein Subset vom MIDP für Geräte mit wenig oder keinen grafischen
Benutzerschnittstellen
zur
Verfügung.
Dieses
Profil
kann
beispielsweise in Getränkeautomaten integriert werden. Der Automat
könnte dann den Nachschub selbstständig ordern [Sc07, S.10].
IMP-Next
Eine Weiterentwicklung des IMP. IMP-NG ist nur ein Subset der
Generation
MIDP 2.0. Es werden u.a. die verbesserten Networking- und
(JSR-228)
Sicherheitsfeatures des MIDP 2.0 aufgegriffen.
Tabelle 1: Profile für die CLDC
6
Kapitel 1: Einleitung
Profil
Beschreibung
Personal Profile (JSR-62
Enthält u.a. das AWT (Abstract Window Toolkit) um
bzw. 216)
eine mächtigere Benutzerschnittstelle zu unterstützen.
Es sind dann beispielsweise auch Applets lauffähig.
Personal Basis Profile (JSR-
Untermenge
des
Personal
Profile.
Bietet
die
129 bzw. 217)
Kernfunktionalität und minimale Grafikunterstützung.
Foundation Profile (JSR-46
Untermenge des Personal Basis Profile. Bietet
bzw. 219)
beispielsweise Netzwerkfunktionalität ohne dabei eine
Benutzerschnittstelle zu liefern.
Tabelle 2: Profile für die CDC
1.1.3 Optionale Pakete
Die optionalen Pakete bilden die oberste der drei Schichten. Sie dienen der Erweiterung
der Funktionalität, welche das Profil bietet. Wichtig wird dies an der Stelle, wo
speziellere Funktionen eines Endgeräts genutzt werden sollen. Es werden also von
bestimmten
optionalen
Paketen
bestimmte
Leistungsmerkmale
des
Gerätes
vorausgesetzt, welche einer universellen Verbreitung entgegenstehen. Anwendungen,
die optionale Pakete voraussetzen, nähern sich stark nativen Applikationen mit ihrer
eingeschränkten Portabilität an [Sc07, S.283]. Im Gegensatz zu der recht
überschaubaren Anzahl an Konfigurationen und Profilen, gibt es eine Vielzahl an
optionalen Paketen für die JavaME. So werden beispielsweise anwendungsspezifische
Erweiterungen für 3D-Grafik, Web Services, Multimedia oder Messaging für
Entwickler nutzbar. Um wichtige optionale Pakete zu einem größeren Paket
zusammenzuführen, beschäftigt sich der JSR-248 mit der Erstellung der ‚Mobile
Service Architecture‘. Diese bezweckt, dass viele der optionalen Pakete weiter
verbreitet werden und somit die Basis der Möglichkeiten wächst, welche die JavaME
bietet. Optionale Pakete werden in Kapitel 3 nochmals aufgegriffen und genauer
vorgestellt. Hierbei wird ein Fokus darauf gelegt, welche Pakete es gibt und was sie
leisten.
7
Kapitel 2: MIDP
2 MIDP
Nachdem im vorangegangen Kapitel der Aufbau der JavaME beschrieben wurde, wird
nun ein vertiefender Einblick in ein exemplarisches Profil vorgenommen. Hierbei wurde
das MIDP ausgewählt, zumal es sich dabei um das erste fertig gestellte Profil handelt
[Sun06a], welches Sun auf den Markt brachte. Auch ist es das Profil, was momentan am
weitesten verbreitet ist. Das MIDP beschreibt eine Spezifikation für mobile Geräte, so
genannte MID‘s (Mobile Information Devices). Hiermit sind in erster Linie tragbare
Computer, wie Handys und PDAs gemeint. Da für diese Geräte nur die CLDC als
Konfiguration in Frage kommt, wird deutlich, dass das MIDP als Erweiterung der
Basisdienste dieser Konfiguration entwickelt wurde.
Das MIDP liegt in den Versionen 1.0 (JSR-37) und 2.0 (JSR-118) bzw. 2.1 (JSR-118,
update) in der finalen und in der Version 3.0 (JSR-271) in der Entwurfsversion vor.
Nachdem im folgenden Abschnitt weitere grundlegende Informationen zum MIDP
gegeben werden, werden die Versionen 1.0 und 2.0 genauer beschrieben. In diesem
Rahmen wird ein Fokus auf die verfügbare Funktionalität und die Bibliotheken gesetzt
und die Unterschiede der beiden Spezifikationen herausgestellt. Der mögliche
Leistungsumfang des MIDP 3.0 wird im Ausblick am Ende der Arbeit beschrieben.
2.1 Grundlagen
Alle Versionen des MIDP werden im Java Community Process (JCP) definiert,
diskutiert und zu einer Spezifikation gebracht, wie z.B. die Version 1.0 des MIDP im
Jahre 2000. Ziel ist, eine Spezifikation zu erstellen, welche eine erweiterte Architektur
vorgibt und eine offene Entwicklungsumgebung von mobilen Anwendungen für Dritte
bereitstellt [Sun06b]. Der Fokus liegt auf der Anwendungsprogrammierung, nicht auf
der Systemprogrammierung. Bezogen auf das MIDP, sind im JCP sind viele namhafte
Firmen aus dem Mobilfunkbereich beteiligt, wie z.B. AOL, Fujitsu, Nokia, NTT
DoCoMo, Palm, Siemens und Sony, welche sich von der Technologie weitere
Einsatzchancen für ihre Produkte und Dienstleistungen erhoffen. Auch Sun selber
beteiligt sich an der Entwicklung der Standards, da eine weitere Verbreitung der JavaPlattform im Interesse der Firma ist und man selbst als Technologieprovider fungiert.
Sobald eine Spezifikation im JCP zum Abschluss gebracht wurde, stellt Sun eine
MIDP-Referenzimplementierung (MIDP-RI) öffentlich zum Download bereit. Es liegt
8
Kapitel 2: MIDP
dann im Aufgabenbereich der Gerätehersteller, eine Portierung für ihre Geräte
vorzunehmen [Sc07, S.35].
Das Modell zur Steuerung des Applikationslebenszyklus von MIDP-Anwendungen, ist
sehr stark an das der im Webumfeld bekannten Applets angelehnt. Daher werden die
auf Basis des MIDP entwickelten Anwendungen MIDlets genannt. MIDlets durchlaufen
in ihrem Lebenszyklus verschiedene Zustände. Diese Zustände lassen sich über die
MIDP API steuern bzw. aktivieren. MIDlets lassen sich somit in ihrem Aufbau nicht
mit herkömmlichen Java-Applikationen vergleichen, zumal diese mittels der
main()-Methode aktiviert werden, welche im MIDP-Programmiermodell nicht
vorgesehen ist. Ein oder mehrere MIDlets bilden eine größere Einheit, eine
MIDlet-Suite. Diese wird als .jar-Archiv verpackt und zur Verteilung angeboten.
2.1.1 Architektur
Um den Aufbau des MIDP im Detail zu verstehen, ist es wichtig, sich ein Bild von der
Architektur dieses Profils zu machen. Diese Architektur ist in der Spezifikation des
MIDP 2.0 (Quelle: [Sun06b]) wie nachfolgend beschrieben. Hinweis: Diese Darstellung
befindet sich ebenfalls in der Spezifikation zum MIDP 1.0 und ist daher für beide
Versionen gültig.
Abb. 2: Die Architektur des MIDP. Quelle: MIDP 2.0 Spezifikation [Sun06b]
9
Kapitel 2: MIDP
Die Architektur zeigt eine „high-level“-Sicht, wie das MIDP in ein Endgerät integriert
ist. Die Basis bildet das MID, also die Hardware des Endgeräts selbst. Darauf
aufbauend befindet sich die Systemsoftware (Native System Software), welche auch
AMS (Application Management Software) genannt wird. Diese bildet die Grundlage für
sämtliche Anwendungssoftware, vor allem für MIDlets, zumal diese von der AMS
gesteuert werden. Die AMS liefert die nötigen Schnittstellen zur Hardware.
Herstellerspezifische
Bibliotheken
ermöglichen
die
Benutzung
der
einzelnen
Funktionen des Endgeräts. Die nächste Schicht wird von der CLDC vereinnahmt. Auf
der CLDC bauen zwei Typen von APIs auf: Die MIDP APIs, welche in diesem Kapitel
noch weiter erläutert werden, und OEM-spezifische APIs. OEM-spezifische APIs sind
vom Gerätehersteller implementierte APIs. Diese sind notwendig, weil das MIDP nicht
alle Funktionalitäten eines Geräts ausschöpfen kann, da es möglichst viele Geräte
unterstützen soll. Applikationen, die OEM-spezifische APIs nutzen, sind allerdings
nicht mehr interoperabel bzw. plattformunabhängig. Ziel der weiteren Entwicklung des
MIDP ist es daher, möglichst viele APIs und Funktionen in die eigene
Referenzimplementierung aufzunehmen. Auf den OEM-spezifischen APIs und auf dem
MIDP bauen die Anwendungsprogramme auf, welche für das Endgerät programmiert
werden. Neben den MIDP und OEM-API-nutzenden Anwendungen sind auch native
Anwendungen möglich, welche allerdings keine der Funktionalitäten nutzen, die die
Java-Technologie anbietet. Native Applikationen sind daher auch nicht Teil dieser
Arbeit.
2.1.2 Hardwareanforderungen
„In Bezug auf ihre Rechenleistung liegen mobile Endgeräte heute in einer ähnlichen
Größenordnung wie Heimcomputer vor weniger als 20 Jahren.“ [Sc07, S.12] Trotz der
rapiden Entwicklung der Rechenleistung ist es auf mobilen Systemen noch nicht
möglich, Java-Programme für Desktopsysteme auszuführen. Die Ausführung eines
„Hallo Welt“ Java-Programms verlangt beispielsweise bereits 16 MB Speicher [To02,
S.11]. 16 MB freien Arbeitsspeicher für ein Java-Programm und im Hintergrund
laufende JVM können mobile Systeme nicht bereitstellen. Die Konsequenz für die
JavaME wurde bereits an anderer Stelle angedeutet: Der Umfang der Sprache muss so
weit reduziert werden, dass die Hardwareanforderungen sinken und die Entwicklung für
mobile Geräte möglich wird. Das Ergebnis ist eine minimale Hardwarevoraussetzung,
die ein Gerät mitbringen muss, um Java-Programme ausführen zu können. „Minimal“
10
Kapitel 2: MIDP
ist hierbei so zu verstehen, dass Gerätehersteller nach oben Luft für eigene
Leistungsmerkmale und Innovationen haben.
Die Anforderungen richten sich in erster Linie an folgende Komponenten: Speicher,
Display, Eingabemöglichkeiten, Netzwerkanbindung und Multimedia-Fähigkeiten
[Sc07, S.12]. Abbildung 3 listet die einzelnen Anforderungen auf. Hinweis: Die
Speicheranforderungen sind additiv zu verstehen. Beispiel: Das MIDP 1.0 braucht mit
der CLDC 1.0 als Basis 256 KB ROM-Speicher.
Abb. 3: Hardwareanforderungen. Quelle: Schmatz [Sc07, S.13]
Wie man der obigen Abbildung entnehmen kann, muss das Endgerät bestimmte
Mengen an Speicher besitzen. ROM steht für ‚Read Only Memory’. In diesem nicht
beschreibbaren Speicher sind die Klassenbibliotheken und auch die JVM untergebracht.
Es müssen also zwischen 256 KB und 416 KB Speicher zur Verfügung stehen, um den
minimalen Anforderungen für eine bestimmte Zusammenstellung von Konfiguration
(CLDC) und Profil (MIDP) zu entsprechen. RAM (Random Access Memory) ist der
Arbeitsspeicher, der erforderlich ist, damit Anwendungen ausgeführt werden können.
Hier sollten zwischen 64 KB und 160 KB vorhanden sein. Persistenter Speicher lässt
sich mit dem Speicherplatz vergleichen, welcher beispielsweise bei herkömmlichen
Computersystemen in Form von Festplattenspeicher zur Verfügung steht. Da mobile
11
Kapitel 2: MIDP
Geräte keine Festplatten besitzen, muss eine andere Form von Speicher vorhanden sein,
z. B. Flashspeicher, damit Anwendungen Daten dauerhaft speichern können. Für den
Betrieb des MIDP sollten dafür mindestens 8 KB vorhanden sein. Zusätzlich zu den
Speicheranforderungen ist es erforderlich, dass das Gerät über ein Display,
Eingabemöglichkeiten, Netzwerkanbindung und rudimentäre Multimediafunktionen
verfügt.
2.1.3 Softwareanforderungen
Neben den Hardwareanforderungen spielen auch Softwareanforderungen eine Rolle,
welche sich auf den Leistungsumfang der Native System Software des mobilen Geräts
beziehen Diese Software kann sich von Gerät zu Gerät, bzw. von Hersteller zu
Hersteller
beachtlich
unterscheiden.
Beispielsweise
kann
ein
MID
ein
multiprozessfähiges Betriebssystem mit einem hierarchischen Dateisystem besitzen,
oder nur ein thread-basiertes ohne ein wirkliches Dateisystem. Daher werden in der
MIDP Spezifikation folgende Anforderungen beschrieben:
Merkmal
Kernel
Beschreibung
Muss
die
Steuerung
der
Hardware
ermöglichen
(z.B.
Interrupthandling, Exceptions und Prozessmanagement)
Speicher
Lesen und nicht flüchtiges Speichern von Daten muss möglich sein
(für Record Management System API)
Networking
Der Zugriff auf die Networking-Fähigkeiten der Hardware muss
sichergestellt sein (für Networking API)
Timer
Die Berechnung von Timestamps z.B. bei Schreibzugriffen in
persistenten Speicher, wird angeboten.
Grafik
Eine Darstellungsmöglichkeit von Bitmaps muss möglich sein.
Input
Benutzereingaben müssen erfassbar sein.
AMS
Der Lebenszyklus von Applikationen muss steuerbar sein.
Tabelle 3: Softwareanforderungen. Quelle: MIDP 2.0 Spezifikation [Sun06b]
12
Kapitel 2: MIDP
2.2 MIDP 1.0
2.2.1 Funktionalität und Pakete
Das MIDP dient der Erweiterung der Bibliotheken der CLDC 1.0 aber auch CLDC 1.1
und der Bereitstellung von APIs, welche über den Funktionsumfang der Konfiguration
hinausgehen [Sc07, S.21]. Welche Basisklassen des CLDC erweitert werden, um
bestimmte von den MIDP-APIs benötigte Funktionen zu liefern, schildert Tabelle 4.
Die CLDC bietet keine Funktionen zur Interaktion von Programmen mit Benutzern.
Somit
bietet
das
MIDP
zusätzlich
Benutzerschnittstellen,
aber
auch
Persistenzfunktionen [To02, S.44]. In Tabelle 5 sind die drei zusätzlichen Pakete des
MIDP und ihr jeweiliger Funktionsumfang beschrieben.
Paket
Inhalt
Eine IllegalStateException wird hinzugefügt, da diese
java.lang
in manchen Situationen von java.util.Timer ausgelöst
wird [Sc07, S.21].
Die beiden Klassen Timer und TimerTask werden
java.util
hinzugefügt.
java.io
Keine Erweiterungen
javax.microedition.io
Das MIDP erweitert die Funktionen des GenericConnection
Framework. Hierbei wird eine Untermenge des HTTPProtokolls unterstützt. Implementiert wird sie mit IP-basierten
Protokollen
wie
TCP/IP
und
mit
nicht-IP-basierten
Protokollen wie WAP und i-mode.
Tabelle 4: Erweiterungen der Pakete der CLDC. Quellen: Schmatz [Sc07, S.21] und
MIDP 1.0 Spezifikation [Sun00].
Paket
Inhalt
javax.microedition.midlet Dieses Paket liefert die nötigen Funktionen, damit der
Lebenszyklus von Anwendungen gesteuert werden kann.
Es wird aber auch vorgegeben, wie MIDlets verpackt
werden und wie sie auf Ressourcen zugreifen.
13
Kapitel 2: MIDP
Paket
Inhalt
javax.microedition.lcdui
Lowest Common Denominator User Interface; dieses
Paket
liefert
die
nötigen
Bibliotheken,
um
Benutzerschnittstellen für kleine, mobile Computer zu
bauen. Hierfür wird eine High-Level-API geliefert. Zum
Zeichnen ist zudem eine Low-Level-API vorhanden.
javax.microedition.rms
Mit
dem
Record-Management-System
lassen
sich
persistente Daten im Endgerät verwalten. Dafür steht eine
einfache,
Verfügung.
satzorientierte
Diese
Datenbankschnittstelle
kümmert
sich
darum,
zur
die
Datenintegrität zu wahren, während des normalen
Betriebes, aber auch bei Batteriewechsel und Reboot.
Tabelle 5: Zusätzliche Pakete im MIDP. Quellen: Schmatz [Sc07, S.21] und MIDP 1.0
Spezifikation [Sun00]
2.3 MIDP 2.0
Das MIDP 2.0 hat seit dem Jahre 2002 Gültigkeit. 2006 wurde noch nachgebessert zur
Version 2.1. Generell baut diese Spezifikation auf der Version 1.0 auf. Es wurden
allerdings noch weitere Pakete hinzugefügt, bzw. bestimmte Basisklassen erweitert. Der
folgende Abschnitt behandelt die Neuerungen der Version 2.0.
2.3.1 Unterschiede zur Vorversion
Seit der Version 1.0 des MIDP hat sich besonders eine Anwendungskategorie
herausgebildet, welche eine Nachbesserung der API verlangte: die Handyspiele
[Heise02b]. Um die Entwicklung dieser Programme gezielt zu unterstützen, wurde in
der Version 2.0 des MIDP das Paket javax.microedition.lcdui.game
hinzugefügt. Da die Anwendungen für mobile Geräte zunehmend komplexer werden,
auch weil sie sich in die weiteren Java-Editionen wie J2SE oder J2EE integrieren,
wurden
die
Layoutmöglichkeiten
von
Benutzerschnittstellen
verbessert.
Bildschirmobjekte können mit dem MIDP 2.0 besser positioniert werden. Auch besteht
nun, wie bei der Erstellung von Benutzerschnittstellen für Webanwendungen, die
Möglichkeit, eigene GUI Elemente zu erstellen. Wichtig für den Consumer-Bereich
14
Kapitel 2: MIDP
sind polymorphe Klingeltöne. So werden nun Klassen von der MIDP Media API
hinzugefügt, welche diesen Bereich für die Programmierung ebenfalls nutzbar macht.
Inhalt
dieser
API
ist
aber
primär
die
Wiedergabe
und
Steuerung
von
Multimediainhalten. Eine Spezifikation zum OTA-Provisioning (OTA = Over The Air)
wird vom MIDP 2.0 auch angeboten. Diese ermöglicht, dass Anwendungen direkt über
das Internet geladen und installiert werden können. Neu sind auch Push-Dienste
(Erweiterung von javax.microedition.io). Darunter fallen allerdings nicht
Anwendungsszenarien wie Email-Push. Sie bedeuten vielmehr, dass MIDlets bei
asynchronen Ereignissen automatisch starten. So würde der Getränkeautomat, welcher
in Tabelle 1 als Beispiel erwähnt wurde, automatisch eine neue Order ausführen, wenn
ein bestimmter Füllstand erreicht ist. Die Push Registry, welche diese Ereignisse
steuert, ist Bestandteil der AMS, welche auch den gesamten Lebenszyklus eines
MIDlets steuert. Im MIDP 1.0 konnten Anwendungen nur vom Benutzer gestartet
werden. Mit dem MIDP 2.0 kommen zwei neue Möglichkeiten dazu, eine Aktivierung
durch eingehende Netzwerkaufrufe und durch einen Timer-Alarm. [Sc07, S.221 ff.]
Tabelle 6 gibt einen Überblick über die neuen Pakete.
Paket
Inhalt
javax.microedition.lcdui.game
Vereinfachte Programmierung von 2D-Spielen
javax.microedition.media
Multimediaunterstützung: Teile der Mobile Media
API (JSR-135, siehe „Optionale Pakete“) werden
aufgenommen.
Es
werden
allerdings
nur
Audioformate unterstützt. [Sc07, S.261 ff.]
javax.microedition.media.control Wiedergabe von Audio
javax.microedition.pki
Repräsentiert Zertifikate einer PKI (Public Key
Infrastructure). Diese Zertifikate werden u.a. bei
sicheren Verbindungen über SSL und HTTPS
benötigt.
Tabelle 6: Neue Pakete in der MIDP Version 2.0. Quelle: Schmatz [Sc07, S.21]
2.3.2 Sicherheitsaspekte
Sicherheitsaspekte haben beim Design der JavaME von Anfang an eine große Rolle
gespielt. Neben den low-level Sicherheitsfeatures, die die KVM bietet (2-Phasen
15
Kapitel 2: MIDP
Class-Verification) und der Application-Level Sicherheit, die das Sandbox-Modell von
Java liefert (Schutz des Hostsystems vor schadhaften Anwendungen), bringt das MIDP
2.0 noch weitere Features mit, welche an dieser Stelle dediziert vorgestellt werden
sollen. Zumal MIDlets häufig Internetverbindungen nutzen, können Verbindungen
beispielsweise HTTPS verschlüsselt werden, um mögliche Angriffszenarien in diesem
Kontext
zu
unterbinden.
Zudem
bietet
das
MIDP
2.0
das
Konzept
der
vertrauenswürdigen MIDlet-Suites. Vertrauenswürdige MIDlet-Suites verfügen über
erweiterte Rechte und können so auch auf sensible Methoden der Klassenbibliotheken
zugreifen, um beispielsweise Dateien im Dateisystem zu löschen. Eine MIDlet-Suite
wird als vertrauenswürdig eingestuft, wenn zum Zeitpunkt der Installation zwei
Voraussetzungen erfüllt sind: Der Urheber muss authentifizierbar sein und seinerseits
auch als vertrauenswürdig gelten [Sc07, S.25]. Die Authentifizierung wird dann mit
Hilfe von Verfahren einer Public Key Infrastructure (PKI) durchgeführt. Damit das
Endgerät nicht sämtliche Zertifikate vorhalten muss, schreibt die Spezifikation vor, dass
das Zertifikat des Urhebers gleich von ihm mitgeliefert werden muss.
Aufbauend auf dem Konzept der vertrauenswürdigen MIDlet-Suites bietet das MIDP
2.0 ein ausgefeiltes System von Berechtigungen und Sicherheitsdomänen. Abhängig
von dem Grad der Vertrauenswürdigkeit verfügen Anwendungen abgestuft über mehr
oder weniger Rechte. Generell gibt es vier Domänen: Unidentified Third Party,
Identified Third Party, Operator (Mobilfunktbetreiber) und Manufacturer (Hersteller des
Geräts). Die Zuordnung zu einer Sicherheitsdomäne erfolgt zum Zeitpunkt der
Installation. Die Benutzung der Basisklassen *.midlet, *.lcdui, *.lcdui.game, *.rms,
*.media und *.media.control (* = javax.microedition) erfordert keine besonderen
Berechtigungen.
Einschränkungen
betreffen
lediglich
die
Klassen
zur
Netzwerkkommunikation (javax.microedition.io), um den Anwender vor Anwendungen
zu bewahren, die Daten ausspähen und über eine Netzwerkverbindung versenden
[Sc07, S.318].
16
Kapitel 3: Optionale Pakete
3 Optionale Pakete
Optionale Pakete dienen der Erweiterung von Funktionen, welche nicht durch das Profil
erfüllt werden. Da der Markt mobiler Geräte stark umkämpft ist, bauen die Hersteller
immer mehr Features und Innovationen in ihre Produkte ein. Diese müssen letztlich
auch über APIs zu erreichen sein, um die Leistungsmerkmale der Ablaufumgebung
ausschöpfen zu können [Sc07, S.283]. Ein Beispiel ist z.B. Bluetooth, welches nicht mit
dem MIDP ansteuerbar ist, sondern nur über ein optionales Paket. Neue
Anwendungsszenarien für mobile Geräte führen ebenfalls zur Entwicklung neuer
optionaler Pakete. Beispielsweise können Anwendungen mit einem Server über
Webservices kommunizieren. Diese Funktionalität wird allerdings nur von optionalen
Paketen geboten. Optionale Pakete bieten den Vorteil der Erweiterung der nutzbaren
Funktionen, allerdings wird dieser Vorteil mit einer verschlechterten Portabilität
eingekauft. Die Anwendung ist so nicht mehr universell auf allen Endgeräten nutzbar.
Es gibt eine Fülle von optionalen Paketen, welche sich frei miteinander kombinieren
lassen. Vorteilhaft kommt dabei die Schichtenarchitektur der JavaME zum Tragen: Es
lassen sich beliebig viele Pakete oberhalb des Profils „andocken“. Da die Zugriffe
top-down erfolgen, ist dem MIDP nicht bekannt, wie viele und welche optionale Pakete
zum Einsatz kommen. Die Anzahl der Kombinationen ist beträchtlich. Dies führt zu
einer Fragmentierung der Gerätefunktionen, schließlich integrieren die Hersteller nicht
notwendigerweise alle dieselben Pakete [Sc07, S.284]. Da es im Zuständigkeitsbereich
der Hersteller liegt, die Implementierungen dieser Pakete, wie auch beim MIDP, zu
übernehmen, entscheiden diese, welche Pakete sie für implementierenswert halten.
Daher entstand die Bestrebung, mehrere optionale Pakete zu einem größeren Paket
zusammenzulegen. Diese Initiative wurde im Jahre 2004 im JSR-248 „Mobile Service
Architecture“ (MSA) beschlossen.
Die MSA lässt sich als Standardisierungsbemühung verstehen, um die Portabilität
mobiler Java Anwendungen zu wahren. Auch lässt sie sich als Grundlage der nächsten
Generation Java-fähiger Mobiltelefone bezeichnen [BM02, S.20]. Ziel ist neben der
Zusammenlegung
auch,
„Unklarheiten
und
Interpretationsspielräume
in
den
Spezifikationen der optionalen Pakete“ zu beseitigen, die ansonsten auch zu
inkompatiblen Implementierungen hätten führen können [BM02, S.284]. Die Chance,
17
Kapitel 3: Optionale Pakete
welche durch die MSA für den Entwickler erwächst, ist, in Zukunft noch mächtigere,
herstellerunabhängige Anwendungen entwickeln zu können [BM02, S.284].
Die MSA setzt sich im Wesentlichen aus folgenden Komponenten zusammen: CLDC
1.1, MIDP 2.1, JTWI 1.0 (Java Technology for the Wireless Industry, JSR-185) und
weiteren optionalen Paketen aus den einzelnen JSRs. Da die Implementierung aller
Pakete sehr umfangreich ist und viele Firmen diesen zusätzlichen Aufwand nicht auf
sich nehmen wollen, hat man sich auf eine leichtgewichtige Teilmenge geeinigt. Diese
wird mit MIDP-Subset betitelt [BM02, S.284]. Die weiteren Ausführungen zu den
Inhalten der einzelnen Pakete der MSA stützen sich auf den Ausführungen von Schmatz
[BM02, S.285 ff.]. Da die Spezifikation noch nicht verabschiedet ist, kann es noch zu
inhaltlichen Verschiebungen kommen.
MSA-Subset:
JSR
75
Bezeichnung
PIM Optional
Ver.
Inhalt
1.0
Verwaltung persönlicher Daten, wie Adressen.
1.0
Umgang mit Dateien und Verzeichnissen, die auf
Package
75
File Connection
Optional Package
einem beliebigen Speichermedium vorliegen.
82
Bluetooth APIs
1.1
Kommunikation über die Bluetooth Schnittstelle
135
Mobile Media
1.1
Medienverarbeitung wird ermöglicht. Audio- und
API
Videodateien können aufgezeichnet und
wiedergegeben werden
184
Mobile 3D
1.1
Graphics API
205
Wireless
Programmierschnittstellen zur Darstellung von 3DGrafiken und 3D-Animationen
2.0
Senden und Empfangen von SMS und MMS
1.0
Darstellung von Vektorgrafiken, welche auch im
Messaging API
226
Scalable 2D
Vector Graphics
SVG-Format vorliegen können.
API
Tabelle 7: MSA-Subset. Quelle: Schmatz [BM02, S.285 ff.]
18
Kapitel 3: Optionale Pakete
Zusätzliche Pakete, die nicht Teil des Subsets sind:
JSR
172
Bezeichnung
Webservices API
Ver.
Inhalte
1.0.1 Nutzung entfernter Dienste über das SOAPProtokoll
177
Security and trust
1.0
Services API
179
Location API
Kryptografische Verfahren und Funktionen zum
Zugriff auf die Inhalte der SIM-Karte
1.0.1 Bestimmung
des
aktuellen
Ortes
und
der
Bewegungsgeschwindigkeit des Endgeräts
180
SIP API
1.0.1 Nutzung des SIP-Protokolls für beispielsweise
Instant Messaging oder SIP-Telefonie
211
Content Handler
1.0
API
Verbesserte
Integration
der
bestehenden
Anwendungen eines Mobiltelefons. Registratur von
bestimmten Anwendungen zu Content Typen (z.B.
MP3)
229
Payment API
1.0
Abwicklung von Bezahlvorgängen
234
Advanced
1.0
Neue
238
Controls.
Auch
fortgeschrittene
Multimedia
Leitungsmerkmale in den Bereichen Audio, Video,
Supplements
Kamera und Tuner
Mobile
1.0
Internationalization
Internationalisierung
und
Lokalisierung
von
Anwendungen
API
Tabelle 8: Zusätzliche Pakete. Quelle: Schmatz [BM02, S.285 ff.]
Neben den optionalen Paketen, welche in der MSA enthalten sind, soll auch noch ein
weiteres Erwähnung finden:
JSR
253
Bezeichnung
Inhalt
Mobile Telephony API
Handling von Anrufen und Netzwerkdiensten, z.B.
(MTA)
um ein Conferencing-Tool zu entwickeln [Sun05a]
19
Kapitel 4: Ausblick
4 Ausblick
Die Technologie entwickelt sich rasant und nimmt mit der Zeit noch an
Geschwindigkeit zu. In den nächsten Jahren werden die Hersteller von Mobiltelefonen
immer mehr Funktionen einbauen. Die Architektur der JavaME bietet für die
zukünftigen Entwicklungen genug Spielraum nach oben. Kapitel 1 hat gezeigt, dass die
drei
Schichten
Konfiguration,
Profil
und
optionale
Pakete
aufgrund
ihrer
Schichtenarchitektur genug Flexibilität dafür bieten. Das MIDP, welches Kapitel 2
behandelt, bietet zahlreiche Funktionen, die eine Anwendungsentwicklung für mobile
Geräte möglich macht, so lange man die Hardwarevoraussetzungen im Auge behält. Der
Funktionsumfang des MIDP 2.0 wurde auch, wie Kapitel 2.3.2 zeigt, in Bezug auf
Sicherheitsaspekte erweitert. Diese sollen den Nutzer von mobilen Applikationen vor
potentiellen Angreifern schützen. Wichtig wird dies vor allem dann, wenn sich mobile
Anwendungen auch im Business-Umfeld weiter verbreiten. Sicherheitsaspekte sind hier
immer ein wichtiges Entscheidungskriterium für oder gegen eine Investition. Die
optionalen Pakete, welche Kapitel 3 behandelt, bieten bereits jetzt vielfältige,
zusätzliche Einsatzmöglichkeiten für mobile Java-Anwendungen. Die Java Service
Requests im Java Community Process, welche die Spezifikationen für optionale Pakete
definieren, werden stetig weiterentwickelt, um auch in Zukunft noch zusätzliche JavaPakete zu bieten. So werden die bisherigen optionalen Pakete in ihrem
Funktionsumfang aufgestockt und es werden neue Pakete, je nach benötigter
Funktionalität, entstehen.
In den nächsten Jahren wird eine neue Version des MIDP veröffentlicht. Mit der
Version 3.0 (JSR-271) wird sich wieder viel ändern [Sun05b]: Es sollen mehrere
MIDlets in einer VM laufen können, manche davon auch ohne Benutzerschnittstelle.
MIDlets sollen auch zur Boot-Zeit starten können, ohne dass der Benutzer dieses
Ereignis anstößt. Bessere Inter-MIDlet-Kommunikation soll geliefert werden. Bisher
können nur MIDlets innerhalb einer MIDlet-Suite miteinander kommunizieren, indem
sie Klassenvariablen miteinander teilen. Zudem soll die Unterstützung hochwertiger
und großer Displays weiter gehen und die Entwicklung performanter Spiele vereinfacht
werden.
20
Kapitel 4: Ausblick
Letztlich wird sich die Weiterentwicklung der JavaME daran richten, was der Markt
verlangt. Es obliegt also der Kreativität der Anwender und Marktanbieter, was in den
nächsten Jahren noch alles passieren wird.
21
Literaturverzeichnis
[BM02]
Ulrich Breymann, Heiko Mosemann: JavaME – Anwendungsentwicklung
für Handys, PDA und Co., 1st. ed., Carl Hanser Verlag, 2006.
[Heise02a] Heise: Das Handy kennt den Weg – Location Based Services, 2002.
http://www.heise.de/mobil/artikel/50855. Abrufdatum 2006-12-03.
[Heise02b] Heise: Software für Handys, 2002. http://www.heise.de/mobil/artikel/50904.
Abrufdatum 2006-12-03.
[Sc07]
Klaus-Dieter Schmatz: Java Micro Edition – Entwicklung mobiler JavaMEAnwendungen mit CLDC und MIDP, 2nd. ed., dpunkt.verlag, 2007.
[Sun00]
Sun: Mobile Information Device Profile for JavaTM 2 Micro Edition, 2000.
http://jcp.org/en/jsr/detail?id=37. Abrufdatum 2006-12-03.
[Sun05a]
Sun: Mobile Telephony API (MTA) for JavaTM 2 Micro Edition, 2005.
http://jcp.org/en/jsr/detail?id=253. Abrufdatum 2006-12-03.
[Sun05b] Sun: Mobile Information Device Profile 3.0, 2005.
http://jcp.org/en/jsr/detail?id=271. Abrufdatum 2005-12-03.
[Sun06a]
Sun: Java ME Technologies, 2006.
http://java.sun.com/javame/technologies/index.jsp. Abrufdatum 2006-12-03.
[Sun06b] Sun: Mobile Information Device Profile for JavaTM 2 Micro Edition, 2006.
http://jcp.org/en/jsr/detail?id=118. Abrufdatum 2006-12-03.
[To02]
Kim Topley: J2ME in a Nutshell, 1st. ed., O’Reilly, 2002.
Herunterladen