Java 8’de Neler Değişti? Lambda, Stream ve Concurrency Yenilikleri
Bu yazıda Java 8 yenilikleri nelerdir, lambda expressions, Stream API, Optional ve daha birçok modern Java özelliğini örneklerle detaylı şekilde öğreneceksiniz.
1. Functional Interfaces (Fonksiyonel Arayüzler)
Java 8 ile birlikte gelen functional interface, sadece tek bir abstract metoda sahip olan arayüzlerdir. Lambda ifadeleri ile birlikte kullanılır.
@FunctionalInterface
interface Konusabilir {
void konus(String mesaj);
}
2. Lambda Expressions (Lambda İfadeleri)
Lambda ifadeleri, Java’da anonim fonksiyonlar yazmamızı sağlar ve kodu daha sade hale getirir.
List<String> list = Arrays.asList("elma", "armut", "muz");
list.forEach(meyve -> System.out.println(meyve));
3. Method References (Metod Referansları)
Lambda ifadelerini daha kısa yazmak için metod referansları kullanılır.
list.forEach(System.out::println);
4. Stream API
Stream API, koleksiyonlar üzerinde fonksiyonel işlemler yapmayı sağlar.
List<String> liste = Arrays.asList("Java", "Python", "C++");
liste.stream()
.filter(s -> s.startsWith("J"))
.forEach(System.out::println);
- filter()
- map()
- forEach()
- count()
5. Try-With-Resources
Kaynakları otomatik kapatmayı sağlayan yapıdır.
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
System.out.println(br.readLine());
}
6. Optional Class
Optional, null kontrolünü güvenli hale getirir.
Optional<String> isim = Optional.ofNullable(null);
System.out.println(isim.orElse("Varsayılan"));
7. Date Time API
Java 8 ile gelen java.time paketi, tarih ve saat işlemlerini kolaylaştırır.
LocalDate tarih = LocalDate.now();
System.out.println(tarih);
- LocalDate
- LocalTime
- LocalDateTime
- ZonedDateTime
8. Concurrency Geliştirmeleri
Java 8, paralel programlama için geliştirmeler sunar.
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.forEach((k, v) -> System.out.println(k + " : " + v));
Sık Sorulan Sorular
Lambda neden önemli?
Daha az kod ve daha okunabilir yapı sağlar.
Stream API ne işe yarar?
Koleksiyonlar üzerinde filtreleme ve veri işleme yapmayı kolaylaştırır.
Optional zorunlu mu?
Zorunlu değildir ama null hatalarını azaltmak için önerilir.