JavaOne: Gesicherte Java-Zukunft

Veranstaltungsberichte  –  Kommentare

Mit Spannung wurde die erstmals von Oracle ausgerichtete JavaOne erwartet. Gefragt war, wie sich der Konzern zur Zukunft der Sprache äußern würde. Michael Wiedeking, Blogger des Babel-Bulletins auf heise Developer, war vor Ort und berichtete von seinen Eindrücke. Die Redaktion hat daraus ein Kompilat mit den wichtigsten Neuerungen für den interessierten Java-Entwickler erstellt.

Die Termine früherer JavaOne-Konferenzen waren immer im Mai oder Juni. Dieses Mal sollte die große Java-Konferenz allerdings parallel zu Oracles OpenWorld stattfinden. Das war nicht weiter schlimm, bedeutete aber auch, dass nicht nur 10.000 Konferenzbesucher in San Francisco waren, sondern rund 40.000. So groß die Stadt auch sein mag, bemerkbar machte sich das auf jeden Fall. Es war geradezu unmöglich, durch die Stadt zu gehen, ohne auf jemanden zu stoßen, der kein Oracle-Schild um den Hals trug. Die ganze Stadt wimmelte von Oracle-Anhängern und Java-Freunden, und so war es kein Wunder, dass sämtliche Hotels ausgebucht waren.

Veranstaltungsort der regulären Konferenz waren nicht wie sonst das Moscone Center, sondern in der in der Nähe liegenden Hotels. Namentlich sei nur das Hilton erwähnt, in dem ein Großteil der Java-Sessions stattfand. Das Hotel ist dementsprechend groß, kann es nicht nur die mehrere tausend Menschen unterbringen, sondern auch verköstigen. Der Eingangsbereich ist riesig, Rolltreppen führten zu den Veranstaltungsräumen und alles ist so geräumig, dass man fast nicht glauben konnte, dass immer mehrere tausend Besucher gleichzeitig im Hotel waren.

Jedoch ging die JavaOne ein wenig in dem ganzen Konferenzgetümmel unter. Die Keynotes fanden gemeinsam mit der OpenWorld und der Oracle Develop statt. Und unter dem Ansturm der Java-Fremden, die den Anhängern der Sprache zahlenmäßig deutlich überlegen waren, gingen Java-Themen dann ein wenig unter. So ist es nicht verwunderlich, dass die Java-Keynote als eine unter vielen stattfand.

Oracle entwickelt Java weiter. 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. Die Sprache soll für neue Applikationsmodelle und neue Hardware optimiert und damit die Produktivität angekurbelt werden.

Namentlich wurde das Project Coin erwähnt, das für kleine Veränderung in der Programmiersprache verantwortlich zeichnet. Dazu gehören beispielsweise die verbesserte Typ-Inferenz, die einem mit dem Diamand-Operator die lästige Wiederholung generischer Typ-Parameter erspart, dann ein spezieller try-Block, der für die korrekte Freigabe von Ressourcen sorgt, zusätzlich die Erweiterung des switch-Statements um String-Fälle, des Weiteren die Überarbeitung der Collections, damit die effizienter und besser parallel 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 sich nach Belieben zusammenstellen und ausliefern lässt. Damit verschwände dann der Klassenpfad und ein Repository würde diese Fehlerquelle ersetzen, das unterschiedliche Versionen von JAR-Dateien beziehungsweise Modulen beherbergen kann.

Die Nebenläufigkeit auf Prozessoren mit vielen Kernen wollen die Entwickler besser unterstützen. Dabei kann man sich unter "vielen" durchaus eine dreistellige Zahl vorstellen, wie sie schon bei modernen Grafikkarten zu finden ist. Abhilfe soll das fork/join-Framework schaffen, damit man auch eine variable Anzahl von Kernen effizient nutzen kann.

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

Zudem soll Java mit schnellen Netzwerken zurecht kommen, die mindestens 10 GByte/s verkraften können. Allgemein müssen deshalb die Zugriffe auf externe Ressourcen schneller werden, und so sind neben verbesserten Netzwerkfähigkeiten (etwa 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) zu unterstützen. Ziel ist es darüber hinaus, die Dateisystem-Unterstützung nicht nur durch eine neue API zu verbessern, sondern auch den Einsatz von asynchronem I/O zu unterstützen.

Das letzte Jahr hat viele Veränderungen im Zusammenhang mit anderen Sprachen gebracht, die auf der Java Virtual Machine (JVM) laufen. So können 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.

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

Falls es Sorgen um die integrierte Entwicklungsumgebung NetBeans oder den Anwendungsserver GlassFish gab, so sind diese 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 werden und über leichtgewichtige Web-Profile besser auf die Bedürfnisse der zu verwaltenden Services anzupassen sein.

De Programmierung mit Plain Old Java Objects (POJOs) und Enterprise JavaBeans (EJB) soll produktiver und effektiver werden. Darunter fallen die Freigabe als Webservices, die Beschleunigung der Ausführung und die Interoperabilität (beispielsweise mit .NET) durch Anwendung des WS-I Basic Profile 2.0. Schließlich soll ein hybrides Programmiermodell die Zusammenarbeit von Java EE und OSGi verbessern.

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

Dazu benötigen die Entwickler eine hochperformante Graphics Engine, 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 der Funktionen konnte man schon unter JavaFX bewundern. Umso erfreulicher ist es, dass nebenbei angemerkt wurde, dass wohl die JavaFX-Controls für die Allgemeinheit als Open Source freigegeben werden sollen.

Schließlich träumt Oracle davon, Java für mobile Endgeräte zu modernisieren. Neue Geräteschnittstellen sollen die Hardware- und Betriebssystemfunktionen 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 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. Neben der Möglichkeit, Applets auf diesen installieren zu können, will man die SIM-Karten aufpeppen. Auf die Weise ließe sich beispielsweise das Handy für (kontaktlose) Micro-Payments nutzen.