Java 15 Yeni Özellikler

Java 15 Eylül 15 itibari ile yayınlandı. Genel itibari ile çok fazla teknik bir değişiklik olmasa da crypto ile uğraşan kişilerin ilgileneceği EdDSA tarafında bir gelişme bulunmakta.Eğer performansa tarafına ilgi duyuyorsanız yine ZGC ilginizi çekecek diğer bir yenilik. Eğer framework tarafında bir geliştirme yapmak istiyorsanız da gizli sınıflar ilginizi çekebilir. En önemli değişikliklerin üzerinden gidecek olursak;

  • Mühürlü Sınıflar – Sealed Classes
  • Desen eşleşmesi örneği – Pattern Matching Instanceof
  • Metin Kalıpları – Text blocks
  • Kayıtlar – Records.

Kısaca üzerinden geçecek olursak;

Mühürlü Sınıflar

Kariyerinizin bir noktasında sınıfların nereye kadar genişletilebileceğini kontrol etme ihtiyacı duymuş olabilirsiniz. Başka dillerde “sealed” olarak sınıfların izin olmadan genişletilmesini ( extends ) engelleyen modifier’lar mevcuttur. Java’da ise şimdiye kadar extends için bir kontrol bulunmuyordu. Bu konsepte alışık olmayan kişiler için genişlemeyi bir kaç belirli durum haricinde engellemek amaçlanmaktadır. Örneği şu şekilde verilebilir.

abstract sealed class Bicim {
     abstract public ciz();
 }
 final class Kare extends Bicim {
     public ciz() {
     }
 }
 final class Cember extends Bicim {
     public ciz() {
     }
 }

Bu örnekte Bicim bir abstract sınıf ( olmayabilirdi de) ve sadece iki tane bicime sahip bunlar Kare ve Cember. Burada tüm sınıflar aynı dosya içinde tanımlanmış olsa da farklı dosyalar da da olabilirlerdi. Interfaceler’de aslında mühürlenebilir. Şu şekilde;

public abstract sealed class Bicim
    permits ayri.bir.sinif.Kare,
            ayri.bir.sinif.farkli.paket.Cember {
        …
    }
}

Desen eşleşmesi örneği – Pattern matching instanceof

Zaten yıllardır instanceof ile değişkenin tipini kontrol edebiliyorduk. Aynı şekilde yıllardır da bundan sonra değişkeni kullanabilmek için cast işlemi yapıyorduk.

if( test instanceof Interface1){
((interface1)test).someMethod();
}

Bunun yerine JDK 15’de şu şekilde bir yazım geliyor.

if( test instanceof Interface1 f){
     f.someMethod();
 }else{
     f.someOtherMethod(); // compiler hatası.
 }

Metin Kalıpları – Text blocks

Metin bloklarını http://www.sahinyanlik.com.tr/2020/java-14-yeni-ozellikler/ de görebilirsiniz. Aslında JDK 14’de bu özellik ön izleme olarak çıkmıştı. Artık kullanılabileceği belirtilmekte.

Kayıtlar – Records

Records da bu versiyon ile ikinci ön izlemeye alınmıştır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir