Neuerungen besonders für Web-Services und mobile Geräte

Java etabliert sich als End-to-End-Plattform

12.04.2002
MÜNCHEN (ws) - Sun Microsystems nutzte seine zum siebten Mal abgehaltene Entwicklerkonferenz JavaOne, um einen Ausblick auf kommende Neuerungen der Java-Plattform zu geben. Im Zentrum der Aufmerksamkeit standen dabei Technologien zum Programmieren und Nutzen von Web-Services sowie neue Funktionen für mobile Geräte.

Angesichts des Hypes um die Web-Services überrascht es wenig, dass sich auch die größte Java-Veranstaltung des Jahres zu einem Gutteil darum drehte. Sun Microsystems und die zahlreichen Hersteller aus dem Java-Lager wetteifern dabei mit Microsoft um die Gunst der Entwickler, die zukünftig lose gekoppelte Applikationen auf Basis von Soap, der Web Services Description Language (WSDL) und der Universal Description, Discovery and Integration (UDDI) erstellen wollen. Die Etablierung dieses neuen Anwendungsmodells zeigt einmal mehr, dass für komplexere Softwareprojekte nur mehr zwei relevante Plattformen zur Verfügung stehen: jene von Microsoft und Java.

XML-APIs als Basis für Web-ServicesDa die Extensible Markup Language (XML) als Kerntechnologie für Web-Services dient, liegt es natürlich nahe, dass Funktionen zur Verarbeitung der Markup-Sprache als Minimalvoraussetzung für dieses Anwendungsmodell gelten. Sun bündelt die XML-bezogenen APIs in diversen Java-XML-("Jax"-)Packages. Zu J2EE 1.3 und J2SE 1.4, das im Februar freigegeben wurde, gehört das "Java XML Processing API" (Jaxp) in der Version 1.1. Es definiert Schnittstellen zu DOM- und SAX-Parsern sowie solche zu XSLT-Prozessoren. Derzeit bietet Jaxp nur die Möglichkeit, XML-Daten anhand von Document Type Definitions (DTDs) zu validieren. Mit der Version 1.2, die in den nächsten zwei Monaten erscheinen soll, fügt Sun Unterstützung für den W3C-Standard "XML Schema" hinzu.

Weitere Jax-Pakete kündigte Sun bereits auf der letztjährigen JavaOne an. Deren Spezifikationen wurden mittlerweile abgeschlossen oder stehen kurz vor der Fertigstellung. So versammelt das "Java API for XML Registries" (Jaxr) einheitliche Schnittstellen zu Verzeichnissen wie UDDI oder jenem von ebXML. Die Interfaces zum Versand von XML-Geschäftsdokumenten wie Rechnungen oder Auftragsbestätigungen fasst das "Java APIs for XML Messaging" (Jaxm) zusammen. Es bietet Funktionen zum verlässlichen Transport solcher Daten über standardisierte Mechanismen wie Soap oder "Transport Packaging and Routing" (TPR) von ebXML.

Auch wenn zum Aufruf von Web-Services XML-Daten über Soap verschickt werden, so ist Jaxm für diesen Zweck eigentlich nicht vorgesehen. Stattdessen definiert Sun dafür ein API auf höherer Ebene, das unter dem Namen Jax-RPC firmiert. Dieses nähert sich im Rahmen des Java Community Process (JCP) als Java Specification Request (JSR) 101 (http://jcp.org/jsr/detail/101.prt) der voraussichtlichen Fertigstellung im Juni. Seine Aufgabe besteht vornehmlich darin, Remote Procedure Calls (RPC) auf Basis von XML an Java zu binden sowie das Verpacken und Versenden der Argumente ("Marshalling") zu übernehmen. Jax-RPC soll Entwickler weitgehend von Soap-Einzelheiten abschirmen, das Auslösen oder Verarbeiten deratiger Funktionsaufrufe lässt sich über die Nutzung entsprechender Java-Methoden bewerkstelligen. Derzeit unterstützt Jax-RPC die Version 1.1 von Soap, der Nachfolger 1.2 soll kurz nach Verabschiedung des entsprechenden Standards berücksichtigt werden.

Während Jaxp Bestandteil der Java-Kerndistribution ist, wird Sun die anderen Jax-APIs bis zum Erscheinen des JDK 1.5 separat vertreiben. Derzeit stehen sie im Rahmen der zweiten Early-Access-Ausführung des "Java XML Pack" (http://java.sun.com/xml/javaxmlpack.html) und des "Java Web Services Developer Pack" (http://java.sun.com/webservices/webservice spack.html) zum Download bereit. Für das Jax-Pack soll in jedem der kommenden Quartale ein Update erscheinen.

Zwei weitere XML-APIs werden nachgereichtNoch nicht Bestandteil der beiden Packages sind zwei weitere XML-APIs. Die "Java Architecture for XML Binding" (Jaxb) soll aus XML-Schemata Java-Klassen generieren. Diese übernehmen dann für alle von diesem Schema abgeleiteten Dokumentinstanzen Standardaufgaben wie etwa das Parsen oder Validieren. Im Gegensatz zu generischen Parsern soll Jaxb zu besserer Performance und weniger Speicherverbrauch führen. Die Version 1.0 kündigte Sun für Ende des Jahres an. Den Vorschlag für ein "XML Streaming API" brachte Bea erst kürzlich als JSR 173 (http://jcp.org/jsr/detail/173.prt) in den JCP ein. Es soll Programmierern den ereignisgesteuerten Zugriff auf XML-Daten in Ein- und Ausgabeströmen erlauben.

Die genannten Jax-APIs geben Java-Entwicklern alle Mittel an die Hand, auf einheitliche Weise Web-Services zu entwickeln oder diese in Client-Programmen zu konsumieren. Allerdings sind sie noch nicht Bestandteil der aktuellen Spezifikationen von J2SE und J2EE. Das Server-Java definiert daher auch nicht, wie Web-Services an J2EE-Container gebunden werden.

Derzeit uneinheitliche J2EE-Web-ServicesDies führt etwa bei der Ausbringung von Java-basierenden Web-Services auf Applikations-Servern zu herstellerspezifischen Verfahren und behindert die Portabilität solcher Anwendungen zwischen den J2EE-Servern verschiedener Anbieter. Deshalb versuchen mehrere Hersteller unter Führung der IBM im Rahmen des JSR 109 (http://jcp.org/jsr/detail/109.prt), ein einheitliches Programmiermodell und eine Architektur zur Implementierung von Web-Services zu definieren. Das Ergebnis soll voraussichtlich im Sommer 2002 vorliegen und in die Spezifikation von J2EE 1.4 eingehen, die nächstes Jahr freigegeben werden soll.

Auch wenn Sun große Anstrengungen unternimmt, Java als ideale Plattform für Web-Services zu positionieren, so sollen die bereits vorhandenen Mechanismen zur Entwicklung verteilter Anwendungen nicht aufgegeben werden. Während nämlich Microsoft in .NET das bisher unter Windows gebräuchliche Distributed COM (DCOM) fallen lässt, sollen Java-Anwender weiterhin auf Basis von Corba und der Remote Method Invocation (RMI) programmieren können. Letzteres bewirbt Sun nach wie vor als bevorzugte Technologie in homogenen Java-Umgebungen.

Da sich mit den Web-Services ein herstellerübergreifender Standard für verteilte Anwendungen abzeichnet, bemühen sich die großen Plattformanbieter, die Reichweite solcher Dienste auf möglichst viele Clients auszudehnen. Dazu zählen auch mobile Kleingeräte, die bisher nicht als typische Konsumenten von Web-Services angesehen wurden.

Auch für mobile GeräteZum einen zielt nämlich das neue Anwendungsmodell primär auf die B-to-B-Kommunikation ab, die in den meisten Fällen von Server zu Server erfolgt. Zum anderen benötigt die Verabeitung von XML-basierenden Protokollen vergleichsweise viel Speicher und Rechenleistung. Sun will nun im Rahmen des JSR 172 (http://jcp.org/jsr/detail/172.prt) zwei optionale Packages speziell für die Java 2 Micro Edition (J2ME) spezifizieren, die den Zugriff von Kleingeräten auf Web-Services ermöglichen. Um den beschränkten Hardwareresourcen von Handys oder PDAs Rechnung zu tragen, begnügen sich diese mit einer Teilmenge von Jaxp beziehungsweise Jax-RPC.

Die Java-Aktivitäten für derartige Kleingeräte beschränken sich indes nicht nur auf das Hype-Thema Web-Services. Unter dem Codenamen "Monty" kündigte Sun die Entwicklung einer neuen Virtual Machine an, die vor allem wesentliche Geschwindigkeitsverbesserungen bringen soll. Diese will die Unix-Company in erster Linie über die Nutzung der "Hotspot"-Technologie erreichen, die bereits in J2SE und J2EE Verwendung findet.

Darüber hinaus trägt Sun der steigenden Leistung von mobilen Geräten Rechnung, indem die Connected Limited Device Configuration (CLDC) in der Version 1.1 um wesentliche Funktionen erweitert wird. Dazu zählen die Unterstützung für Fließkommaarithmetik und Fehlerbehandlung durch die VM. Darüber hinaus definiert eine Arbeitsgruppe im Rahmen des JSR 177 (http://jcp.org/jsr/detail/177.prt) eine Reihe von APIs, die Sicherheitsdienste für mobile Geräte verfügbar machen sollen.

Besseres Java für PDAsDazu zählen etwa die Verifizierung von Zertifikaten und digitalen Unterschriften sowie die Speicherung sensibler Daten wie Passwörter oder privater Schlüssel. Um den Anforderungen des Consumer-Marktes gerecht zu werden, sollen zudem Unterstützung für 2D-Grafiken und Sound hinzukommen. Darüber hinaus sollen optionale Pakete für drahtlose Kommunikation mittels Telefonie-APIs den Versand und Empfang von SMS-Nachrichten aus Java-Programmen ermöglichen sowie die Entwicklung von Chat-Anwendungen erlauben.

Während die CDLC eine Basiskonfiguration für eine Geräteklasse mit relativ geringen Hardwareressourcen beschreibt, legen die darauf aufbauenden Profile den Funktionsumfang für bestimmte Geräte fest. So definiert etwa das Mobile Information Device Profile (MIDP), welche Programmier-Schnittstellen auf Mobiltelefonen oder Pager verfügbar sind. Sun reagiert auf die große Verbreitung von PDAs, indem das Unternehmen aufbauend auf MIDP 1.0 eigene PDA-Profile definiert. Zu diesen gehören Programmier-Schnittstellen, die den Zugriff auf typische PIM-Features wie Kalender oder Adressbuch, aber auch auf das Dateisystem erlauben.

Die Ausdifferenzierung bei mobilen Geräten und damit auch von J2ME führt zu einer steigenden Zahl möglicher Clients für J2EE-Anwendungen. Da sich Gerätetypen in ihrem Funktionsumfang je nach Konfiguration und genutzten Profilen unterscheiden, müssen angepasste Programmvarianten für die jeweiligen Frontends bereitstehen. Damit ein J2EE-Server erkennen kann, mit welcher Art von Endgerät er es zu tun hat, entsteht unter dem JSR 124 (http://jcp.org/jsr/detail/124.prt) eine Spezifikation für das Client Provisioning. Sie soll allerdings J2EE nicht um Mechanismen zur Client-Ausforschung erweitern, sondern vielmehr eine Schnittstelle festlegen, über die sich solche Schnüffelmodule einklinken lassen. Da solche Features besonders für das Hosting von Anwendungen interessant ist, soll die Spezifikation auch Interfaces für Billing-Systeme umfassen.

Java-XML-APIsJaxp: "Java XML Processing API". Derzeit in der Version 1.1, in Kürze 1.2. Es definiert Schnittstellen zu DOM- und SAX-Parsern sowie solche zu XSLT-Prozessoren. Version 1.2 bringt Unterstützung für XML Schema.

Jaxr: "Java API for XML Registries". Bietet einheitliche Schnittstellen zu Verzeichnissen wie UDDI oder jenem von ebXML

Jaxm: "Java APIs for XML Messaging". Umfasst Interfaces zum Versand von XML-Geschäftsdokumenten.

Jaxb: "Java Architecture for XML Binding". Dient der Generierung von Java-Klassen aus XML-Schemata.

Jax-RPC: "Java APIs for XML based RPC". High-Level-API für Remote Procedure Calls (RPC) auf Basis von XML.