Java SE 27 ve OpenJDK 27 yayınlandı

Altı aylık geliştirme sürecinin ardından Oracle, açık kaynak kodlu OpenJDK projesini referans uygulama olarak kullanan Java SE 27'yı (Java Platform, Standard Edition 27) yayınladı. Bazı kullanımdan kaldırılmış özelliklerin kaldırılması dışında, Java SE 27, Java platformunun önceki sürümleriyle geriye dönük uyumluluğu koruyor; daha önce yazılmış çoğu Java projesi yeni sürüm altında çalışırken değişmeden çalışmaya devam edecek. Java SE 27'nın (JDK, JRE ve Server JRE) kurulumu hazır sürümleri hazırlandı. Linux (x86_64, AArch64), Windows (x86_64) ve macOS (x86_64, AArch64). OpenJDK projesi tarafından geliştirilen Java SE 27 referans uygulaması, GNU ClassPath İstisnası ile birlikte GPLv2 lisansı altında tamamen açık kaynaklıdır ve ticari ürünlerle dinamik bağlantıya olanak tanır.

Java SE 27, bir sonraki sürüme kadar güncellemelerin yayınlanacağı düzenli destek sürümü olarak sınıflandırılmıştır. Uzun süreli destek (LTS) dalı ise sırasıyla 2033, 2031 ve 2029'a kadar güncellemelerin yayınlanacağı Java SE 25, Java SE 21 veya Java SE 17 olmalıdır (genellikle Eylül 2030, 2028 ve 2026'ya kadar kullanılabilir). Java SE 8 LTS dalı için genişletilmiş destek 2030'a kadar, Java SE 11 için ise 2032'ye kadar devam edecektir.

Java SE 27'daki (1, 2, 3, 4) değişiklikler şunlardır:

  • Varsayılan olarak, tüm ortamlar daha önce sunucu sistemlerinde kullanılan G1 (Çöp Öncelikli) çöp toplayıcısını kullanır. G1, büyük bellek kapasitesine sahip çok işlemcili sistemlerde kullanım için ve öngörülebilir gecikmeyi yüksek verimlilikle dengelemek için optimize edilmiştir. Çalışma sırasında G1, belleği birçok küçük bölgeye ayırır ve daha fazla kullanılmayan nesneye ve daha az aktif olarak erişilen verilere sahip bölgelere öncelik verir.
  • HotSpot JVM varsayılan olarak kompakt nesne başlıkları kullanır. 64 bit sistemlerde, başlık boyutu 96 bitten 64 bite düşürülerek bellek tüketimi azaltılmış ve verilerin işlemci önbelleğine ulaşma olasılığı artırılmıştır. SPECjbb2015 kıyaslamalarında, bellek tüketimi %22, CPU yükü %8 ve çöp toplama işlemlerinin sayısı %15 azalmıştır. JSON ayrıştırıcısının test çalışma süreleri %10 oranında kısalmıştır.
  • TLS 1.3 uygulaması, kuantum dirençli ML-KEM (CRYSTALS-Kyber) algoritmasını klasik ECDHE eliptik eğri algoritmalarıyla birleştiren hibrit anahtar anlaşma şemaları için destek ekler: X25519MLKEM768 (X25519 eğrisi + ML-KEM-768 ile ECDHE), SecP256r1MLKEM76 (secp256r1 eğrisi + ML-KEM-768 ile ECDHE) ve SecP384r1MLKEM1024 (secp384r1 eğrisi + ML-KEM-1024 ile ECDHE). Bu, javax.net API'sinde mevcuttur.ssl Bu şemalar varsayılan olarak etkinleştirilmiştir ve kullanım için herhangi bir uygulama değişikliği gerektirmez.
  • Performans izleme, profil oluşturma ve teşhis için kullanılan bir araç olan JDK Flight Recorder (JFR), artık kaydedilen teşhis bilgilerinde komut satırı argümanlarını, ortam değişkenlerinin başlangıç ​​değerlerini ve sistem özelliklerini temizlemeyi destekliyor. Bu değişiklik, yetkilendirme belirteçleri ve ortam değişkenleri aracılığıyla iletilen API erişim anahtarları gibi profil oluşturulan işlem tarafından işlenen hassas verilerin sızmasını önler.
  • JVM'de sabit olarak ele alınan ve değiştirilemez veriler içeren nesnelerle çalışmak için Lazy Constants API'nin üçüncü önizlemesi uygulandı. "final" anahtar kelimesine sahip alanlar için uygulananlara benzer performans optimizasyonları bu nesnelere de uygulanır. "final"den farklı olarak, yeni API, sabit değerlerin oluşturulmasını başlatılmalarından ayırır, bir değerin yalnızca bir kez başlatılabileceğini garanti eder, program başlatma süresini azaltır ve daha önce yalnızca JDK dahili kodunda kullanılan sabit katlama optimizasyonlarının kullanıcı kodunda kullanılmasını sağlar. class Application { // Önceki: // static final UserService USERS = new UserService(); // Şimdi: static final StableValue KULLANICILAR = StableValue.of(); public static UserService users() { return KULLANICILAR.orElseSet(UserService::new); } }
  • Desen eşleştirme motoru, her türlü desende, instanceof operatöründe ve switch bloklarında temel veri tiplerini (int, byte, char ve diğer nesne dışı temel tipler) kullanma yeteneğinin beşinci taslağını sunuyor. switch (x.getStatus()) { case 0 -> "tamam"; case 1 -> "uyarı"; case 2 -> "hata"; case int i -> "bilinmeyen durum: " + i; } if (i instanceof byte b) { … b … }
  • Farklı iş parçacıklarında çalışan birden fazla görevi tek bir birim olarak ele alarak çoklu iş parçacıklı uygulamaların geliştirilmesini basitleştiren Yapılandırılmış Eşzamanlılık API'sinin yedinci taslağı test için yayınlandı.
  • Vektör API'sinin on ikinci test uygulaması gerçekleştirildi. Bu API, x86_64 ve AArch64 işlemci vektör komutları kullanılarak gerçekleştirilen vektör hesaplamaları için fonksiyonlar sağlar ve birden fazla değer üzerinde eş zamanlı işlemlere (SIMD) olanak tanır. HotSpot JIT derleyicisinin skalar işlemlerin otomatik vektörleştirilmesinin aksine, yeni API, paralel veri işleme için vektörleştirme üzerinde açık kontrol sağlar.
  • Kriptografik anahtarlar, sertifikalar ve sertifika iptal listeleri içeren nesnelerin PEM (Pivacy-Enhanced Mail) formatı kullanılarak kodlanması ve kod çözülmesi için API'nin üçüncü taslağı artık kullanıma sunulmuştur.

Ayrıca, grafiksel kullanıcı arayüzü uygulamaları oluşturmak için JavaFX 27 platformuna yönelik bir güncellemenin yayınlandığını duyurmaktan mutluluk duyuyoruz. JavaScript (Node.js), Python, Ruby, R, herhangi bir JVM dili (Java, Scala, Clojure, Kotlin) ve LLVM bitcode'u oluşturulabilen diller (C, C++, Rust) için uygulama çalıştırmayı destekleyen GraalVM 27 evrensel sanal makinesinin de önümüzdeki saatlerde yayınlanması bekleniyor.

Kaynak: opennet.ru

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster