Java 8 Überblick: Lambdas, Streams, Date-Time API & funktionale Programmierung
Java 8 – Meilenstein-Release (März 2014)
Java 8 ist das bedeutendste Release seit Java 5. Es bringt funktionale Programmierung auf die JVM, moderne APIs für Datum/Zeit, Streams für deklarative Datenverarbeitung und einen neuen JavaScript-Engine.
Kernfeatures
| Feature | Beschreibung |
|---|---|
| Lambda Expressions | (a, b) -> a + b – Funktionale Schnittstellen inline implementieren. |
| Method References | System.out::println – Methoden als Werte weiterreichen. |
| Default Methods | Interfaces mit Implementierung (default void foo()) – Evolution ohne Breaking Changes. |
| Stream API | Deklarative Datenverarbeitung (filter, map, reduce, collect), parallelisierbar. |
| Date/Time API (JSR 310) | java.time.* – Immutable, thread-safe, domain-driven (LocalDate, ZonedDateTime, …). |
| Optional<T> | Explizite Abwesenheit eines Werts – vermeidet NullPointerException. |
| Nashorn JS Engine | Java-basierte JavaScript-Engine (ersetzt Rhino), ECMAScript 5.1 kompatibel. |
| Neue Tools | jdeps (Dependency-Analyse), jjs (Nashorn Shell), javac Parameter-Namen (-parameters). |
Beispiel: Sortieren – Java 7 vs. Java 8
import java.util.*;
import java.util.Comparator;
public class Java8Demo {
public static void main(String[] args) {
List<String> names = Arrays.asList("Mahesh", "Suresh", "Ramesh", "Naresh", "Kalpesh");
// Java 7: Anonymous Comparator
Collections.sort(names, new Comparator<String>() {
public int compare(String s1, String s2) { return s1.compareTo(s2); }
});
System.out.println("Java 7: " + names);
// Java 8: Lambda
Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
System.out.println("Java 8: " + names);
// Beide: [Kalpesh, Mahesh, Naresh, Ramesh, Suresh]
}
}
Warum Java 8 wichtig bleibt
- LTS (Long Term Support): Java 8 wird noch Jahre unterstützt (Oracle bis 2030, Community-Builds länger).
- Baseline: Viele Enterprise-Anwendungen laufen auf Java 8; Migration zu 11/17/21 läuft schrittweise.
- Sprach-Fundament: Lambdas, Streams, Optional, Date-Time sind Basis für alle späteren Java-Versionen.
Migrationstipp
Bei Upgrade auf Java 11+:
- Module-System beachten (
module-info.java,--add-opensfür Reflection). - Entfernte Module (
java.xml.bind,java.activationetc.) als Maven/Gradle Dependencies nachziehen. jdepsnutzen, um interne API-Nutzung (sun.*,com.sun.*) zu finden.
Java
- C# Strings meistern: Grundlagen, Operationen & fortgeschrittene Techniken
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- String-Repräsentationen in Java Enums meistern
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java String length() Methode: String-Länge ermitteln (Beispiel)
- Java String.indexOf() meistern: Substrings finden & praktische Beispiele
- Java String.charAt(): Syntax, Rückgabetyp, Exceptions und praktisches Beispiel