Java 21 son yılların en heyecan verici sürümlerinden biri – ivobot

15 JEP (JDK iyileştirme önerileri) ile OpenJDK 21 her zamankinden daha fazla konu getiriyor. Ayrıca biz Java geliştiricileri için pek çok ilgi çekici özelliğe sahiptir. Desen eşleştirme, sanal iş parçacıkları, vektör API’si ve harici işlevler ve bellek API’si dahil olmak üzere bazı özellikler uzun süredir üzerinde çalışılmaktadır. Desen eşleşmesinin ve sanal iş parçacıklarının bazı kısımları sonlandırılırken, diğer yönler önizleme veya kuluçka modunda kalır. Bununla birlikte, dize modelleri, “Adsız sınıflar ve örneklerin ana yöntemleri” (her ikisi de başlangıçta önizleme olarak mevcuttur) ve sıralı koleksiyonlar gibi bazı tamamen yeni konular geliştiriciler için özellikle ilgi çekicidir.

Duyuru

Embarc Software Consulting GmbH’de yazılım mimarı, danışman ve eğitmen olarak Falk Sippach her zaman katılımcılarında, müşterilerinde ve meslektaşlarında ateşlenecek tutku kıvılcımını arıyor. 15 yılı aşkın bir süredir ağırlıklı olarak Java ortamında çevik yazılım geliştirme projelerine destek vermektedir. Topluluğun aktif bir parçası olarak (JUG Darmstadt’ın ortak organizatörü), aynı zamanda makalelerde, blog gönderilerinde, ayrıca konferanslardaki konuşmalarda veya kullanıcı grubu toplantılarında bilgilerini paylaşmayı seviyor ve çeşitli etkinlik uzmanlarının organizasyonunu destekliyor. Falk @sippsack’ta tweet atıyor.

Desen eşleştirme, karmaşık durum ayrımlarını verimli ve sürdürülebilir bir şekilde uygulamak için mevcut yapıların desenlerle karşılaştırılmasından oluşur. Amber Projesinin bir parçası olarak birkaç yıldır geliştirilme aşamasındadır. LTS destekli son sürüme (OpenJDK 17) kadar başlangıçta yalnızca anahtar ifadeleri, mühürlü sınıflar, kayıtlar ve örnek desen eşleştirme gibi temel işlevler tamamlandı. Java 21 ile artık verimli bir şekilde de kullanılabiliyor. İki önemli yapı taşı tamamlandı: kayıt şablonları ve anahtar için şablon eşleştirme. Kayıt şablonları, kayıtları eşleştiren ve aynı zamanda bunları (yapısı bozulmuş) bileşenlerine ayıran yeni bir şablon türüdür, böylece doğrudan bileşenlerle çalışmaya devam edebilirsiniz. Anahtarlar için Desen Eşleştirme ile önceki tüm özellikler bir araya getirilir; böylece anahtar ifadelerinde, her zaman mevcut olan sabit kalıplara ek olarak artık When cümlecikleri (önceden korunan kalıplar olarak adlandırılıyordu) dahil olmak üzere tür ve kayıt kalıplarını kullanabilirsiniz. İsimsiz Desenler çok yeni (21’de önizlendi). Bu, joker karakterlere (alt çizgi karakteri) izin verir _) model değişkenlerinin değerlendirilmesine gerek yoksa. Bu, kodu daha kompakt, okunması kolay ve hataya daha az eğilimli hale getirir (ölü kodu önler). Bu yapı aynı zamanda catch bloklarında veya isimsiz değişkenler olarak adlandırılan lambda parametrelerinde de kullanılabilir.

Pek çok uzman, platformun jenerikler, lambda ifadeleri ve modül sistemi ile aynı seviyede yer alan Java tarihindeki en önemli özelliklerden biri konusunda hemfikir ve heyecanlarını gösteriyor. Sanal iş parçacıkları çok daha fazla sayıda eşzamanlı iş parçacığına izin verir. Özellikle kaynak tüketimi söz konusu olduğunda klasik platform iş parçacıklarına göre avantajlıdırlar. Bu, VM’nin bellek sınırlarına hemen ulaşılmadan çok daha fazla (teorik olarak milyonlarca) sanal iş parçacığının bir süreçte başlatılabileceği anlamına gelir. Bu daha iyi CPU kullanımına olanak tanır. Ancak çoğu Java geliştiricisi eşzamanlı programlama ve sanal iş parçacıklarıyla doğrudan temasa geçmeyecektir. Bundan yine de yararlanacaksınız çünkü çerçeve oluşturucular (Spring, Quarkus, …) sanal iş parçacıkları oluşturacak. Bu, kullanıcılardan gelen birden fazla isteğin aynı anda işlenebilmesi nedeniyle özellikle web uygulamalarında daha iyi kullanıma olanak tanır. Ancak fren, IO erişimidir (örneğin veritabanına). Ancak isteklerin oluşturulması ve yönetilmesi çok ucuz olduğundan (daha az bellek tüketimi) ve çok daha fazlası aynı anda işlenebildiğinden, mevcut kaynaklar daha iyi kullanılabilir.

