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

Java 10: 70+ neue APIs – Unmodifiable Collections, Optional.orElseThrow() & mehr

Wichtigste API-Erweiterungen in Java 10

1. Optional.orElseThrow()

Neue Methode in java.util.Optional, OptionalInt, OptionalLong, OptionalDouble. Bevorzugte Alternative zu get(), da sie explizit ein NoSuchElementException wirft (statt undokumentiertem Verhalten).

String value = optional.orElseThrow(); // wirft NoSuchElementException wenn leer
String value = optional.orElseThrow(() -> new MyException("Fehlend"));

2. Unmodifiable Collections Factory & Collectors

Interfaces: List.copyOf(coll), Set.copyOf(coll), Map.copyOf(map) – erstellen flache, unveränderliche Kopien.

Collectors (java.util.stream.Collectors):

Jeder Modifikationsversuch wirft UnsupportedOperationException.

3. JRE Last Usage Tracking deaktivieren

Neuer Flag: -XX:+DisableLastUsageTracking (bzw. jdk.disableLastUsageTracking) deaktiviert die Aufzeichnung der letzten JRE-Nutzung für die laufende VM.

4. Gehashte Passwörter in JMX

Passwörter in jmxremote.password werden nun beim Start vom JMX-Agent mit SHA3-512 gehasht (nicht mehr im Klartext).

5. Javadoc-Verbesserungen

  • --add-stylesheet: Mehrere Stylesheets für generierte Docs.
  • --overridden-methods=value: Gruppiert überschriebene Methoden mit geerbten, statt sie separat zu dokumentieren.
  • Inline-Tag {@summary ...}: Explizite Zusammenfassung für API-Beschreibungen (statt erster Satz).

Code-Beispiel: Unmodifiable Collections

import java.util.List;
import java.util.stream.Collectors;

public class ApiDemo {
    public static void main(String[] args) {
        var ids = List.of(1, 2, 3, 4, 5);

        // copyOf – unmodifiable Kopie
        try {
            List<Integer> copy = List.copyOf(ids);
            copy.add(6); // UnsupportedOperationException
        } catch (UnsupportedOperationException e) {
            System.out.println("Collection ist nicht modifizierbar.");
        }

        // Collector toUnmodifiableList
        try {
            List<Integer> evens = ids.stream()
                .filter(i -> i % 2 == 0)
                .collect(Collectors.toUnmodifiableList());
            evens.add(6); // UnsupportedOperationException
        } catch (UnsupportedOperationException e) {
            System.out.println("Collection ist nicht modifizierbar.");
        }
    }
}

Ausgabe:

Collection ist nicht modifizierbar.
Collection ist nicht modifizierbar.

Weitere erwähnenswerte Änderungen

  • Reader.transferTo(Writer), InputStream.transferTo(OutputStream) – effizientes Kopieren ohne Puffer-Management.
  • CompletableFuture neue Factory-Methoden (siehe separater Artikel zu Java 9/10 CompletableFuture-Verbesserungen).
  • Performance-Verbesserungen bei String, Collection, Class-Ladung.

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-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Autoboxing und Unboxing meistern: Praktische Beispiele und Best Practices