Java expandiert – JavaOne 2/5

Irgendwie schien die ganze Java-Gemeinde gespannt nach San Francisco zu blicken, um herauszufinden, was jetzt mit Java passiert. Zumindest steht inzwischen das Folgende fest: Oracle macht mit Java nicht mehr und nicht weniger, als es Sun gemacht hätte.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Lesezeit: 8 Min.
Von
  • Michael Wiedeking
Inhaltsverzeichnis

So ein bisschen geht die JavaOne in dem ganzen Konferenzgetümmel unter. Die Keynotes finden gemeinsam mit Oracles OpenWorld und der Oracle Develop statt. Und unter dem Ansturm der Java-Fremden, die den Java-Anhängern zahlenmäßig deutlich überlegen sind, geht Java irgendwie verloren. So ist es nicht verwunderlich, dass die Java-Keynote erst als dritte der Keynotes am heutigen Abend stattfand.

Java wird weiterentwickelt. So viel steht fest. Das gilt nicht nur für Java als Sprache, sondern auch für Java als Laufzeitumgebung und in den drei Darreichungsformen Java SE, Java EE und Java ME, also für die Standard-, die Enterprise und die Mobil-Ausgabe. So soll Java für neue Applikationsmodelle und neue Hardware optimiert und damit die Produktivität angekurbelt werden. Java soll auch modularer werden und damit die Handhabung und Verteilung verbessern.

Namentlich wurde das Project Coin erwähnt, das für kleine Veränderung in der Programmiersprache Java verantwortlich zeichnet. Dazu gehören beispielsweise die verbesserte Typ-Inferenz, die einem mit dem Diamand-Operator die lästige Wiederholung generischer Typ-Parameter erspart; ein spezieller try-Block, der für die korrekte Freigabe von Ressourcen sorgt; die Erweiterung des switch-Statements um String-Fälle; die Überarbeitung der Collections, damit diese effizienter und paralleler ablaufen können; und nicht zuletzt die Closures, die das Project Lambda definiert.

Darüber hinaus sollen die Java-Bibliotheken modularisiert und nachladbar gemacht werden, damit Java eine flexible, anpassbare Umgebung wird, die nach Belieben zusammengestellt und ausgeliefert werden kann. Damit würde dann auch der Klassenpfad verschwinden und diese Fehlerquelle durch ein Repository ersetzt werden, das unterschiedliche Versionen von JAR-Dateien bzw. Modulen beherbergen kann.

Die Nebenläufigkeit auf Prozessoren mit sehr vielen Kernen, soll besser unterstützt werden. Dabei kann man sich unter "vielen" durchaus auch eine dreistellige Zahl vorstellen, wie sie schon heute bei modernen Grafikkarten zu finden ist. Hier soll das fork/join-Framework Abhilfe schaffen, um sich auch eine variable Anzahl von Kernen effizient zu nutze machen zu können.

Viele Kerne brauchen viel Speicher, und so soll auch Java und dessen Garbage Collector mit extrem viel Speicher zurecht kommen, ohne merklich Pausen machen zu müssen. Dazu könnte beispielsweise die permanente Speichergeneration aus der HotSpot-Maschine entfernt werden.

Dann soll Java auch mit den schnellen Netzwerken zurecht kommen, die mindestens 10 GByte/s verkraften können. Allgemein müssen die Zugriffe auf externe Ressourcen schneller werden, und so werden neben verbesserten Netzwerkfähigkeiten (auch die schnelle Kommunikation mit der Peripherie, wie InfiniBand) auch Protokolle wie SDP (für Multimedia-Sessions mit mehreren Video- und Audio-Strömen) und SCTP (für sicheren Transport auf eher unzuverlässigeren Paketprotokollen) unterstützt werden. Darüber hinaus wird die Dateisystem-Unterstützung nicht nur durch eine neue API verbessert, sondern auch der Einsatz von asynchronem I/O unterstützt.

Das letzte Jahr hat zudem viele Veränderungen im Zusammenhang mit anderen Sprachen gebracht, die auf der Java Virtual Machine (JVM) laufen. So können praktisch alle Ruby-, Python- und PHP-Applikationen auf ein und demselben Server laufen. Selbst die Abarbeitung von CGI-Skripten auf Basis von beispielsweise Perl ist mit einem Java-Server möglich. Damit steht der einheitlichen Verwaltung von Applikationen auf einer "genormten" Umgebung nichts mehr im Wege.

