Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java 9 (JDK 9): Wichtigste Features & Vorteile – Modularität, JShell, HTTP/2 & mehr

Hauptziele von Java 9

Erschienen: 21. September 2017. Über 90 Erweiterungen gegenüber Java 8.

Die bedeutendsten neuen Features

Feature Beschreibung
Module System (Jigsaw) Neuer Programmkomponente „Module“: benannt, selbstbeschreibend, kapselt Code & Daten. Basis für modulare JDK & Anwendungen.
REPL – JShell Read-Eval-Print-Loop für Java: Interaktives Ausprobieren von Code ohne Kompilierung.
HTTP/2 Client Neue java.net.http.HttpClient API: HTTP/2, WebSockets, Server Push, Reactive Streams.
HTML5 Javadoc Javadoc generiert HTML5 Output, integrierte Suchfunktion in API-Docs.
Multi-Release JAR JARs können klassenversionsspezifische Implementierungen enthalten (META-INF/versions/9/).
Collection Factory Methods List.of(), Set.of(), Map.of(), Map.ofEntries() – immutable Collections kompakt erzeugen.
Private Interface Methods Interfaces dürfen private & private static Methoden haben (Code-Wiederverwendung in Default-Methoden).
Process API Improvements ProcessHandle: Native PID, Startzeit, CPU-Zeit, Argumente, User, Parent/Children, onExit() CompletableFuture.
Stream API Enhancements takeWhile, dropWhile, iterate(seed, hasNext, next), ofNullable.
Try-with-Resources Verbesserung Effectively-final Variablen direkt in try(...) nutzbar (keine neue Variable nötig).
@Deprecated Enhancements forRemoval & since Attribute für präzisere Deprecation-Infos.
Diamond Operator für Anonyme Klassen new Handler<>(1) { ... } – Typinferenz auch bei anonymen inneren Klassen.
Optional Verbesserungen stream(), ifPresentOrElse(), or(Supplier).
Multi-Resolution Image API MultiResolutionImage, BaseMultiResolutionImage – mehrere Auflösungen als ein logisches Image.
CompletableFuture API Delays/Timeouts (completeOnTimeout, orTimeout), Subclassing-Support, neue Factory-Methoden.
Lightweight JSON API javax.json (JSR 374) – Parsen/Generieren ohne schwere Abhängigkeiten.
Reactive Streams API java.util.concurrent.Flow (Publisher, Subscriber, Processor, Subscription) – Standard für Reactive Programming.

Modul-System im Detail

Ein Modul wird durch module-info.java definiert:

module com.beispiel.meinmodul {
    requires java.sql;
    exports com.beispiel.meinmodul.api;
    uses com.beispiel.spi.Service;
    provides com.beispiel.spi.Service with com.beispiel.impl.ServiceImpl;
}

jlink – Custom Runtime Images

Neues Tool jlink erstellt minimale, anwendungsspezifische JREs:

jlink --module-path $JAVA_HOME/jmods:out/modules \
      --add-modules com.beispiel.meinmodul \
      --output mein-jre

Resultat: mein-jre/ enthält nur benötigte Module – ideal für Container & Deployment.

Fazit

Java 9 ist ein Meilenstein-Release, das die Plattform für die nächsten Jahre grundlegend modernisiert. Das Modulsystem ist die größte Änderung seit Generics (Java 5).

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java Programmiersprache: Evolution, Versionen und Anwendungen
  6. C-Programmiersprache: Umfassender Überblick
  7. Java 10: Neue Features, Release-Modell & OpenJDK-Fokus im Überblick
  8. Java 9 Process API Verbesserungen: ProcessHandle, Info & asynchrone Events
  9. Java 9 Stream API Erweiterungen: takeWhile, dropWhile, iterate & ofNullable
  10. Java 9 Multi-Resolution Image API: Responsive Grafiken mit mehreren Auflösungen