Artık tamamlanan sanal iş parçacıklarında önizlemede bir kez daha yayınlanan iki özellik vardır: yapılandırılmış eşzamanlılık ve kapsamlı değerler. İkincisi, ThreadLocal değişkenlerine daha iyi bir alternatiftir. Ayrıca yapılandırılmış eşzamanlılık, birden çok paralel alt görevin özellikle okunabilir ve yönetilebilir bir şekilde işlenmesine olanak tanır.

İşlevsellik açısından yönetilebilir özelliklerden bazıları, Java sürüm 21’de biraz şaşırtıcı bir şekilde ortaya çıktı. Dize kalıpları özellikle ilgi çekicidir. Bunlar yalnızca uzun zamandır beklenen dize enterpolasyonunu Java dünyasına getirmekle kalmıyor. Gelecekte uygulama, örneğin JSON nesneleri oluşturabilen veya yer tutucu metinlerden hazırlanan ifadelerle güvenli veritabanı sorguları oluşturabilen kendi model işlemcilerinizi kolayca oluşturmanıza da olanak tanıyacaktır.

Sıralı Koleksiyonlar, öğeleri iyi tanımlanmış bir sıraya göre sıralanan koleksiyonlar için bir avuç yeni yöntem sunar. Bu, ilk veya son öğeye okuma ve yazma erişimini (kaldırma dahil) ve sıranın tersine çevrilmesini içerir (reversed()). Bu, halen yaygın olarak kullanılan toplama çerçevesini daha da geliştirir.

BetterCode() Java 21 LTS 4 Ekim’de gerçekleşecek. Çevrimiçi konferans, programlama dilinin yeni LTS (Uzun Süreli Destek) sürümüne odaklanıyor. Gelen iX VE dpunkt.verlag Temalı gün, yedi konferansın ana haberlerini kapsayacak. Aynı zamanda OpenJDK’nın perde arkasına da bir bakış sunuyor.

Gelecekte Java’ya yeni başlayanlar için bile daha kolay olacaktır. Artık gibi özel yapıları kullanmanıza gerek yok. yürütülebilir bir sınıf oluşturmak için class, static, public, String[] args vesaire. anlamak. “JEP 445: Adsız Sınıflar ve Örnek Ana Yöntemler (Önizleme)” ile artık çalıştırabilirsiniz main-Yöntemleri daha kısa ve öz bir şekilde tanımlayın ve ayrıca bir dahil etme sınıfı olmadan da yapın. JDK 11’de yayınlanan “Tek Dosyalı Kaynak Kodu Programlarını Başlat” JEP’si ile birleştirildiğinde, basit bir komutla bir metin dosyasında çok yalın küçük Java uygulamaları oluşturabilirsiniz. void main(){}yöntemi komut satırından çağırın. Bu aynı zamanda deneyimli Java geliştiricilerine de fayda sağlar.

Vector API uzun süredir çalışıyor ve Java 16’dan bu yana sürümlerde düzenli olarak yer alıyor; bu sefer altıncı kuluçka makinesi (Önizleme’nin öncüsü) olarak. SIMD bilgisayar mimarilerinin modern olanaklarını vektör işlemcilerle desteklemekle ilgilidir. Tek Komutlu Çoklu Veri (SIMD), birden fazla işlemcinin aynı anda farklı verileri işlemesine olanak tanır. Donanım düzeyinde paralelleştirme, SIMD ilkesini kullanan yoğun bilgi işlem döngüleri için gereken çabayı azaltır.

