JAVA 8 İle Gelen Yenilikler

Merhaba arkadaşlar, bu yazımda Java 8 ile gelen yenilikleri anlatacağım. Konuları örnekler üzerinden anlatacağım.  Aşağıdaki ana başlıklar içerisinde inceleyebiliriz;

  • Lambda Expressions
  • Default Ve Static Metotlar
  • Java Stream API
  • Java Time API
  • Functional Interfaces
  • Optional Class

Lambda Expressions

Lambda expression, java object oriented dünyasında fonksiyonel programlamayı (functional programming) görselleştirmemizin(visualize) yoludur. Java programlama dilinin temeli nesnelerdir ve object olmadan asla bir fonksiyona sahip olamayız, bu yüzden java dili lambda ifadelerinin sadece fonksiyonel arayüzlerle(functional interfaces)kullanılmasına destek sağlar. Lambda expression, kod sayısını azaltır ve kod okunabilirliğini sağlar.

Syntax: (argument) -> (body)

Örnek kullanım; (x,y) -> x+y

Çıktı:

Default Ve Static Metotlar

Java8 den önce interfaceler de sadece gövdesiz metotlar tanımlanabiliyordu. Ancak Java8 ile bu durum değişti ve default metotlar çıktı. Default metot ile interface içerisinde metodun gövdesi yazılabiliyor. Default metotlar override edilebilirler.

Static metotlar ise, gövdeleri interface içerisinde tanımlanır ancak override edilemezler. Aşağıdaki örnek incelenebilir:

Çıktı:

Stream API

Stream API, java da veri yığınlarında işlem yapmayı kolaylaştırmayı sağlamaktadır. Veri yığınları olarak Collections,diziler vb. söylenebilir. Yani Stream API, dizilerde ve listelerde işlem yapmayı kolaylaştırmaktadır.

Örnek olarak aşağıdaki kod parçalarına ve çıktılara bakalım:

Çıktı:

Java Time API

Java da var olan tarih işlemlerinin üzerine gelen yenilikleri barındırır. Gelen yenilikler iki tane sınıf özelinde geliştirilmiştir. Bu sınıflar;

  • util.Date
  • util.Calendar

Bu sınıfların dezavantajlarını karşılamak için geliştirilmiş bir API’dir. Bu yeni gelen API java.time paketi içerisinde bulunur. Bu paket içerisinde bulunan sınıflardan bazıları;

  • LocalDate
  • LocalTime
  • LocalDateTime
  • ZonedDate
  • DateTımeFormatter

Çıktı:

Functional Interfaces

İçerisine yalnızca bir adet abstract metod bulunan interfacelerdir. Eğer interface içerisinde tek bir adet metod bulunuyor ve bu metod da abstract metod ise Functional Interfaces olmuş olur. Bu yenilik Lambda Expressionların kullanılabilmesi için tanımlanır. Functional Interfaces, tanımlanırken @FunctionalInterface notasyonu kullanılır. Ancak bu notasyon zorunlu değildir validasyon yapmak amacıyla kullanılır. Eğer notasyon eklenir ancak birden fazla abstract metot tanımlanırsa compile error verecektir.

 

Çıktı:

Optional Class

Geliştiricinin karşılaşmış olduğu NullPointerException hatalarını önleyebilmek için çıkarılmıştır. Java.util.Optional sınıfı toplamda 15 adet metot bulundurmaktadır. Ufak bir örnek ile konuyu pekiştirelim:

Çıktı:

Bu yazımı burada bitiriyorum. Diğer yazılarda görüşmek üzere..

Print Friendly, PDF & Email

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.