Nicht nur deshalb soll die Einsetzbarkeit der JVM für verschiedene andere Sprachen deutlich verbessert werden. Das gilt nicht nur für die eher statisch typisierten Sprachen wie Scala, sondern auch für die dynamischen Sprachen wie JRuby, Jython oder auch Groovy. Zur Verbesserung gehört insbesondere auch die Erweiterung der JVM um das sogenannte "invokedynamic", mit dem dynamische Aufrufe über die Mechanismen der JVM ausfindig gemacht und aufgerufen werden können, damit die dynamischen Sprachen noch mehr von den Fähigkeiten und Optimierungskünsten der JVM profitieren können.

Falls sich jemand Sorgen um die integrierte Entwicklungsumgebung NetBeans oder den Application Server Glassfish gemacht haben sollte, wurde er während der Keynote besänftigt. Für 2011 sind je zwei Releases geplant. Speziell der Glassfish soll die Zusammenarbeit mit anderen Skriptsprachen und dynamischen Sprachen verbessern. Soweit nicht schon geschehen, sollen die Server mit Dependency Injection (DI) modularer gemacht und über leichtgewichtige Web-Profile noch besser auf die Bedürfnisse der zu verwaltenden Services angepasst werden können.

So sollen die Programmierung mit Plain Old Java Objects (POJOs) und Enterprise JavaBeans (EJB) noch produktiver und effektiver werden. Deren Freigabe als Webservices soll verbessert, die Ausführung beschleunigt und die Interoperabilität (beispielsweise mit .NET) durch Anwendung des WS-I Basic Profile 2.0 des Web Services Interoperability Industry Consortium verbessert werden. Und dann soll noch ein hybrides Programmiermodell die Zusammenarbeit von Java EE und OSGi verbessern.

Für die Zukunft plant man – ausgehend von der Annahme, dass mittelfristig alle Browser HTML5 unterstützen werden – die beste "HTML5 & Native Application Experience" durch Java auszuliefern. Dazu soll die Mächtigkeit von Java mit der Einfachheit und Eleganz von JavaFX zu einem neuen Modell vereint werden. Damit das bewerkstelligt werden kann, strebt man eine native Interoperabilität zwischen Java, JavaScript und HTML5 an.

Dazu wird eine hoch performante Graphics Engine benötigt, die man mit Java ansprechen zu können hofft. Damit sollen nicht nur die 2-D-, sondern auch die 3-D-Möglichkeiten unter Zuhilfenahme von Hardware-Beschleunigern verbessert werden und mittelfristig 3-D-Transformationen sogar "echten" 3-D-Objekten weichen.

Ein Teil dieser Funktionen konnte man schon unter JavaFX bewundern. So ist es umso erfreulicher, dass nebenbei angemerkt wurde, dass wohl die JavaFX-Controls für die Allgemeinheit als Open Source freigegeben werden sollen.

Schließlich träumt Oracle noch davon, Java für mobile Endgeräte zu modernisieren. Neue Geräteschnittstellen sollen so die Hardware- und Betriebsystemfunktionen leichter ansprechen können. Mit wenig Speicherbedarf und effizienter CPU-Nutzung verspricht man sich einen hohen Verteilungsgrad auch für Smart-Cards, Fernsehgeräte und eben Mobilgeräte.

Dabei denkt man nicht nur an den jetzigen, erfolgreichen Einsatz im Embedded-Bereich, wie bei Amazons Kindle, dem LifeScribe SmartPen oder den VoIP-Telefonen von Cisco. Java soll insbesondere auch die existierenden Handys unterstützen. Es sollen neben der Möglichkeit, Applets auf diesen Handys installieren zu können, auch die SIM-Karten aufgepeppt werden. Auf diese Weise ließe sich beispielsweise das Handy für (kontaktlose) Micro-Payments nutzen.

Alles andere ist eher technischer Natur und will die technische Keynote behandel. Aber ich glaube nicht, dass ich – außer vielleicht etwas über konkretere Termine – nichts Neues erfahren werden. Der erste Tag war nämlich für mich sehr schön, habe ich doch viel über die Zukunft von Java gelernt.

Eigentlich bin ich doch nur wegen Java als Programmiersprache auf die JavaOne gekommen. Aber trotzdem hatte ich meine schwere Not, aus den vielen, wahrhaft attraktiven Möglichkeiten auszuwählen. Selbst im Zusammenhang nur mit der Programmiersprache Java fiel es mir nicht leicht, mich zu entscheiden.

So ging es um die Spracherweiterungen, die Probleme mit der Rückwärtskompatibilität, um Multi-Threading und neue Sprachkonstrukte, Lambda-Ausdrücke und sogar um etwas darüber, wie die neue Sprache nach Java aussehen könnte. Aber das sind ganz andere Geschichten und müssen ein andermal erzählt werden. ()