Ausarbeitung - Department of Information Systems
Transcription
Ausarbeitung - Department of Information Systems
Westfälische Wilhelms-Universität Münster Ausarbeitung Application Provisioning im Rahmen des Seminars Mobile Java Steffen Müller Themensteller: Prof. Dr. Herbert Kuchen Betreuer: Christian Hermanns Institut für Wirtschaftsinformatik Praktische Informatik in der Wirtschaft Inhaltsverzeichnis 1 Einleitung in das Application Provisioning ............................................................. 1 2 Grundlagen des Application Provisioning von MIDlets.......................................... 2 2.1 Java Micro Edition als Zielplattform von MIDlets......................................... 2 2.1.1 Konfigurationen und Profile in der Java Micro Edition ........................ 2 2.1.2 Application Management Software ....................................................... 3 2.1.3 Kommunikation und Identifikation eines mobilen Gerätes................... 5 2.2 3 Java Enterprise Edition als Plattform für Provisioning Server ....................... 6 Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks ............................................................................................................. 7 3.1 Application Provisioning von MIDlets........................................................... 7 3.1.1 Begriffsbestimmung und Arten des Application Provisionings ............ 8 3.1.2 Der Over-The-Air User-Initiated Provisioning Prozess ........................ 9 3.1.3 Funktionsumfang von Provisioning Systemen .................................... 12 3.2 Java Enterprise Edition Client Provisioning Framework ............................. 13 3.2.1 Überblick ............................................................................................. 13 3.2.2 Stocking und Repository...................................................................... 15 3.2.3 Discovery ............................................................................................. 15 3.2.4 Delivery ............................................................................................... 16 3.3 Darstellung eines Provisioning Systems am Beispiel der Sun Client Provisioning Reference Implementation ...................................................... 17 4 Zusammenfassung und Ausblick ........................................................................... 20 A Zusammenstellung einiger JAD-Datei Attribute nach MIDP 2.0 Spezifikation ... 21 B Beispiel eines Provisioning Descriptors ................................................................ 22 C Beispiel einer Device Capability Datei.................................................................. 23 D Beispiel einer Matchers Datei................................................................................ 24 E Beispiel einer Adapters Datei ................................................................................ 25 Literaturverzeichnis ........................................................................................................ 26 II Kapitel 1: Einleitung in das Application Provisioning 1 Einleitung in das Application Provisioning Mobile Geräte – z. B. Handys – sollen klein, leicht und mobil sein. Deshalb sind sie bestimmten Einschränkungen unterworfen, was bspw. die Rechenleistung und Speicherausstattung angeht. Auf den Geräten können nicht alle Programme, die sich ein Benutzer wünscht, vorinstalliert werden. Die Einschränkungen der mobilen Geräte führen aber dazu, dass keine vollständige Laufzeitumgebung wie die Java Virtual Machine (JVM) der Java Standard Edition (Java SE) Platz findet.1 Deshalb wurde die Java Micro Edition (Java ME) für mobile Geräte entwickelt. Diese ist ein angepasstes und abgespecktes Java auf Basis von Spezifikationen und Technologien, welche bestimmte Konfigurationen und Profile für verschiedene Geräte bereitstellt. Konfigurationen umfassen dabei eine JVM mit Sätzen von Bibliotheken und Profile notwendige fehlende Application Programming Interfaces (API). Aufgrund von unterschiedlichen Konfigurationen und Profilen müssen Java Programme für mobile Geräte (MIDlets bzw. MIDlet-Suiten – Im Folgenden nur MIDlets) zu diesen passen. Eine Überprüfung auf Kompatibilität wird beim Application Provisioning von MIDlets durchgeführt. Application Provisioning – kurz Provisioning – beschreibt die Aktivitäten von Provisioning Systemen, „Services“ anzubieten, sowie den Prozess, diese „Services“ an die verschiedenen Client Geräte auszuliefern [JSR124a, S. 7]. Ziel im Zusammenhang mit MIDlets ist die sichere und korrekte Installation der „Services“ auf den mobilen Geräten. Dabei soll das Provisioning aus Nutzersicht so einfach wie möglich vonstatten gehen. Provisioning Systeme werden hier häufig mit Getränkeautomaten verglichen, und ihre Bedienung soll dem Kauf einer Getränkedose ähneln [JSR124a, S. 11]. Ziel dieser Ausarbeitung ist die Darstellung von Techniken für das Application Provisioning von MIDlets. Hierzu wird zuerst auf erforderliche Grundlagen der Java ME als Zielplattform eingegangen (Kapitel 2.1). Anschließend werden Grundkonzepte der Java Enterprise Edition (Java EE) für Provisioning Systeme erläutert (Kapitel 2.2). Im Hauptteil werden zuerst generelle Aspekte des Application Provisionings von MIDlets behandelt (Kapitel 3.1) – z. B. der Provisioning Prozess. Es folgt die Darstellung eines Provisioning Frameworks auf Basis der Java EE (Kapitel 3.2). Abschließend wird das Provisioning an der Sun Referenz Implementierung verdeutlicht (Kapitel 3.3). 1 Eine Beschreibung, welche Gründe für und gegen Java als Programmiersprache auf mobilen Geräten spricht, ist z. B. in [BrMo06, S. 17-18], in [Sch07, S. 4] oder [JME01] zu finden. 1 Kapitel 2: Grundlagen des Application Provisioning von MIDlets 2 Grundlagen des Application Provisioning von MIDlets Nachfolgend soll kurz beleuchtet werden, welche Voraussetzungen ein mobiles Gerät mit Java ME bietet, welche Kommunikationsmöglichkeiten es bereitstellt (Kapitel 2.1) und auf welche Technologien bei der Implementierung eines Provisioning Systems zurückgegriffen werden kann (Kapitel 2.2) (vgl. dazu Abbildung 1). Kommunikation Mobiles Gerät Provisioning System Abbildung 1: Kommunikation zwischen einem mobilen Gerät und einem Provisioning System 2.1 Java Micro Edition als Zielplattform von MIDlets In diesem Kapitel werden kurz Grundkonzepte der Java ME erläutert, die für das Application Provisioning von MIDlets auf Java ME Geräten von Bedeutung sind. Hierzu wird auf Konfigurationen und Profile der Java ME (Kapitel 2.1.1), auf die Application Management Software als Laufzeitumgebung für MIDlets (Kapitel 2.1.2) und auf die Kommunikation und Identifikation von mobilen Geräten mit Java ME gegenüber Servern (Kapitel 2.1.3) eingegangen. 2.1.1 Konfigurationen und Profile in der Java Micro Edition In der Java ME werden zwei verschiedene Konfigurationen für Endgerätetypen bzw. Technologien unterschieden. Zum einen gibt es die Connected Device Configuration (CDC), welche bspw. für High-End PDAs oder TV Set-top-Boxen mit leistungsfähiger Hardware vorgesehen ist. Zum anderen gibt es die Connected Limited Device Configuration (CLDC), welche speziell auf die Einschränkungen mobiler Endgeräte abgestimmt ist – wie z. B. Handys. Dabei umfassen die Konfigurationen – wie weiter oben erwähnt – eine JVM und Sätze von Bibliotheken, die aufgrund der Ressourceneinschränkungen angepasst sind und eine Untermenge der Java SE API bieten [BrMo06, S. 1920]. Beide Konfigurationen liegen in der neusten Fassung als Version 1.1 vor. Im Folgenden wird insbesondere auf Geräte mit der CLDC näher eingegangen, da ein Großteil der mobilen Geräte diese Konfiguration unterstützt und bei der CDC nur geringfügige Unterschiede zum Programmieren mit der Java SE zu beachten sind 2 Kapitel 2: Grundlagen des Application Provisioning von MIDlets [BrMo06, S. 38]. Jedoch ist zu erwähnen, dass mit steigender Hardware-Ausstattung in Zukunft voraussichtlich auch immer mehr mobile Geräte die CDC erfüllen können.2 Auf den Konfigurationen der Geräte setzen die sog. Profile auf. Sie ergänzen – wie weiter oben erwähnt – die API der Konfigurationen mit notwendigen fehlenden API. Im Zusammenhang mit der CLDC wird hauptsächlich das Mobile Information Device Profile (MIDP) verwendet, welches aktuell in der Version 2.0 vorliegt. Mit dem MIDP wird das Ziel verfolgt, einen einheitlichen Standard für die Erstellung von mobilen Anwendungen zu schaffen und die Entwicklung dieser zu erleichtern. Das MIDP 2.0 enthält u. a. API für die grafische Benutzerschnittstelle, Spiele, Persistenz von Daten, Kommunikation mit dem Internet und Multimedia [We06, S. 54-55]. Es legt dabei zusätzlich zur Konfiguration z. B. die minimalen Hardwareanforderungen für Bildschirme, die Sicherheit für MIDlets und eine Spezifikation für das Laden und Installieren von MIDlets über die Luftschnittstelle (Over-The-Air) fest [BrMo06, S. 38-40; JSR118].3 Auf den Profilen können zusätzlich noch optionale Pakete aufbauen. Abbildung 2 veranschaulicht den Aufbau einer Java ME Implementierung in einem Mobiltelefon. Optionale Pakete (z. B. Multimedia) Profil (z. B. MIDP 2.0) Konfiguration (z. B. CLDC 1.1) Betriebssystem (z. B. Symbian) Abbildung 2: Aufbau einer Java ME Implementierung in einem Mobiltelefon [We06, S. 54] 2.1.2 Application Management Software Die Bezeichnung MIDlets für mobile Java Programme macht hierbei die Konformität zu einem MIDP deutlich. MIDlets, die bspw. für das MIDP 2.0 geschrieben wurden, lassen sich in den seltensten Fällen auf einem mobilen Gerät mit einer älteren MIDP Version ausführen. Dies muss bei der Installation auf einem mobilen Gerät sichergestellt werden. Das MIDP sieht zur Kompatibilitätsprüfung u. a. den Java Application Descriptor (JAD-Datei) vor, welcher Details über das zu installierende MIDlet in Form 2 3 Weitere Details zu den Einschränkungen der CLDC 1.1 sind in der Spezifikation der CLDC unter [JSR139a] zu finden. Der Umfang der API der CLDC 1.1 ist in der CLDC API Documentation [CLDC03] beschrieben. Für nähere Informationen zur CDC 1.1 sei hier direkt auf die Spezifikationen der CDC unter [CDC06], [CDC06a] und [JSR218] verwiesen. Auf die Spezifikation für das Laden und Installieren von MIDlets wird in Kapitel 3.1 näher eingegangen. Weitere Informationen zu alternativen Konfigurationen und Profilen sind bspw. in [BrMo06], [Sch07] oder auf den Seiten der Java ME der Sun Microsystems Inc. http://java.sun.com/javame/reference/index.jsp zu finden. Für weitere Einzelheiten zum MIDP 2.0 sei hier direkt auf die Spezifikation des MIDP 2.0 unter [JSR118] verwiesen. 3 Kapitel 2: Grundlagen des Application Provisioning von MIDlets von Attributen enthält. Diese Attribute, wie z. B. das Attribut MIDlet-Jar-Size für die Größe des MIDlets oder das Attribut MicroEdition-Profile für die vom MIDlet benötigte MIDP Version, werden im Rahmen der Installation analysiert. Hierbei wird überprüft, ob das MIDlet auf dem mobilen Gerät lauffähig ist und installiert werden kann.4 Die Überprüfung auf Kompatibilität wird dabei geräteseitig durch die sog. Application Management Software (AMS) durchgeführt [KrHa03, S. 53-57; JSR118]. Alternativ zur JAD-Datei kann die AMS auch die Manifest-Datei der JAR-Datei überprüfen, welche die gleichen Attribute wie die JAD-Datei enthalten muss. Die AMS – oft auch Application Management System oder Java Application Manager genannt (JAM) – bezeichnet die Laufzeitumgebung für MIDlets. Sie ist eine essenzielle Komponente in jedem MIDP-kompatiblen Gerät und steuert den Download sowie den Application-Life-Cycle von MIDlets auf dem mobilen Gerät [Sch07, S. 28; JSR118, S. 20, S. 433]. Die AMS ist Teil des Betriebssystems und ermöglicht die Installation, die Auswahl, die Ausführung, das Updaten und die Entfernung von MIDlets sowie Interaktion mit dem Benutzer und Behandlung von Fehlern [JSR118, S. 433-436; BrMo06, S. 41; KrHa03, S. 54]. Das MIDP 2.0 spezifiziert im Rahmen des Ladens von Software über die Luftschnittstelle noch weitere Anforderungen an den Funktionsumfang der AMS. Hierunter fallen u. a. die Suche nach MIDlets, die Authentifizierung und der JAD- und JAR-Datei Transfer auf das mobile Gerät [JSR118, S. 20]. In Abbildung 3 ist ein Beispiel einer AMS dargestellt, auf der ein MIDlet installiert und die entsprechende JAD-Datei angezeigt wird. Abbildung 3: Installation eines MIDlets und Anzeige einer JAD-Datei in einer AMS 4 Eine Zusammenstellung von notwendigen und optionalen Attribute im MIDP 2.0 ist in Anhang A dargestellt. Weitere Details sind in der Spezifikation des MIDP 2.0 [JSR118, S. 427-433] zu finden. 4 Kapitel 2: Grundlagen des Application Provisioning von MIDlets 2.1.3 Kommunikation und Identifikation eines mobilen Gerätes Mobile Geräte können über verschiedene Techniken kommunizieren. Hier ist z. B. die Kommunikation über serielles Kabel, Bluetooth, Global System for Mobile Communications (GSM) oder Universal Mobile Telecommunications System (UMTS) zu nennen. Entsprechend können MIDlets über diese Techniken auf das mobile Gerät übertragen werden. Während die drei erstgenannten Techniken i. d. R. keine Kommunikation mit dem Internet ermöglichen, können mobile Geräte über die letztgenannten Techniken bspw. per Hypertext Transfer Protokoll (HTTP bzw. HTTPS) oder per Wireless Application Protokoll (WAP) mit Servern und Webseiten Kontakt aufnehmen und Dateien – z. B. JAD- oder JAR-Dateien – vom Server laden. Dabei wird HTTP im MIDP 2.0 als Protokoll auf jeden Fall vorgeschrieben, da über HTTP u. a. JAD- und JAR-Dateien von einem Server geladen werden [JSR118, S. 20]. WAP wird optional unterstützt [JSR118, S. 26-29]. Hierbei ist in der MIDP 2.0 Spezifikation z. B. für HTTP die Unterstützung eines Großteils der HTTP 1.1 Spezifikation (RFC 2616) sowie die HTTP Basic und Digest Access Authentifizierung (RFC 2617) gefordert [JSR118, S. 16-17, S. 20]. So sollen sich MIDP 2.0 kompatible Geräte bspw. einem Server gegenüber mit einem HTTP Request-Header identifizieren können. Dies geschieht über den Header User-Agent. Weitere vorgesehene HTTP Request-Header sind der Accept-Language Header – für die auf dem Gerät benutzte Sprache – und der Accept Header – für die Art des nachgefragten Content. Ein beispielhafter HTTP Request von einem MIDP-Gerät (CoolPhone/1.4), was eine JAD-Datei (text/vnd.sun.j2me.app-descriptor) bei einem Server nachfragt, sieht folgendermaßen aus [JSR118, S. 25-29]:5 GET http://host.foo.bar/app-dir/game.jad HTTP/1.1 Host: host.foo.bar Accept: text/vnd.sun.j2me.app-descriptor User-Agent:CoolPhone/1.4 Profile/MIDP-2.0 Configuration/CLDC-1.0 Accept-Language: en-US, fi, fr Accept-Charset: utf-8 Als weiteren wichtigen Bestandteil der HTTP-Kommunikation sieht das MIDP 2.0 GET und POST Requests vor. Hierauf wird im späteren Kapiteln näher eingegangen (vgl. Kapitel 3.1.2). 5 Für weitergehende Informationen sei auf die MIDP 2.0 Spezifikation verwiesen [JSR118]. Die HTTP 1.1 Spezifikation (RFC 2616) ist unter http://www.ietf.org/rfc/rfc2616.txt und die Authentication Spezifikation (RFC 2617) unter http://www.ietf.org/rfc/rfc2617.txt erreichbar. 5 Kapitel 2: Grundlagen des Application Provisioning von MIDlets 2.2 Java Enterprise Edition als Plattform für Provisioning Server Die MIDP 2.0 Spezifikation fordert, wie oben erwähnt, dass konforme Geräte HTTP und eventuell WAP unterstützen. Außerdem bieten mobile Geräte mittlerweile in den meisten Fällen einen Browser zur Suche nach passenden MIDlets. Aus diesem Grund liegt es nahe, für Provisioning Systeme Web-basierte Technologien zu benutzen. Die Java EE bietet eine „Plattform für unternehmensweite und übergreifende Anwendungen“ [KoFW06, S. 1]. Hierbei sieht das Java EE Konzept eine strikte Trennung von Präsentation (Client), Geschäftslogik (Business/Web Tier) und Datenebene (Enterprise Information Systems Tier) in einer sog. Multi-Tier Architektur vor. Zusätzlich wird die Trennung der organisatorischen Aufgaben und der Verwaltung der Komponenten propagiert. Die Java EE ist – wie die Java ME – plattformunabhängig [KoFW06, S. 7-9; JEE06, S. 3]. Abbildung 4 veranschaulicht die Multi-Tier Web Architektur der Java EE. Dyn. HTML Pages Client Tier JSP Pages, Servlets Web Tier Enterprise Beans Business Tier Database Enterprise Information System Tier Client Machine Java EE Server Database Server Abbildung 4: Java EE Multi-Tier Web Architektur [JEE06, S. 3] Mit Java Server Pages (JSP) und Servlets bietet die Java EE auch eine Technologie zur dynamischen, serverseitigen, Web-basierten Präsentation von Java-Applikationen. JSP ermöglicht es dabei, statischen HTML-Seiten kleine Java Code-Stücke hinzuzufügen und so dynamischen Inhalt zu generieren. Servlets hingegen sind Java-Klassen, die – ähnlich CGI-Skripten – Eingabeparamter in der Geschäftslogik, welche durch sog. Enterprise Beans verwirklicht wird, verarbeiten und dynamisch erzeugte HTML-Seiten ausgeben können [KoFW06, S. 11-13].6 Auf der Java EE und insbesondere auf JSP und Servlets basiert die J2EE Client Provisioning Specification Version 1.0 (JSR-124) [JSR124a, S. 21-24]. Die Spezifikation, welche in Form der Sun Client Provisioning Reference Implementation ein Provisioning von MIDlets erlaubt, wird im Folgenden näher dargestellt [JCPRI10]. 6 Für weiterführende Details sei bezüglich Java EE z. B. auf [JEE06] bzw. für Servlets z. B. auf [HuCr01] verwiesen. 6 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks 3 Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks In den bisherigen Ausführungen wurden die Voraussetzungen und Möglichkeiten von mobilen Geräten auf Basis der Java ME sowie deren Kommunikationsmöglichkeiten mit Provisioning Systemen beschrieben, die bspw. auf der Java EE Plattform aufbauen (vgl. Abbildung 5, welche Abbildung 1 verfeinert). Die Installation von MIDlets auf mobilen Geräten ist – wie beschrieben – mit Besonderheiten verbunden: Es müssen u. a. die Einschränkungen der mobilen Geräte bei der Kompatibilität von MIDlets berücksichtigt werden. Der Benutzer sollte deshalb beim Provisioning von MIDlets unterstützt werden, damit überflüssige Downloads von nicht installierbaren MIDlets und so auch Verbindungskosten im GSM- oder UMTS-Netz vermieden werden. HTTP-Kommunikation bspw. über GSM oder UMTS MIDP 2.0-Gerät Provisioning System auf Java EE Plattform (z. B. Sun Reference Implementation) Abbildung 5: Kommunikation zwischen einem MIDP-Gerät und einem Provisioning System Im Folgenden wird näher auf das Application Provisioning von MIDlets eingegangen. Dazu werden zuerst generelle Aspekte, wie z. B. der der Prozess des Application Provisionings von MIDlets, erläutert (Kapitel 3.1). Anschließend wird auf die Client Provisioning Specification (Kapitel 3.2), einem Framework, welches den Aufbau eines Provisioning Systems ermöglicht und u. a. den Nutzer bei der Suche nach passenden MIDlets unterstützen kann. Anhand einer Reference Implementation von Sun wird die Client Provisioning Specification dann in der Praxis vorgestellt (Kapitel 3.3). 3.1 Application Provisioning von MIDlets In diesem Kapitel werden generelle Aspekte des Application Provisionings von MIDlets beschrieben. Dazu werden zuerst der Begriff des Application Provisionings näher bestimmt und die verschiedenen Arten des Application Provisionings dargestellt. Anschließend wird ein konkreter Provisioning Prozess erläutert und danach der benötigte Funktionsumfang eines Provisioning Systems zusammengefasst. 7 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks 3.1.1 Begriffsbestimmung und Arten des Application Provisionings Application Provisioning beschreibt die Aktivitäten von Provisioning Systemen, „Services“ anzubieten, sowie den Prozess, diese „Services“ an die verschiedenen Client Geräte auszuliefern (vgl. Kapitel 1). Als „Services“ werden Applikationen (Applications) bzw. „Bundles“ und im Rahmen dieser Ausarbeitung MIDlets – d. h. JAR- und JAD-Dateien – verstanden [JSR124a, S. 7]. Diese allgemeine Umschreibung des Provisionings wird häufig durch die Aufzählung von Provisioning Teilprozessen verdeutlicht. Zu diesen Teilprozessen zählt zuerst das Anbieten von MIDlets auf einem Provisioning System, welches durchsucht werden kann. Als nächstes können passende MIDlets ausgewählt, transferiert und letztendlich installiert werden [Ma03]. Zur Veranschaulichung des Provisionings und der Funktionen eines Provisioning Systems wird häufig ein Getränkeautomat als Vorbild herangezogen (vgl. Kapitel 1): Die Befüllung sowie das Anbieten von verschiedenen Getränken, die Möglichkeit der Getränkeauswahl, die Ausgabe des Getränks und das Trinken des Getränks vom Käufer. Sowohl bei einem Provisioning System als auch bei einem Getränkeautomaten kann zusätzlich ein Bezahlungsvorgang mit eventuell vorheriger Authentifizierung vonnöten sein [JSR124a, S. 11]. Das Provisioning im Rahmen der Java ME lässt sich in verschiedene Arten unterteilen. Einen Überblick bietet die in Abbildung 6 dargestellte Strukturierung. Als erstes Kriterium kann z. B. die Initiierung des Provisionings herangezogen werden. Die Initiierung des Provisionings kann durch den Netzbetreiber, eine Software Komponente, die weitere zu ladende Komponenten benötigt, oder durch gemeinsame Bibliotheken initiiert werden [JSR232a]. Diese Art des Provisionings ist unter dem Oberbegriff Mobile Operational Management (JSR-232) zusammengefasst [JSR232]. Eine andere Initiierungsart ist das User-initiated Provisioning. Hier sucht ein Benutzer aktiv mit einer sog. Discovery Application – wie z. B. einem Browser – nach MIDlets. Application Provisioning User-initiated Over-The-Air Mobile Operational Management Andere Übertragungswege (z.B. per Software) Abbildung 6: Strukturierung des Application Provisionings Das Mobile Operational Management ist eine wichtige Spezifikation bspw. für Handyhersteller und Netzbetreiber zum Management von Handyfirmware, Betriebssystem, Frameworks usw. – kurz von Services und Applikationen [Hai05]. Da die Spezifikation 8 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks sehr jung ist, ist diese Initiierungsart noch nicht auf vielen Geräten verbreitet.7 Das Mobile Operational Management bietet die Möglichkeit, ein automatisches Provisioning durchzuführen. So kann z. B. bei fehlerhaften API oder Applikation ein Update on demand verbreitet werden. Hierzu benötigt das Mobile Operational Management jedoch Interaktions- und Zugriffsmöglichkeiten zwischen bzw. auf Pakete [JSR232a]. Dies ist aber in der CLDC 1.1 und im MIDP 2.0 nicht vorgesehen, sondern ist lediglich im Rahmen der CDC möglich [JSR232a; Hai05]. Aus diesem Grund wird das Mobile Operational Management in dieser Ausarbeitung nicht weiter vertieft (vgl. auch Kapitel 2.1.1). Im Folgenden wird näher auf das User-initiated Provisioning eingegangen. Als zweites Strukturierungskriterium dient hier der Übertragungsweg der Software zum mobilen Gerät. Hier wird u. a. die Luftschnittstelle – oder wie oben erwähnt Over-The-Air (OTA) – von anderen Übertragungswegen – wie z. B. per Herstellersoftware über serielles Kabel oder Bluetooth – unterschieden. Zur Übertragung per Herstellersoftware wird ein passendes MIDlet auf einen PC geladen und danach eine Software (z. B. Nokia PC Suite) verwendet, die die Installation des MIDlets über serielles Kabel oder Bluetooth auf dem mobilen Gerät vornimmt. Diese Art der Übertragung wird herstellerabhängig implementiert und ist nicht Teil einer Spezifikation [BrMo06, S. 30-31; JSR118, S. 20]. Nachfolgend wird das OTA User-initiated Provisioning näher beleuchtet, welches als Standard in der MIDP 2.0 Spezifikation festgelegt ist [JSR118, S. 19-26].8 3.1.2 Der Over-The-Air User-Initiated Provisioning Prozess Der Provisioning Prozess kann in drei Teilprozesse unterteilt werden: Stocking, Discovery und Delivery. Alle Teilprozesse nutzen das Repository – ein Verzeichnis, welches die zum Provisioning angebotenen Dateien enthält – und werden zwecks Dekomposition der Aufgaben von verschiedenen Rollen ausgeführt. Stocking bezeichnet hierbei das Managen des Repository, Discovery das Durchsuchen des Repository nach passenden MIDlets und Delivery das Laden und Installieren der MIDlets [La03]. Einen vereinfachten Überblick über den Provisioning Prozess und dessen Teilprozesse bietet Abbildung 7. 7 8 Final Release 1.0 der JSR-232 ist von Oktober 2006. Jedoch wurde die Entwicklung der Spezifikation unter Leitung der Open Service Gateway Initiative (OSGi) schon vor geraumer Zeit vollendet und im Jahr 2003 als JSR vorgeschlagen. Nähere Details sind unter [JSR232] bzw. [JSR232a] oder unter http://www.osgi.org/ zu erhalten. Das OTA User-initiated Provisioning war im MIDP 1.0 lediglich als Recommended Practice formuliert, wurde aber zur Vereinheitlichung in die MIDP 2.0 Spezifikation aufgenommen. 9 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks Stocking «uses» «uses» Repository Management Discovery MIDlet Developer «uses» Provisioning System Developer Delivery Client User Abbildung 7: Vereinfachtes Anwendungsfall-Diagramm des Provisioning Prozesses Der OTA User-Initiated Provisioning Prozess – wie er in der MIDP 2.0 Spezifikation beschrieben ist – umfasst dabei lediglich die Teilprozesse Discovery und Delivery aus Sicht eines Benutzers. Beim OTA User-initiated Provisioning Prozess wird davon ausgegangen, dass das Repository als Teil eines Provisioning Systems bereitsteht und entsprechende Dateien zum Download vorhanden sind. Als Provisioning Systeme können bspw. leicht angepasste Webserver benutzt werden, die JAR-Dateien und eventuell vorhandene JAD-Dateien zum Download anbieten [Or02].9 Ein angepasster Webserver bietet jedoch beim Stocking und Repository Management weniger Komfort als ein spezielles Provisioning System (vgl. Kapitel 3.1.3). Auf den Prozess des Stocking und auf das Repository sowie auf die Implementierung des Discovery bzw. Delivery Prozesses aus Sicht eines Provisioning Systems wird später näher eingegangen (vgl. Kapitel 3.2). Abbildung 8 verdeutlicht den Ablauf eines erfolgreichen OTA User-initiated Provisioning Prozesses, der im Anschluss näher erläutert wird. AMS Discovery JAD-Server JAR-Server Notification-Server GET /midlet.jad 200 OK GET /midlet.jar Delivery 200 OK POST /install-notify: 900 Success 200 OK Abbildung 8: Sequenzdiagramm eines erfolgreichen OTA Provisioning Prozesses [Sch07, S. 29] Discovery bezeichnet, wie oben erwähnt, das Durchsuchen eines Repository nach passenden MIDlets. Diese Suche wird durch eine „Discovery Application“ (DA) – wie z. B. einen Browser oder einer speziell von der AMS bereitgestellten Anwendung – ermög- 9 Die Anpassung umfasst lediglich eine Änderung des MIME-Headers (vgl. hierzu [Or02]). 10 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks licht. Die DA greift dabei per WAP oder HTTP auf das Provisioning System zu und zeigt die installierbaren MIDlets meist in Form einer Liste an. Die Mindestanforderung des MIDP 2.0 sieht vor, dass der Benutzer den Discovery bzw. Delivery Prozess durch die Eingabe eines Links zu einer JAD- bzw. zu einer JAR-Datei in der DA oder AMS erreicht [JSR118, S. 20-21]. Jedoch kann dieser Link bei vielen Geräten auch per SMS o. ä. übertragen werden (Push Dienste). Sobald der Benutzer den Link anwählt, soll das mobile Gerät – wie weiter oben beschrieben – einen Request mit entsprechendem Request-Header versenden, und das Provisioning System muss darauf den Datentyp der Datei per MIME-Header in der Antwort bekannt geben. Falls es sich bei der angeforderten Datei um eine JAR-Datei handelt, startet der Delivery Prozess.10 Wenn es sich um eine JAD-Datei handelt, soll diese heruntergeladen werden und inklusive Download-Link der JAR-Datei an die AMS übergeben werden. Die AMS führt gegebenenfalls Konvertierungsmaßnahmen in den vom Gerät verwendeten Zeichensatz aus und überprüft die Attribute der JAD-Datei auf Kompatibilität. Sollte die Installation nicht möglich sein, soll die AMS der Spezifikation zufolge über den Grund des Scheiterns informieren und einen sog. Status Code per POST Request (vgl. Tabelle 1) an einen Notification-Server übertragen, der in der JAD-Datei angegeben werden kann (MIDletInstall-Notify). In der MIDP 2.0 Spezifikation wird außerdem die jederzeitige Ab- bruchmöglichkeit durch den Benutzer gefordert. Wenn die Installation möglich ist, sollen die Attribute – wie z. B. die Lizenzvereinbarungen – und ein Bestätigungsbutton für die weitere Installation in der AMS angeboten werden [JSR118, S. 20-21]. Status Code Status Message 900 Success 901 Insufficient Memory 902 User Cancelled 903 Loss of Service 904 JAR size mismatch 905 Attribute Mismatch 906 Invalid Descriptor 907 Invalid JAR 908 Incompatible Configuration or Profile 909 Application authentication failure 910 Application authorization failure 911 912 Push registration failure Deletion Notification Tabelle 1: POST Request Status Codes beim Discovery und Delivery Prozess [JSR118, S. 24] 10 Die MIDP Spezifikation teilt diese Prozesse in Installation und Update auf [JSR118, S. 21-24]. In der Client Provisioning Specification wird dies als Delivery bezeichnet [JSR124a, S. 45-48]. 11 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks Der Delivery Prozess beginnt mit der Übergabe des Download-Links der JAR-Datei bzw. dem Download der JAR-Datei selbst. Hier sei erwähnt, dass die JAD- und die JAR-Datei nicht unbedingt auf dem gleichen Servern liegen müssen (vgl. auch Abbildung 8). Wenn die JAD- und die JAR-Datei auf unterschiedlichen Servern liegen, muss der Download-Link der JAR-Datei als Attribut MIDlet-Jar-URL in der JAD-Datei definiert sein und mit an die AMS übergeben werden. Die JAR-Datei wird über HTTP heruntergeladen, wobei das Provisioning System eine Authentifizierung verlangen kann (vgl. erwähnte Authentifizierung in Kapitel 2.1.3). Wenn die JAR-Datei geladen ist, wird sie von der AMS erneut überprüft, der Benutzer bei Fehlern gegebenenfalls alarmiert, das MIDlet installiert und ein Status Code an das Provisioning System versandt (vgl. Tabelle 1). Falls es sich bei dem heruntergeladenen MIDlet um ein Update handelt – d. h. sich dieses MIDlet in gleicher oder ähnlicher Version schon auf dem mobilen Gerät befindet – wird das alte MIDlet ersetzt und die persistenten Daten zugreifbar gemacht. Hierbei müssen jedoch die Signaturen der MIDlets größtenteils übereinstimmen [JSR118, S. 21-23]. 3.1.3 Funktionsumfang von Provisioning Systemen Bisher wurde bereits deutlich, dass ein Provisioning System eine zentrale Rolle im Provisioning Prozess einnimmt. Provisioning Systeme bieten eine zentrale Anlaufstelle für Nutzer an, die sich von diesen MIDlets laden können. Dabei werden Funktionen für die Teilprozesse Stocking, Discovery und Delivery sowie für das Repository Management benötigt. Wie weiter oben beschrieben, kann diese Funktionen auch ein modifizierter Webserver realisieren, Provisioning Systeme bieten allerdings mehr [Or02]. Provisioning Systeme müssen i. d. R. eine sehr große Anzahl von Dateien managen können. Dabei ist es, wie oben erwähnt, sinnvoll, für Aufgaben Rollen zu vergeben (vgl. Abbildung 7). Diese verschiedenen Rollen können durch ein spezielles Provisioning System besser unterstützt werden. Ein Benutzer kann durch ein spezielles Provisioning System z. B. während des Discovery Prozesses unterstützt werden, indem die Menge an Dateien kategorisiert und durch Suchfunktionen eine bessere Qualität der Treffer erreicht wird. Dies wird umso wichtiger, je größer die Anzahl der verwalteten Dateien wird. Das betrifft sowohl Benutzer als auch MIDlet-Entwickler, die ihre bereitgestellten MIDlets managen müssen, als auch Provisioning System Entwickler, die das gesamte Provisioning System managen müssen (vgl. zu den Rollen auch Abbildung 7). 12 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks Hinzu kommen u. a. Komfort-, Sicherheits- und Abrechnungsüberlegungen, falls einige MIDlets kommerziell genutzt werden sollen [Or02; La03; JSR124a, S. 17-20]. 3.2 Java Enterprise Edition Client Provisioning Framework Die J2EE Client Provisioning Specification Version 1.0 stellt ein Framework zur Erstellung von Provisioning Systemen dar und ermöglicht, den Aufbau von Provisioning Systemen. Dabei ist das Framework nicht nur auf das Provisioning von MIDlets beschränkt, sondern kann auch andere Clients bzw. Protokolle – z. B. Java Network Launching Protokol (JNLP) – beim Provisioning durch sog. Provisioning Adapter bedienen [JSR124a, S. 49-60]. Im Folgenden wird das Framework und dessen Unterstützung beim OTA User-initiated Provisioning Prozess erläutert. Dazu wird zuerst ein Überblick über die Client Provisioning Specification gegeben (Kapitel 3.2.1) und anschließend die Unterstützung der Provisioning Teilprozesse durch das Framework erklärt. Hierzu zählen das Stocking und das Repository (Kapitel 3.2.2) sowie die serverseitige Implementierung der Discovery und Delivery Prozesse (Kapitel 3.2.3 bzw. 3.2.4). 3.2.1 Überblick Das Ziel der Client Provisioning Specification ist die Unterstützung der Implementierung von „großen“ Provisioning Systemen (vgl. Kapitel 3.1.3) – in der Client Provisioning Specification „Advanced Portals“ genannt [JSR124a, S. 17-20]. Dabei sollen diese Systeme, einmal implementiert, auch für andere Provisioning Adapter verwendet werden können und diese durch wenige Anpassungen unterstützen. Eine Grundüberlegung dafür ist der modularisierte Aufbau des Frameworks [JSR124a, S. 8-11]. Den wesentlichen Aufbau eines Provisioning Systems nach der Client Provisioning Specification verdeutlicht Abbildung 9. Provisioning Framework Java EE Applikations Server Sonstige Services Erweitertes Provisioning System Repository Adapter 1 (HTTP) Provisioning Applikation Adapter 2 (JNLP) Provisioning Adapter Adapter 3 (andere) Client Provisioning API Provisioning System Clients Abbildung 9: Aufbau eines Provisioning Systems nach der Client Provisioning Spec. [JSR124a, S. 10] 13 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks Vereinfacht beschrieben, stellt das Client Provisioning Framework die Kommunikation zwischen Clients, die eine Anfrage nach MIDlets an das Provisioning System richten, der Provisioning Applikation, die auf das Repository und auf sonstige Services zugreifen kann, und dem Repository, in dem die angebotenen MIDlets gespeichert sind, her und vermittelt zwischen ihnen. Dazu kapselt das Framework die Clients durch Provisioning Adapter (≈ verschiedene Protokolle) vom Repository ab, was der Nutzer jedoch während der Kommunikation mit dem Provisioning System i. d. R. nicht wahrnimmt. Das Provisioning System agiert dabei – übertragen auf die Multi-Tier Web Architektur der Java EE in Abbildung 4 – als Geschäftslogik (Provisioning Application und Provisioning API) und Präsentation (z. B. Adapter 1 mit HTTP), welche auf die Datenebene (Repository und sonstige Services) zugreifen. Die sonstigen Services und das Repository können dabei auch von anderen verbundenen Provisioning Systemen oder Servern angeboten werden und werden deshalb hier zusammen mit dem Provisioning System als erweitertes Provisioning System bezeichnet (vgl. auch Abbildung 8). Unter sonstigen Services sind bspw. Abrechnungsdienste zur kommerziellen Nutzung von MIDlets oder LDAP-Verzeichnisse für die Nutzerverwaltung zusammengefasst. Die Funktionsweise der Client Provisioning Specification ist in Abbildung 10 dargestellt. Diese wird in den nächsten Kapiteln näher beschrieben. Server (Stocking/Repository) Kommunikation (Delivery) Client (Discovery) provisioning.xml matchers.xml device.xml adapters.xml: JNLP PAR-Datei (Java SE 1.3) PAR-Datei (MIDP 1.0) adapters.xml: HTTP adapters.xml: HTTP adapters.xml: HTTP adapters.xml: HTTP Java SE 1.4 JNLP, HTTP Java SE 1.3 HTTP Java ME (MIDP 2.0) HTTP, WAP PAR-Datei (MIDP 2.0) Java ME (MIDP 1.0) HTTP, WAP Abbildung 10: Überblick über die Funktionsweise der Client Provisioning Specification 14 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks 3.2.2 Stocking und Repository Stocking bezeichnet, wie weiter oben erwähnt, das Managen des Repository. Das bedeutet, dass MIDlets im Repository verfügbar gemacht, verwaltet und gelöscht werden müssen (vgl. hierzu auch den Application-Lifecycle in Kapitel 2.1.2) [JSR124a, S. 44]. Das Repository als Verzeichnis der bereitgestellten Dateien muss die MIDlets aufnehmen und entsprechend der Anfragen der Clients darstellen und ausliefern (Discovery und Delivery) [La03]. Hierzu werden die MIDlets in spezielle Provisioning Archive (PAR-Dateien) gepackt. Diese PAR-Dateien enthalten mindestens eine JAD-Datei und eine XML-Datei – den sog. Provisioning Descriptor (/META- INF/provisioning.xml). Hinzu kommen noch weitere optionale Dateien wie z. B. ein Icon oder eine Lizenzvereinbarung. Die JAR-Datei muss nicht in der PAR-Datei enthalten sein, muss aber über zumindest das Attribut MIDlet-Jar-URL in der JAD-Datei erreichbar sein. Eine PAR-Datei kann z. B. folgenden Aufbau haben: /META-INF/provisioning.xml /Demo3D.jad /Demo3D.jar /Demo3D.agree.txt Damit das Repository MIDlets auf die Suchanfragen der Benutzer darstellen kann, benötigt es Werte anhand derer es die Suchergebnisse bewerten kann (Matching). Diese Werte werden zu jeder PAR-Datei im Provisioning Descriptor festgelegt. Darunter fallen u. a. Angaben zum MIDlet selbst (<tool-descriptions> bzw. <clientbundle>), zum Autor (<vendor-info>), zur MIDlet-Kategorie – ob es sich bspw. um ein Spiel, einen Bildschirmschoner o. ä. handelt – und zu den Anforderungen (<device-requirement>) – d. h. Konfiguration und Profil. Ein beispielhafter Provisioning Descriptor ist in Anhang A dargestellt. Eine Matching-Möglichkeit des Repository ist das Requirement/Capability Matching, welches die Anforderungen eines MIDlets (provisioning.xml) mit den Fähigkeiten eines Gerätes automatisch matcht, welche in einer weiteren XML-Datei (device.xml) festgehalten sind. Dieses Matching wird im Rahmen des Discovery Prozesses anhand der Request-Header durchgeführt. 3.2.3 Discovery Im Rahmen des Discovery Prozesses wird einem Benutzer anhand einer Suchanfrage eine Trefferliste von MIDlets bzw. Links präsentiert. Hierbei kann ein Benutzer freie Suchparameter verwenden oder bspw. – wie oben beschrieben –mit Hilfe des Re15 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks quest-Headers des mobilen Gerätes die Anforderungen eines MIDlets mit den Fähigkeiten matchen (Requirement/Capability Matching). Die Datei device.xml beinhaltet eine Auflistung von Geräten und ihrer Fähigkeiten. Ein Teil einer device.xml-Beispieldatei ist in Anhang C abgebildet. Zu den angegebenen Schlüsseln ge- hören u. a. die Identifikation des Gerätes (<identifier>), der sog. Adaptername (<adapter-name>), mit dem bei einer Anfrage eines entsprechenden Gerätes der Delivery Prozess ausgeführt wird, und die Gerätefähigkeiten (<capability>) [JSR124a, S. 21-33]. Die Matching-Konfigurationsdatei (matchers.xml) definiert dabei die Matching-Regeln bzw. -Algorithmen. Im JSR-124 ist eine Konfiguration der matchers.xml mit einem Default-Algorithmus angegeben, der in den meisten Fällen ausreichen dürfte [La03]. Ein Teil der Default matchers.xml ist in Anhang D abgebildet. Dabei wird zuerst die Konfiguration (SoftwarePlatform.JavaPackage) geprüft, da der <param-value> gesetzt ist. Als nächster Wert werden die durch den Client unterstützten Kommunikationsprotokolle für Java geprüft (SoftwarePlatform.JavaProtocol). 3.2.4 Delivery Der Delivery Prozess überträgt die per Link ausgewählten Dateien über ein Provisioning Adapter an einen Client. Der Adapter ist eine Software Komponente, welche die auszuliefernden Dateien auf ein sog. Provisioning Model anpasst. Das Provisioning Model bezeichnet dabei ein Netzwerkprotokoll – wie z. B. HTTP oder JNLP –, was für den Delivery Prozess der MIDlets verwendet wird [JSR124, S. 49]. Ein Provisioning System kann über diese Adapter mehrere Provisioning Models anbieten. So kann ein Provisioning System neben einem MIDP-Adapter auch einen JNLPAdapter und einen HTTP-Adapter implementieren. Konfiguriert wird ein Adapter über eine entsprechende Konfigurationsdatei (adpaters.xml). Einen Ausschnitt aus einer Konfigurationsdatei ist in Anhang E abgebildet. In der adapters.xml sind u. a. der Adaptername (<adapter-name>), auf den auch der Discovery Prozess zurückgreift, und Angaben zum Descriptor (<descriptorfile>) zu machen. 16 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks 3.3 Darstellung eines Provisioning Systems am Beispiel der Sun Client Provisioning Reference Implementation Die Sun Client Provisioning Reference Implementation setzt die Konzepte der J2EE Client Provisioning Specification in eine lauffähige Java EE Anwendung um. Sie dient dabei auch als Vorbild für weitere Implementierungen wie z. B. JVending.11 Von der Startseite (vgl. Abbildung 11) sind die Seiten für den Stocking und Discovery erreichbar („Add/remove PAR files to/from the repository“ bzw. bspw. „browse available MIDlet suites“). Abbildung 11: Startseite der J2EE Client Provisioning Reference Implementation Das Stocking wird durch die Möglichkeit, PAR-Dateien auf das Provisioning System zu laden, unterstützt (vgl. Abbildung 12). Die PAR-Dateien werden beim Hochladen im Rahmen einer Pre-verification auf Vollständigkeit überprüft (vgl. hierzu [JSR124, 11 JVending ist unter http://jvending.sourceforge.net/ erreichbar. 17 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks S. 63]). Wenn wichtige Elemente in der PAR-Datei nicht enthalten sind, wird die Aufnahme der Datei in das Repository mit einer entsprechenden Fehlermeldung verweigert. Abbildung 12: Stocking der J2EE Client Provisioning Reference Implementation Der Discovery Prozess mobiler Endgeräte wird von der Reference Implementation durch den Link /ri-test/jam/ unterstützt. Wird dieser Link in einer AMS aufgerufen, werden die installierbaren MIDlets in einer Liste angezeigt (vgl. Abbildung 13). Dabei bietet die Reference Implementation die Möglichkeit, auch über andere Provisioning Adapter auf diese Liste zuzugreifen (vgl. Abbildung 14). 18 Kapitel 3: Darstellung des Application Provisionings von MIDlets und eines Provisioning Frameworks Abbildung 13: Discovery Prozess der Reference Implementation in der AMS Der Delivery Prozess wird standardmäßig durch die Adapter MIDP, JNLP und generic – d. h. HTTP – unterstützt. Abbildung 14: Discovery Prozess der Reference Implemtation in einem Browser 19 Kapitel 4: Zusammenfassung und Ausblick 4 Zusammenfassung und Ausblick Im Rahmen dieser Ausarbeitung wurde kurz aufgezeigt, wie ein konkreter Provisioning Prozess von MIDlets aussieht, welche Vorteile und welchen Funktionsumfang ein Provisioning Server bietet sowie eine Spezifikation für ein Framework zur Erstellung von Provisioning Systemen vorgestellt. Die Client Provisioning Specification bietet ein solides Framework für ein Provisioning System. Für vereinzelte MIDlets ist der Aufwand zur Erstellung und Pflege eines solchen Systems mit dem Framework sicherlich zu groß. Wer aber große Systeme unterhält, ist mit der Umsetzung eines Servers mit diesem Framework besser bedient als mit einem modifizierten Webserver [La03]. Aufgrund der Tatsache, dass das Framework auf Java EE aufbaut, sind die Sicherheit und die Stabilität auch für kommerzielle Anwendungen ausreichend. Die Authentifizierung und die Übermittlung des Status Codes währende des Provisioning Prozesses erlauben dabei interessante Geschäftsmodelle. Hier sei z. B. auf die nutzungsabhängige Abrechnung von MIDlets verwiesen. Interessant wird voraussichtlich die Entwicklung des Mobile Operational Managements im Rahmen der Java ME. Diese Initiierungsart des Provisionings bietet viele Vorteile, die im momentanen Umfeld von mobilen Geräten (CLDC) noch nicht nutzbar sind. Angesprochen wurde jedoch, dass in Zukunft wahrscheinlich mehr mobile Geräte die CDC unterstützen werden und somit Mobile Operational Management nutzen können. Das Client Provisioning Framework bietet mit seinem modularen Aufbau und vielfältigen Erweiterungsmöglichkeiten generell eine gute Basis für das Provisioning. Ein leicht fader Beigeschmack bleibt bei der Nutzung der Sun Reference Implementation dadurch hängen, dass diese Implementierung lediglich mit dem Java 2 SDK 1.4.2 und dem Java 2 SDK Enterprise Edition 1.3.1 als Plattform laufen will. 20 Anhang A: Zusammenstellung einiger JAD-Datei Attribute nach MIDP 2.0 Spezifikation A Zusammenstellung einiger JAD-Datei Attribute nach MIDP 2.0 Spezifikation Attribute Name MIDlet-Name MUST Yes MIDlet-Version Yes MIDlet-Vendor Yes MIDlet-Icon MIDlet-Description No MIDlet-Info-URL No MIDlet-Jar-URL Yes MIDlet-Jar-Size Yes MicroEdition-Profile Yes MicroEditionConfiguration MIDlet-Install-Notify MIDlet-Delete-Notify MIDlet-Delete-Confirm No No No Yes Attribute Description The name of the MIDlet suite that identifies the MIDlets to the user. The version number of the MIDlet suite. Version numbers are formatted so they can be used by the application management software for install and upgrade uses, as well as communication with the user. The organization that provides the MIDlet suite. The case-sensitive absolute name of a PNG file within the JAR used to represent the MIDlet suite. It SHOULD be used when the Application Management Software displays an icon to identify the suite. The description of the MIDlet suite. A URL for information further describing the MIDlet suite. The syntax and meaning MUST conform to RFC2396 and RFCs that define each scheme. The URL from which the JAR file can be loaded. The syntax and meaning MUST conform to RFC2396 and RFCs that define each scheme. Both absolute and relative URLs MUST be supported. The context for a relative URL is the URL from which this application descriptor was loaded. The number of bytes in the JAR file. The J2ME profiles required, using the same format and value as the System property microedition.profiles(for example "MIDP-2.0"). The device must implement all of the profiles listed. If any of the profiles are not implemented the installation MUST fail. Multiple profiles are separated with a blank (Unicode U+0020). The J2ME Configuration required using the same format and value as the System property microedition.configuration(for example"CLDC-1.0"). Refer to the OTA Specification for details. Refer to the OTA Specification for details. Refer to the OTA Specification for details. 21 Anhang B: Beispiel eines Provisioning Descriptors B Beispiel eines Provisioning Descriptors <?xml version="1.0" encoding="UTF-8"?> <provisioning-archive xmlns:j2ee-cp="http://java.sun.com/xml/ns/j2eecp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee-cp Provisioning_1_0.xsd "> <tool-descriptions> <description locale="">description</description> <display-name locale="">Demo3D</display-name> </tool-descriptions> <client-bundle> <content-id>1</content-id> <version>1.0</version> <bundle-type>RINGTONE</bundle-type> <descriptor-file mime-type="">Demo3D.jad</descriptor-file> <tool-descriptions> <description locale="">description</description> <display-name locale="">Demo3D</display-name> </tool-descriptions> <user-descriptions> <display-name locale="">Demo3D</display-name> <description locale="">description</description> </user-descriptions> <vendor-info> <vendor-name locale="">Horst</vendor-name> <vendor-description locale="">vendor-description</vendordescription> </vendor-info> <copyright locale="" uri="">copyright</copyright> <device-requirement> <requirement-name>MIDP-2.0</requirement-name> </device-requirement> </client-bundle> </provisioning-archive> 22 Anhang C: Beispiel einer Device Capability Datei C Beispiel einer Device Capability Datei <devices xmlns="http://java.sun.com/xml/ns/j2ee-cp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee-cp Devices_1_0.xsd"> <!-- Browsers (Mozilla, Netscape, IE) Note that J2SE & MIDP version supported is a total guess. --> <device> <identifier> Mozilla </identifier> <adapter-name> jnlp </adapter-name> <adapter-name> midp </adapter-name> <adapter-name> generic </adapter-name> <capability> <capability-name> SoftwarePlatform.JavaPlatform </capability-name> <capability-value> J2SE/1.4 </capability-value> </capability> </device> <!-- Default MIDP 2.0 device --> <device> <identifier> MIDP-2.0 </identifier> <adapter-name> midp </adapter-name> <capability> <capability-name> SoftwarePlatform.JavaPlatform </capability-name> <capability-value> MIDP/2.0 </capability-value> </capability> <capability> <capability-name> HardwarePlatform.ScreenSize </capability-name> <capability-value> 96x128 </capability-value> </capability> <capability> <capability-name> HardwarePlatform.BitsPerPixel </capability-name> <capability-value> 2 </capability-value> </capability> </device> … </devices> 23 Anhang D: Beispiel einer Matchers Datei D Beispiel einer Matchers Datei <matchers xmlns="http://java.sun.com/xml/ns/j2ee-cp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee-cp Matchers_1_0.xsd"> <matcher> <attribute-name>SoftwarePlatform.JavaPlatform</attribute-name> <matcher-class>javax.provisioning.matcher.VersionMatcher</matcherclass> <init-param> <param-name>allMustMatch</param-name> <param-value>false</param-value> </init-param> </matcher> <matcher> <attribute-name>SoftwarePlatform.JavaPackage</attribute-name> <matcher-class>javax.provisioning.matcher.VersionMatcher</matcherclass> <init-param> <param-name>allMustMatch</param-name> <param-value>true</param-value> </init-param> </matcher> <matcher> <attribute-name>SoftwarePlatform.JavaProtocol</attribute-name> <matcher-class>javax.provisioning.matcher.VersionMatcher</matcherclass> <init-param> <param-name>allMustMatch</param-name> <param-value>true</param-value> </init-param> </matcher> … </matchers> 24 Anhang E: Beispiel einer Adapters Datei E Beispiel einer Adapters Datei <adapters xmlns="http://java.sun.com/xml/ns/j2ee-cp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee-cp Adapters_1_0.xsd"> <adapter> <!-This is the MIDP OTA adapter. --> <adapter-name>midp</adapter-name> <adapterclass>com.sun.provisioning.adapters.midp.AdapterMIDP</adapter-class> <base-uri>/delivery/midp</base-uri> <descriptor-file> <extension>jad</extension> <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type> </descriptor-file> <fulfillment-duration>0</fulfillment-duration> <init-param> <param-name>install-notify</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>delete-notify</param-name> <param-value>true</param-value> </init-param> </adapter> … </adapters> 25 Literaturverzeichnis [BrMo06] Ulrich Breymann, Heiko Mosemann: Java ME – Anwendungsentwicklung für Handys, PDA und Co, Hanser Fachbuchverlag, 2006. [CDC06] Sun Microsystems Inc.: Java Plattform, Micro Edition Connected Device Configuration Data Sheet, http://java.sun.com/j2me/docs/j2me_cdc.pdf, 2006, Abrufdatum: 2006-11-09. [CDC06a] Sun Microsystems Inc.: CDC API Comparision, http://java.sun.com/products/cdc/reference/cdc_packages.pdf, 2006, Abrufdatum: 2006-11-11. [CLDC03] Sun Microsystems Inc.: CLDC API Documentation, http://java.sun.com/j2me/docs/pdf/cldc11api.pdf, 2003, Abrufdatum: 200611-11. [CLDC04] Sun Microsystems Inc.: Datasheet Connected Limited Device Configuration HotSpot Implementation, http://java.sun.com/j2me/docs/pdf/CLDC_HI112.pdf, 2004, Abrufdatum: 2006-11-11. [Hai05] Sven Haiges: Mobil-Machung – Mobile Operational Management mit OSGi, Javaspektrum 2/2005, S. 21-23, SIGS-DATACOM Verlag, 2005 [HuCr01] Jason Hunter, William Crawford: Java Servlet Programming, 2nd Edition, O’Reilly, 2001. [JCPRI10] Sun Microsystems Inc.: J2EE Client Provisioning 1.0 Reference Implementation, http://java.sun.com/j2ee/provisioning/download.html, 2003, Abrufdatum: 2006-11-30. [JEE06] Jennifer Ball, Debbie Carson, Ian Evans, Scott Fordin, Kim Haase, Eric Jendrock: The Java EE 5 Tutorial – For Sun Java System Application Server Plattform Edition 9, http://java.sun.com/javaee/5/docs/tutorial/doc/JavaEETutorial.pdf, 2006, Abrufdatum: 2006-11-29. [JME01] Sun Microsystems Inc.: Building Compelling Services for the Wireless Market Using Java Technology, http://developers.sun.com/techtopics/mobility/getstart/articles/whyjava/, 2001, Abrufdatum: 2006-11-08. [JSR118] Java Community Process: Mobile Information Device Profile for Java 2 Micro Edition Version 2.1, http://jcp.org/aboutJava/communityprocess/mrel/jsr118/index.html, 2006, Abrufdatum: 2006-11-28. [JSR124] Java Community Process: J2EE Client Provisioning Specification, http://jcp.org/en/jsr/detail?id=124, 2003, Abrufdatum: 2006-11-11 [JSR124a] Java Community Process: J2EE Client Provisioning Specification Final Release Version 1.0, http://jcp.org/aboutJava/communityprocess/final/jsr124/index.html, 2003, Abrufdatum: 2006-11-05. [JSR139] Java Community Process: Connected Limited Device Configuration 1.1, http://www.jcp.org/en/jsr/detail?id=139, 2003, Abrufdatum: 2006-11-11. [JSR139a] Java Community Process: J2ME Connected Limited Device Configuration (CLDC) Specification 1.1 Final Release, http://jcp.org/aboutJava/communityprocess/final/jsr139/index.html, 2003, Abrufdatum: 2006-11-11. [JSR218] Java Community Process: Connected Device Configuration (CDC) 1.1, http://jcp.org/en/jsr/detail?id=218, 2006, Abrufdatum: 2006-11-09. [JSR232] Java Community Process: JSR-232 Mobile Operational Management, http://www.jcp.org/en/jsr/detail?id=232, 2006, Abrufdatum: 2006-12-01. [JSR232a] Java Community Process: JSR-232 Mobile Operational Management for Java 2 Plattform – Micro Edition Version 1.0 Final Specification Package.pdf, http://jcp.org/aboutJava/communityprocess/final/jsr232/index.html , 2006, Abrufdatum: 2006-12-01. [KoFW06] Arne Koschel, Stefan Fischer, Gerhard Wagner: J2EE/Java EE kompakt – Enterprise Java: Konzepte und Umfeld, 2. Aufl., Elsevier Verlag, 2006 [KrHa03] Michael Kroll, Stefan Haustein: J2ME Developer´s Guide – JavaAnwendungen für mobile Geräte, Markt + Technik Verlag, 2003. [La03] Eric Larson: An Overview of JSR 124: J2EE Client Provisioning, http://developers.sun.com/techtopics/mobility/midp/articles/provisioning/, 2003, Abrufdatum: 2006-12-02. [Ma03] Quasay Mahmoud: Getting started with the J2EE Client Provisioning Reference Implementation, http://developers.sun.com/techtopics/mobility/midp/articles/provisioningget start/, 2003, Abrufdatum: 2006-12-02. [Or02] Enrique Ortiz: Introduction to OTA Application Provisioning, http://developers.sun.com/techtopics/mobility/midp/articles/ota/index.html, 2002, Abrufdatum: 2006-10-26. [Sch07] Klaus-Dieter Schmatz: Java Micro Edition – Entwicklung mobiler JavaMEAnwendungen mit CLDC und MIDP, 2. Aufl., Dpunkt.verlag, 2007. [We06] Matthias Weßendorf: Web Services & mobile Clients – SOAP, WSDL, UDDI, J2ME, MIDlets, WAP & JSF, 2. Aufl., W3L Verlag, 2006.