Java 22 standart kodu azaltır ve C++ ve Co.'ya olan bağlantıları stabilize eder.

Saberie

Active member
Duyuru



OpenJDK 22 her altı ayda bir yayınlanır. Sürüm, selefinin yeniliklerine ayak uyduramasa da on iki Java Geliştirme Önerisi (JEP) içeriyor.

Pek çok ekleme hâlâ önizleme olarak işaretleniyor. Bunlardan bazıları, her biri ikinci ön izleme turuna giren yapılandırılmış eşzamanlılık ve dize şablonları da dahil olmak üzere OpenJDK 21'i temel alıyor. Ayrıca Sınıf Dosyası API'si ve Akış Toplayıcıları gibi bazı yeni önizleme özellikleri de bulunmaktadır.







OpenJDK 22, toplam on iki JEP ile birlikte gelir.


(Resim: Oracle)



Önceki sürüm yalnızca toplam 15 JEP nedeniyle değil, aynı zamanda birçok satıcının onu Uzun Süreli Destek (LTS) ile yayınlaması nedeniyle de öne çıktı.

Project Loom'da sürekli rekabet


Mevcut sürümün Java 21'i takip ettiği alanlardan biri, Java programları için daha iyi, daha akıcı eşzamanlılığı hedefleyen Project Loom'dur. Tezgah, tezgah, yani iplikleri birleştirerek büyük bir bütün oluşturmaya yarayan alet anlamına gelir.

Java 21 bu alandaki sanal iş parçacıklarını sonlandırmıştı. Ayrıca Project Loom'da, önceki sürümde önizleme durumu verilen ve Java 22'nin artık ikinci önizleme olarak devam ettiği yapılandırılmış eşzamanlılık ve kapsam değerleri bulunmaktadır.

Yapılandırılmış eşzamanlılık, eşzamanlı kodun sürdürülebilirliğini ve güvenilirliğini artırmak için farklı iş parçacıklarındaki görevlerin tek bir ünitede yönetilmesine yardımcı olur. Başlangıçta JDK 19'da JEP 428 olarak kuluçka makinesine dahil edilmişti, Java 20'de JEP 437 olarak kaldı. Konsept yalnızca Java 21'de JEP 453'te önizleme aşamasına ulaştı ve şimdi “JEP 462″ olarak ikinci önizlemeye geçiyor. : Yapılandırılmış Eşzamanlılık”.



OpenJDK'nın daha da geliştirilmesinde kuluçka makinesi, önizlemeden önceki deneysel aşamadır. Bu, fonksiyonların henüz tam olarak gelişmediğini, kökten değişebileceğini, dile hiç entegre edilemeyebileceğini gösterir. Tüm yenilikler kuluçka makinesinden geçmez, ancak bazıları doğrudan önizlemeye girer ve hatta bazıları önizleme olmadan dile girer.

Önizleme özellikleri tamamen belirtilmiş ve uygulanmıştır ancak değişebilir. Gerçekte dile ulaşacaklarına dair bir garanti olmasa da, tarihin de gösterdiği gibi, bunun önizleme özellikleriyle olması muhtemeldir.







İlk olarak OpenJDK 20'de JEP 429 olarak tanıtılan Kapsamlı Değerler, iş parçacıkları içinde ve arasında değişmez değerlerin değişimine yönelik bir kavramdır. Bunlar daha etkili bir alternatiftir ThreadLocal-Değişkenler. Bunlar gibi değerler de genellikle yalnızca ilgili iş parçacığı için geçerlidir. Aynısı ScopedValue farklı threadlerde farklı değerler alabilir. Bu bağlamda Kapsam, Java'da olduğu gibi bir sınıfın veya işlevin sözcüksel alanı değil, çalışma zamanının değeri ilişkilendirerek belirttiği dinamik bir alandır. Scoped Values, Java 21'de JEP 446 ile önizleme aşamasına girdi ve Java 22'de ikinci önizlemede “JEP 464: Scoped Values” olarak devam etti.

Progetto Amber ile daha fazla konfor


Java 22'deki yeniliklerden dördü Project Amber'e ait. “Bernstein” projesi esas olarak verimliliği artırmayı amaçlayan daha küçük dil özellikleri içeriyor.

