Java 8’de Neler Değişti? Lambda, Stream ve Concurrency Yenilikleri

Herkese Merhabalar,

Bugünkü yazımızda Java 8 Yenilikleri hakkında detaylı bilgiler vereceğim. Java 8, Mart 2014'te (LTS) sürümü olarak yayınlanmıştır ve beraberinde birçok önemli özellik getirmiştir. İşte Java 8 ile Gelen Yenilikler:

 

1. Functional Interfaces (Fonksiyonel Arayüzler)

Java 8, lambda ifadelerini desteklemek için fonksiyonel arayüzler kavramını tanıttı. Bu arayüzler, sadece bir tane abstract (soyut) metoda sahip olabilir ve default ve static metodlar içerebilir.

Fonksiyonel Arayüz Örneği:

@FunctionalInterface
interface Konusabilir {
   void konus(String mesaj);
}

public class FunctionalInterfaceExample implements Konusabilir {
   public void konus(String msg) {
       System.out.println(msg);
   }

   public static void main(String[] args) {
       FunctionalInterfaceExample fie = new FunctionalInterfaceExample();
       fie.konus("Merhaba Functional Interface");
   }
}

 

2. Lambda Expression (Lambda İfadeleri)

Lambda ifadeleri, Java 8'deki en dikkat çekici yeniliklerden biridir. Anonim fonksiyonlar oluşturmamıza ve daha sade bir kod yazmamıza olanak sağlar.

Lambda İfadeleri Yazım Kuralı:

Parametresiz: ( ) -> { }

Bir parametreli: (p1) -> { }

Birden fazla parametreli: (p1, p2) -> { }

Kullanım Örneği:

List<String> list = Arrays.asList("elma", "armut", "muz");

list.forEach(meyve -> System.out.println(meyve));

 

3. Method References (Metod Referansları)

Java 8, lambda ifadelerini daha da basitleştiren metod referanslarını tanıttı. Bir metod referansı, mevcut bir metodun adını kullanarak lambda ifadelerini sadeleştirir.

Metod Referans Türleri:

Static metod referansı:

boolean dogruMu = list.stream().anyMatch(Kullanici::dogruMu);

Instance metod referansı:

Kullanici k = new Kullanici(); boolean dogruMu = list.stream().anyMatch(k::dogruMu);

Constructor referansı:

Stream<Kullanici> s = list.stream().map(Kullanici::new);

 

4. Stream API

Java 8, java.util.stream paketini tanıtarak koleksiyonlar üzerinde işlevsel programlama tarzında işlem yapmayı kolaylaştırdı.

Öne çıkan Stream API metodları:

filter()

map()

forEach()

count()

min()/max()

Kullanım Örneği:

List<String> liste = Arrays.asList("Java", "Python", "C++"); liste.stream().filter(s -> s.startsWith("J")).forEach(System.out::println);

 

5. Try With Resources

Java 8'de try-with-resources özelliği geliştirildi. Kaynakları manuel kapatmaya gerek kalmadan, kaynaklar AutoCloseable arayüzünü uygular ve blok sonunda otomatik olarak kapanır.

Kullanım Örneği:

try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) 

{    System.out.println(br.readLine());

} catch (IOException e) {  

  e.printStackTrace(); }

 

6. Optional Class

NullPointerException hatalarını önlemek için Java 8, Optional sınıfını getirdi. java.util.Optional kullanarak null kontrollerini daha güvenli yapabilirsiniz.

Kullanım Örneği:

Optional<String> isim = Optional.ofNullable(null);

system.out.println(isim.orElse("Varsayılan İsim"));

 

7. Date Time API

Java 8, java.time paketiyle yeni tarih ve saat sınıfları sundu. Eski Date ve Calendar sınıflarının yerini alan bu API, tarih ve zaman işlemlerini daha sezgisel hale getirdi.

Yeni Tarih ve Saat Sınıfları:

LocalDate

LocalTime

LocalDateTime

ZonedDateTime

DateTimeFormatter

Kullanım Örneği:

LocalDate tarih = LocalDate.now(); System.out.println("Bugünün tarihi: " + tarih);

 

8. Concurrency Improvement (Eşzamanlılık Geliştirmeleri)

Java 8, eşzamanlı işlemleri daha verimli hale getiren yeni API'lar getirdi. ConcurrentHashMap ve ForkJoinPool gibi araçlar, paralel programlamayı kolaylaştırır.

Kullanım Örneği:

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();

map.put("Bir", 1); map.put("İki", 2);

map.forEach((k, v) -> System.out.println(k + " : " + v));

 

Sonuç

Bugünkü yazımızda Java 8 ile Gelen Yenilikler konusunu inceledik. Functional Interfaces, Lambda Expressions, Stream API gibi kavramlar sayesinde Java'nın modern programlama dünyasına nasıl uyum sağladığını gördük.

Bir sonraki yazımızda daha detaylı konulara değineceğiz. Bizi takip etmeyi unutmayın!

Daha fazla içerik için: latestsoftwaredevelopers.com

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *