En sonunda Oracle, JDK 9 ile vedalaşabildi ve Eylül ayında irili ufaklı bir çok yeniliği içeren sürümü resmi olarak yayımladı. 8 versiyonu ile, güncel programlama yaklaşımlarına cevap vermeye başlayan java, 9 versiyonu ile bunun tesadüf olmadığını gösterdi.

Java 9’u incelememize öncelikle ne gibi değişiklikler olduğunu sıralayarak başlayacağız. Nasip oldukça da her bir başlığı farklı makaleler ile incelemeye çalışacağım.

  1. Moduler Sistem : 9 versiyonu ile gelen en önemli değişiklik moduler yapının eklenmesi olsa gerek. Önce java 7’e sonra java 8’e yetiştirmeye çalıştıkları değişiklik bu versiyon ile gelebildi. Peki neden böyle büyük bir değişikliğie gidildi.
    • Daha Güvenli Konfigürasyon: Program yazarken kimin neye bağımlı olduğunu açıkça belirtmek.
    • Daha Güçlü Enkapsülasyon: Sınıf içerisindeki enkapsülasyonu, sınıflarıda kapsayacak şekilde genişletmek. Böylece API içerisinden sadece istenilen sınıfların dışarı açılması.
    • Java’nın Ölçeklenebilir Olması: Özelleştirilmiş konfigürasyonlar ile istenilen modulleri içeren paketler çıkmak.
    • Performans
  2. Process API : İşletim sistemi processlerinin yönetilmesine ve kontrol edilmesine yönelik iyileştirmeler.
  3. Varibale Handles : Nesne alanları ve dizi öğeleri üzerinde java.util.concurrent.atomic ve sun.misc.Unsafe metotlarına karşılık gelen bir yenilik.
  4. Compact String: String ifadelerin hafızada daha az yer kaplamasını hedefleyen yenilik.
  5. Concurrreny: Flow API ile Reactive programlamanın temeli olan Publish-Subscribe yapısına yönelik yenilik.
  6. Koleksiyonlar için Factory Method: Koleksiyon örneği oluştururken, koleksiyonun başlangıç elemanlarının verilmesini sağlayan bir yenilik. (List<Integer> numbers = List.of(1,2,3,4);)
  7. Stack-Walking API: Program’ın stack izini inceleyebilmeye yönelik bir yenilik.
  8. jshell: REPL in java’ya eklenmesi. Komut satırından java kodu yazmamızı sağlayan yenilik.
  9. jlink: Bir çalışma zamanı imajı oluşturmak için modül setlerini birbirine bağlayan bir komut satırı aracıdır.
  10. AOT Compiler: JIT öncesi byte kodun native koda çevrilmesine dair yenilik.
  11. Milling Project Join : Bir kaç küçük değişikliği içerir.
  12. G1 Garbage Collector: Default olarak kullanılır hale gelmesi

Yenilikler sadece bunlar ile sınırlı değil elbette. Bu liste benim daha detaylı inceleyebileceğimi düşündüğüm en az sayıdaki konu başlıklarını kapsamakta. Vakit olursa diğerlerini de ekleyeceğim.

Tüm değişiklikleri göz önüne aldığımda;
Compile ve deploy işlemlerinde daha süratli, performansı yüksek memory tüketimi düşük, dağıtık ve eş zamanlı programlamaya daha uygun bir javanın hedeflendiğini düşünüyorum. Flow API ile reactive programlama açısından bir spesifikasyon oluşturuldu. Bunun peşinden de yakın zamanda RxJava benzeri bir implementasyonun da çıkabileceğini düşünüyorum. Java, versiyon 8 ve 9 ile güzel ve sert bir geri dönüş yaptı.

Java ölüyor mu bilmem ama beni gömecek gibi geliyor 🙂 İnşallah yazılarımıza devam edebiliriz.

Gayret bizden, tevfik Allah’tan.

 

CEVAP VER

Please enter your comment!
Please enter your name here