Dize desenleri, kuluçka aşaması olmadan JEP 430 ile önizleme olarak Java 21'de tanıtıldı. Değişmez dizeleri ve metin bloklarını tamamlarlar ve dize enterpolasyonuna izin verirler. Bu aynı zamanda örneğin yer tutucu metinlerden JSON nesneleri oluşturmak için şablon işlemcileri tanımlamayı da mümkün kılar. Java 22 için ikinci “JEP 459 Dize Şablonları” önizlemesi, ilk JEP ile karşılaştırıldığında yalnızca çok az değişiklik yapar ve öncelikle, özellik nihayet dile dahil edilmeden önce topluluktan daha fazla geri bildirim toplamayı amaçlamaktadır.

İkinci bir önizleme olarak da işaretlenen “JEP 463: Örtülü Olarak Bildirilen Sınıflar ve Örnek Ana Yöntemler”, Java 21 için ilk taslaktan küçük bir ayarlama içerir; bu, diğer şeylerin yanı sıra, Java'nın geri çağrılmasını da içerir. mainyöntemin basitleştirilmesi amaçlanmaktadır. Teklif aynı zamanda adı da değiştiriyor: selefinin adı “JEP 445: Adlandırılmış Sınıflar ve Örnek Ana Yöntemler” idi. Hedef devam ediyor: mainYöntem daha basit hale getirilmeli ve daha az standart kodla uygulanabilmelidir.







JEP 463 sayesinde gelecekte gereksiz kodlara gerek kalmadan bunu yapmak mümkün olacak. Ancak Oracle'ın örnekteki dize içindeki dünyayı neden kaldırdığı bir sır olarak kalıyor.


(Resim: Oracle)



Adlandırılmamış değişkenler ve şablonlar da aşırı yüklemeyi önlemeye yarar: Değişken bildirimleri veya iç içe şablonlar sözdizimsel olarak gerekliyse ancak bir uygulama içeriği kullanmıyorsa, bunlar basit bir alt çizgiyle tanımlanabilir (Alt çizgi) _) yerine geçmek. Java 21'in JEP 443'ü önizleme olarak sunmasından sonra bu özelliğin “JEP 456: Adsız Değişkenler ve Desenler” ile tamamlandığı kabul edilir.

Yeni “JEP 447: Super(…) öncesi ifadeler” eski bir kuralı çiğnemenize olanak tanır: bir Java kurucusu üst sınıf kurucusunu çağırdığında hiçbir kod yoktu super izin verilmiş. Bu, teklifi değiştirir, ancak oluşturulan örneğe erişen hiçbir koda izin verilmez. Bu, nesnenin yukarıdan aşağıya oluşturulmasını sağlar; yani üst sınıf, alt sınıflardan önce başlatılır.

Yenilik için bir kullanım örneği olarak teklif, yasa dışı bir değer bulunursa hemen bir istisna atmak için üst sınıf kurucuyu çağırmadan önce bir değeri kontrol eden bir kurucuyu gösterir:


public class PositiveBigInteger extends BigInteger {

public PositiveBigInteger(long value) {
if (value <= 0)
throw new IllegalArgumentException("non-positive value");
super(value);
}
}


Panama Projesi ile dış dünyayla temas


Panama projesi, Java programlarını C tabanlı kütüphaneler ve arayüzler gibi Java veya JVM olmayan bileşenlere bağlamayı amaçlamaktadır.

OpenJDK, Java çalışma zamanının ötesindeki kod ve veriler için tek tip arayüzü “JEP 454: Yabancı İşlev ve Bellek API'si” ile sonlandırır. API, teklifte belirtildiği gibi “JNI'nin (Java Yerel Arayüzü) kırılganlığı ve tehlikeleri olmadan” yerel kitaplıklara ve verilere Java tabanlı erişime izin veriyor. Bu itme, Java 16'daki Yabancı Bağlayıcı API'si için önceki JEP 389'u ve Java 14'te JEP 370 olarak başlatılan Yabancı Bellek Erişimi API'sini temel alan JDK 19'da JEP 424 olarak ilk önizlemeyle başladı. Java 20'de JEP 434 ve Java 21'de JEP 442 olarak üçüncü önizleme, API'nin artık kararlı olduğu kabul edilmektedir.

İlk olarak Java 16'da JEP 338 olarak görünen ve o zamandan beri tüm JDK'larda daha da geliştirilen, ancak henüz bir ön izleme durumuna sahip olmayan Vector API, en uzun kuluçka makinesi statüsünün rekorunu elinde tutma yolunda ilerliyor. Bu, “JEP 460: Vector API”yi kuluçka makinesinin yedinci örneği haline getiriyor. Teklif, vektör hesaplama için mevcut CPU mimarilerini ve SIMD (Tek Talimatlı Çoklu Veri) ve vektör işlemcileri gibi talimat uzantılarını kullanmayı amaçlamaktadır.



Haberin Sonu
 
Üst