Oracle

Java 8 mit Lambda-Ausdrücken ist fertig

19.03.2014 von Thomas Cloer
Mit erneut deutlicher Verspätung hat Oracle die neue Java-Version 8 freigegeben.

Das entsprechende JDK (Java Development Kit) 8 von Oracle und die korrespondierende freie Implementierung OpenJDK 8 basieren auf der Java Standard Edition 8, die der Java Community Process (JCP) festgelegt hat.

Die mit Abstand wichtigste Neuerung in Java 8 sind die sogenannten Lambda-Funktionen. Damit lassen sich anonyme Klassen mit einer Methode kompakter schreiben. Das soll nicht nur lesbareren Code, sondern auch besser parallelisierbare Algorithmen ermöglichen. Lambda-Ausdrücke sind unter Einfluss funktionalerer Sprachen wie Scala entstanden; die Syntax erinnert dabei stark an die von C#.

Lambda-Ausdrücke können kann direkt auf Variablen zugreifen, die in derselben Codeebene zugänglich sind, in der sie definiert werden ("Variable Capture"); Dazu müssen lokale Variablen allerdings final deklariert sein oder sich zumindest so verhalten. Zwecks Abwärtskompatibilität lassen sich bei der Definition von Schnittstellen einzelne Methoden mit dem Schlüsselwort "default" deklarieren und mit Code versehen; der Programmierer kann dann wahlweise die Default-Implementierung übernehmen oder mit eigenem, gegebenenfalls effizienterem Code überschreiben.

Ganz neue Möglichkeiten eröffnen Lambda-Ausdrücke beim Umgang mit Aufzählungen. Die im Paket java.util.stream versteckte Schnittstelle Stream<T> erweitert die grundlegenden Aufzählungsklassen um ein vollkommen neues Konzept - die Elemente werden dabei nicht gespeichert, sondern von einer Methode an die nächste weitergereicht (vergleichbar mit den Pipes von Unix/Linux) und erst bei Bedarf tatsächlich verarbeitet ("Lazy Operation"). Wichtige Methoden sind filter, map, reduce, fold, limit sowie skip.

Java-Security -
Ist Java bereits auf meinem PC installiert?
Anbieter Oracle stellt die Möglichkeit zur Verfügung, dies direkt über die Web-Seite feststellen zu lassen.
Träge Nutzerschaft
Die Nutzer lassen sich Zeit mit dem Update: Nutzeranteil von neueren Java-Versionen (gepatcht), verglichen mit älteren und angreifbaren (betroffenen) Versionen im Wochenrhythmus.
Freigabe erforderlich
Die Sicherheitsmechanismen des Browsers (hier Google Chrome) greifen: Bevor Java – auch nur zur Überprüfung – freigegeben wird, muss dies vom Nutzer genehmigt werden.
Vorsicht, umfassende Rechte
Java läuft eben nicht nur im Browser ab: In diesen Fällen kommt eine Anwendung auf dem eigenen PC zum Einsatz, die teilweise mit einem uneingeschränkten Zugriff arbeitet.
Support für Windows 8
Alle Überprüfungen können natürlich auch unter Windows 8 ausgeführt werden: Hier bietet Microsoft zusätzliche Unterstützung durch eine eigene Infoseite an.
Ob's hilft?
Die Installation der Java-Software unter Windows 8: Oracle sieht natürlich eher die Vorteile in dieser Software und kehrt diese bei der Installation heraus.
Mehr Müll
Eine sehr schlechte Angewohnheit, die Java mit Adobes Flash teilt: Bei der Installation versucht die Software durch bereits angewählte Menüpunkte, dem Anwender zusätzliche "Crapware" auf das System zu bringen beziehungsweise Einstellungen wie dir für die Suchmaschine zu "verbiegen".
Java zwingend erforderlich
Anwendungen, die nur laufen, wenn Java installiert ist: Die Freeware JDownloader deutet schon in ihrem Namen an, dass sie nur bei Vorhandensein der Java Runtime zum Einsatz kommen kann.
Java zwingend erforderlich II
Auch das Anonymisierungs-Tool JAP (JonDo) ist darauf angewiesen, dass auf dem PC, auf dem es zum Einsatz kommt, die Java Runtime installiert ist. Ansonsten kann sie von der Software mit installiert werden.
Control Panel
Die Sicherheitseinstellungen auf einem Windows-8-System: Von vielen Nutzern unbemerkt, installiert Java auch einen Eintrag in der Systemsteuerung, von dem aus das sogenannte Control Panel aufgerufen werden kann.
Simple Deinstallation
Das Java Control Panel steht natürlich auch bei den Windows-7-Systemen zur Verfügung: Mit seiner Hilfe ist auch eine Deinstallation der Software leicht vorzunehmen.
Frequenz der Updates einstellen
Mit Hilfe des Control Panels können Nutzer sowohl die Frequenz als auch die Art und Weise festlegen, in der entsprechende Updates von Java heruntergeladen und installiert werden.
Plug-In deaktivieren
Deaktivierung des Java-Plug-Ins direkt im Betriebssystem: Auch das funktioniert über das Control Panel in der Systemsteuerung im das Kästchen für den Browser abgewählt wird. Der Browser muss danach neu gestartet werden.
The Java vanishes
So verschwindet Java wieder vom System: Die Software kann, wie jede andere Software unter Windows, direkt unter dem Eintrag Programme (beziehungsweise „Programme und Funktionen“ unter Windows 7) wieder deinstalliert werden.
Plug-In-Management
Die Einstellungen der Plug-Ins im Firefox-Browser: Hier können die Anwender festlegen, ob Java-Applets von ihrem Browser ausgeführt werden sollen – und sie können dieses Plug-In an dieser Stelle auch wieder entfernen.
Alles noch fit?
Sollte regelmäßig vorgenommen werden: Mozillas Firefox erlaubt die Überprüfung der Plug-Ins darauf, ob sie noch dem aktuellen Stand entsprechen.
Meister bei den Exploits:
Java auch im Jahr 2013 "führend", wie diese Übersicht über die von SourceFire gefundenen Indicators of compromise zeigt. (Quelle: SourceFire/FireAMP soluntion, Cisco)

Mit dem Projekt Threeten versucht die Java-Community einmal mehr, die bislang unzureichenden und unübersichtlichen Datums- und Zeitklassen zu vereinfachen. Auf Basis von Joda-Time ist dabei allerdings eine weitere Bibliothek entstanden, die inkompatibel zu allen bisherigen Varianten und mit über 60 Klassen und Schnittstellen in mehreren Paketen alles andere als übersichtlich ist. Java 8 unterscheidet außerdem künftig zwischen einer "Machine Time Line" für Berechnungen und einer "Human Time Line" für Uhrzeiten und Datum in lesbarer Form.

Weitere Neuerungen in Java 8 sind Annotationen von Metainformationen für alle Java-Typen. Eine Annotation lässt sich nun mehrfach auf ein Element anwenden; in der Liste der vordefinierten Annotationen gibt es neu @FunctionalInterface zur Kennzeichnung funktionaler Schnittstellen. Die Server-seitig gelegentlich eingesetzte JavaScript-Engine Rhino wurde durch die neue Implementierung Nashorn ersetzt, die JavaScript deutlich schneller ausführen und gleichzeitig weniger Ressourcen fressen soll.

Auf eine echte Modularisierung von Java müssen Entwickler aber weiter bis mindestens zur Version 9 warten (wann und mit welchen Features diese erscheinen wird, steht heute noch in den Sternen). Das eigentlich schon für Java 7 (2011) geplante Projekt Jigsaw soll es ermöglichen, Java-Programme mit einer minimalen Runtime-Umgebung mit nur den tatsächlich genutzten Klassen auszuliefern. Als Zwischen-Notlösung kommt Java 8 mit vordefinierten Profilen ("Compact1" bis "Compact3") mit unterschiedliche Subsets des JDK 8 für den Einsatz auf Geräten mit begrenzter Hardware. Das Framework JavaFX ist mit dem JDK 8 auch Teil des OpenJDK. Es kommt mit überarbeiteter Dokumentation, neuem Theme, neuen Controls, Änderungen in der API und weiteren Neuerungen.

Am 25. März will Oracle die Neuerungen in Java 8 in einem Webcast ausführlicher vorstellen und diskutieren.