Oracle, geliştiricilerin verimliliğini daha da arttıracak 17 yeni geliştirmenin platforma eklendiği Java 16 (Oracle JDK 16)’nın kullanıma sunulduğunu duyurdu. Bu en yeni Java Geliştirme Kiti’nde (JDK) ilk olarak Java 14 sürümünde ön izlemesine yer verilen Desen Eşleştirme (JEP 394) ve Kayıtlar (JEP 395) gibi Java dili geliştirmeleri de nihai hale getirilmiş durumda. Ayrıca geliştiriciler kendinden içerikli Java uygulamalarını iletmek amacıyla yeni Paketleme Aracı’nı (JEP 392) kullanabilecekleri gibi Vector API (JEP 338), Foreign Linker API (JEP 389) ve Foreign-Memory Access API (JEP 389) gibi üç tasarım özelliğini ve Sealed Classes (JEP 397) adlı bir ön izleme özelliğini de keşfedebilecek.
Oracle, geliştiricilere öngörebilecekleri bir sürüm programı sağlamak amacıyla her altı ayda bir Java güncellemeleri sunmaktadır. Bu güncellemelerde sürekli yenilikler olmasının yanı sıra performans, tutarlılık ve güvenlik alanında da sürekli olarak sunulan iyileştirmeler sayesinde Java’nın her ölçekten kuruluş ve sektörde yaygın bir şekilde kullanılabilme imkanını da artmaktadır.
“Altı ayda bir sürüm yayınlama temposunun sağladığı güç, bu en son sürümde her yönüyle hissediliyor,” diyor Oracle’da Java Platformu Grubu geliştirme başkan yardımcısı Georges Saab. “Desen Eşleştirme ve Kayıtlar, JDK 14’ün bir parçası olarak bir sene önce kullanıma sunuldu ve o günden bu yana da gerçek dünyadaki kullanım alanlarına dayalı birçok topluluk geri bildirimi aldı. Bu süreç, Java geliştiricilerine sadece nihai hale getirilmeden önce bu özellikleri deneyimleme fırsatı vermekle kalmıyor, aynı zamanda topluluğun ihtiyaçlarını gerçek anlamıyla karşılayan iki sağlam JDK Geliştirme Önerileri’yle (JEP) de topluluktan alınan geri bildirimleri bünyesinde barındırabiliyor.”
Java 16 sürümü, açık incelemeler, haftalık derlemeler ve Oracle mühendisleri ile dünyanın dört bir yanındaki Java geliştirici toplulukları arasında OpenJDK Topluluğu ve Java Topluluk Süreci aracılığıyla kurulan kapsamlı bir işbirliğini içeren sektör çapındaki geliştirme çalışmalarının bir sonucudur. Java 16’da sunulan yeni özellikler:
Dil Geliştirmeleri JDK 16’da Nihai Hale Getirildi
· JEP 394: instanceof için Desen Eşleştirme – instanceof operatörü için desen eşleştirme özelliği ile Java programlama dilini zenginleştirir.
· JEP 395: Kayıtlar – Sabit veriler için şeffaf taşıyıcılar şeklinde hareket eden sınıflar olan kayıtlarla Java programlama dilini zenginleştirir. Kayıtlar, bir tür nominal değişkenler grubu olarak düşünülebilir.
Geliştirici Verimliliğini Arttıran Yeni Araç
JEP 392: Paketleme Aracı – Kendinden içerikli Java uygulamalarının paketlenmesi için kullanılan jpackage aracını sunar.
Performansı Arttıran Geliştirilmiş Bellek Yönetimi
· JEP 387: Esnek Meta Alan – Kullanılmayan HotSpot sınıfı meta veri (örn. meta alan) belleğini işletim sistemine daha hızlı bir şekilde döndürür, meta alan ayak izini azaltır ve bakım maliyetlerini azaltmak amacıyla da meta alan kodunu basitleştirir.
· JEP 376: ZGC: Eşzamanlı İş Parçacığı-Yığın İşleme – ZGC İş parçacığı-yığın işleme özelliğini güvenli noktalardan eşzamanlı aşamaya taşır. Bu çalışma ile eşzamanlı yığın işlemeye imkan sağlamak üzere en son önemli engel de ortadan kaldırılmış olunur.
Geliştirici Verimliliği ve Esnekliğini Arttıran Geliştirilmiş Ağ İletişimi
· JEP 380: Unix Etki Alanına Özel Soket Kanalları – Belli başlı Unix platformlarında ve Windows’da sıkça görülen Unix etki alanına özel soketlerin özelliklerinin tümü için gereken desteği, java.nio.channels paketindeki soket kanalı ve sunucu-soket kanalı API’lerine ekler. Unix etki alanına özel soketler aynı ana bilgisayarda süreçler arası iletişim (IPC) için kullanılır. Bu soketler, birçok açıdan TCP/IP soketlerine benzer ancak İnternet Protokolü (IP) adresleri ve bağlantı noktası numaralarından ziyade dosya sistemi dizin yolu adlarıyla ele alınırlar.
Gelecekle Uyumsuz Kodların Ele Alınması
· JEP 396: Varsayılan Olarak JDK Dahili Bileşenlerinin Kapsanması – JDK 9’da yeni dahili API bileşenlerini etkili bir şekilde kapsama altına alarak bunlara erişimi sınırlandırmıştık. Ancak taşıma işlemine yardımcı olması için JDK 9, JDK 8’de var olan paketlerin içeriğini çalışma sırasında etkin bir şekilde kapsama altına almamayı tercih etmişti. JDK 16’da ise sun.misc.Unsafe gibi kritik önemdeki dahili API’ler haricindeki dahili unsurların çoğunluğu varsayılan şekilde kapsama altına alınarak bu sınırlama daha da sıkılaştırılmıştır. Son kullanıcılar yine de JDK 9’dan bu yana varsayılan bir özellik olan rahatlatılmış güçlü kapsama özelliğini tercih edebilmektedirler. Bu özellik, geliştiricilerin dahili unsurların kullanılmasından standart API’lerin kullanılmasına geçmesini destekleyecek ve böylece hem kendileri hem de kullanıcıları gelecekteki Java sürümlerinde bir sorun yaşamadan sürüm yükseltme işlemini yapabileceklerdir.
· JEP 390: Değer Tabanlı Sınıflar için Uyarılar – Primitif kapsayıcı sınıfları değer bazlı olarak belirlemekte ve yeni kullanım dışı bırakma uyarılarına ilişkin komutlarla bunların temel yapılarını kullanım dışı bırakabilmektedir. Java Platformundaki her tür değer tabanlı sınıf ortamındaki uygunsuz senkronizasyon teşebbüsü hakkında da uyarılarda bulunmaktadır.
Tasarım ve Önizleme Özellikleri
· JEP 338: (Incubator)Vector API – Desteklenen CPU mimarilerindeki en verimli vektör donanım talimatlarını çalışma sırasında güvenilir bir şekilde derleyen vektör hesaplamalarını ifade etmek için jdk.incubator.vector gibi bir inkübatör modülü için ilk yinelemeyi sunar.
· JEP 389: (Incubator)Foreign Linker API – Yerel koda statik tipte ve tamamen Java niteliğinde erişim imkanı sunan bir API’yi kullanıma sokar.
· JEP 393: (Third Incubator)Foreign-Memory Access API – Java programlarının Java Heap alanı dışındaki dış belleğe güvenli ve verimli bir şekilde erişebilmesini sağlayan bir API’yi kullanıma sokar.
· JEP 397: (İkinci Önizleme) Mühürlü Sınıflar – Java programlama dilini mühürlü sınıflar ve arayüzler ile zenginleştirir. Mühürlü sınıflar ve arayüzler, başka hangi sınıfların veya arayüzlerin genişletilebileceğini veya uygulamaya konulabileceğini sınırlandırmaktadır.
OpenJDK’daki Katkı Sahipleri için İyileştirmeler
· JEP 347: (iJDK kaynak kodunda) C++14 Dili Özelliklerinin Etkinleştirilmesi – C++14 dilinin özelliklerinin JDK C++ kaynak kodunda kullanılmasına imkan sağlar ve HotSpot kodunda bu özelliklerin hangilerinin kullanılacağına dair yönlendirme sunar.
· JEP 357: Mercurial’dan Git’e Taşınma – OpenJDK Topluluğu’nun kaynak kodu havuzlarını Mercurial’dan (hg) Git’e taşır.
· JEP 369: GitHub’a Taşınma – OpenJDK Topluluğu’nun Git veri havuzlarını GitHub’da barındırır.
Yeni Bağlantı Noktaları, Java için Daha Fazla Platformda Destek Sunuyor
· JEP 386: Alpine Linux Bağlantı Noktası – JDK’yi Alpine Linux’a ve hem x64 hem de AArch64 mimarileri üzerinde birincil C kitaplığı olarak musl’yi kullanan diğer Linux dağıtımlarına taşır.
· JEP 388: Windows/Aarch64 Bağlantı Noktası – JDK’yı Windows/AArch64’e bağlar.
Java’yı Sürekli Daha İyi Kılma
Günümüz uygulama geliştiricilerinin gelişen ihtiyaçlarını karşılayabilmek amacıyla sürekli yenilikler geliştirmeyi esas alan Java, bugüne kadarki en başarılı geliştirme platformları arasında yer almaktadır. Oracle Java SE Aboneliğini müşterileri açısından daha değerli hale getirmek için Oracle, GraalVM Enterprise ürününü de aboneliğe dahil etmiştir. GraalVM, özellikle mikroservisler ve buluta özel mimarilerde olmak üzere performansı arttırabilmekte ve uygulamaların kaynak tüketimini azaltabilmektedir. Oracle Java SE aboneliğinden faydalanarak Java varlıklarını yöneten kuruluşlar sadece en son geliştirmelere ve Oracle’daki Java uzmanlarına doğrudan erişim imkanına sahip olmakla kalmıyor, aynı zamanda diğer yaklaşımlara kıyasla önemli tasarruflar da ediniyor.