Yabancı İşlev ve Bellek API’si de bu kez üçüncü ön izlemede olmak üzere çeşitli sürümlere entegre edildi. Uzun süredir Java dünyasında olan herkes Java Yerel Arayüzü’ne (JNI) aşina olacaktır. Bu, Java’dan yerel C kodunu çağırmanıza olanak tanır. Ancak yaklaşım nispeten karmaşık ve kırılgandır. Yabancı İşlev API’si, yerel koda (C kitaplıkları) statik olarak yazılmış, tamamen Java tabanlı erişim sağlar. Yabancı Bellek Erişimi API’si ile birlikte bu arayüz, yerel bir kitaplığa bağlanmanın yavaş ve hataya açık sürecini önemli ölçüde basitleştirebilir. İkincisi, Java uygulamalarına yığının dışına ek bellek ayırma fırsatı verir. Yeni API’lerin hedefi, uygulama çabasını %90 oranında azaltmak ve performansı 4 ila 5 kat hızlandırmaktır. Her iki API de, JDK 14 ve 16’dan bu yana, başlangıçta ayrı ayrı ve JDK 18’den itibaren JEP ortak olarak JDK’ya dahil edilmiştir. kuluçka makinesi. Bu özellik muhtemelen yavaş yavaş tamamlanmaya yaklaşıyor.

Çöp toplayıcılarının başına da bir şey geldi. Birkaç yıl önce OpenJDK 15’te tanıtılan ZGC (Ölçeklenebilir Düşük Gecikmeli Çöp Toplayıcı) yeni nesle aittir. Amaç, mümkün olan en kısa GC duraklamalarıyla (10 ms’den az) büyük miktarda veriyi (TB RAM) temizlemek ve böylece uygulamayı neredeyse her zaman yanıt vermeye hazır tutmaktır. ZGC şu ana kadar yeni nesneler ile uzun süredir var olan nesneler arasında hiçbir ayrım yapmadı. Buradaki fikir, halihazırda bir veya daha fazla GC döngüsünden sağ çıkmış nesnelerin muhtemelen gelecekte de uzun süre yaşayacak olmasıdır. Bunlar daha sonra ekstra bir alana (eski nesil) taşınır ve artık standart işlemlerde işlenmesine gerek kalmaz. Bu, uygulamanın performansını artırabilir.

Geliştiricilerle pek alakalı olmayan başka JEP’ler de var. Ayrıca birçok ayrıntı için sürüm notlarına göz atmakta fayda var. JDK’da (Java sınıf kitaplığı) yapılan değişiklikler de Java Almanak kullanılarak kolayca takip edilebilir. Bu genel bakışta, diğer şeylerin yanı sıra, ipli modeller ve sıralı koleksiyonlar hakkında tüm haberleri bulacaksınız. String sınıfının küçük uzantıları da vardı: örneğin, yöntem indexOf(String str, int beginIndex, int endIndex) Belirli bir aralıktaki bir alt dizeyi arayan tanıtıldı. Sınıflar StringBuffer VE StringBuilder Mevcut nesneye tekrar tekrar bir karakter veya karakter dizisi ekleyen iki benzer yöntemi içerecek şekilde genişletildi: repeat(CharSequence, int). Sınıf Character bir Unicode karakterinin bir emojiyi mi yoksa onun bir varyantını mı temsil ettiğini kontrol eden çeşitli yöntemleri içerecek şekilde genişletildi. Java burada da zamanla birlikte hareket ediyor.

Java 21 sürümüne ayrıntılı bir genel bakış, yakın zamanda yayınlanan iX makalesinde bulunabilir. Virtual Threads’in tamamlanmasıyla Java 21, birkaç yıl içinde Java 5 (Generics), Java 8 (Lambdas, Stream API) ve Java 9 (Platform Modül Sistemi) ile aynı seviyeye gelecektir. Bu fikrin potansiyeli henüz tam olarak anlaşılamasa da, sanal iş parçacıkları gelecekte yüksek düzeyde ölçeklenebilir sunucu uygulamalarının uygulanmasını büyük ölçüde basitleştirecektir. Ancak Java 21’in başka birçok yeni özelliği de var. Şablon eşleştirme sırasında çekirdek (anahtar için şablon eşleştirme) ve kayıt şablonları sonlandırıldı ve adsız şablonlar önizleme olarak tanıtıldı. Dize şablonları (şu anda önizleme aşamasındadır) ve sıralı koleksiyonlar Java geliştiricilerinin hayatını kolaylaştırır. Bu, Mart 2024’teki bir sonraki sürüm için şimdiden beklentiyi artırıyor.


(kendim)

Haberin Sonu

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir