deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Java 27, G1'i tek varsayılan GC yapıyor; compact headers ve post-quantum TLS aktifleşiyor

Java 27, Eylül 2026'da LTS olmayan bir sürüm olarak yayınlandı; ancak bir dizi JDK denemesini varsayılana çeviriyor: G1 tek varsayılan GC oluyor, compact object headers açılıyor ve TLS 1.3 kuantum dirençli anahtar değişimi kazanıyor.

Java 27, G1'i tek varsayılan GC yapıyor; compact headers ve post-quantum TLS aktifleşiyor

Varsayılanları bilmeye değer LTS olmayan bir sürüm

Java 27, Eylül 2026'da geldi ve dev.to'da yayımlanan bir yazıya göre çoğu üretim ekibi bu sürümü atlayıp Java 25 LTS üzerinde kalacak. Ancak sürüm, uzun süredir süren birkaç JDK denemesini varsayılana çeviriyor ve bu değişiklikler bir sonraki LTS'nin nasıl görüneceğinin sinyalini veriyor. Yazıda özellikle beş JEP öne çıkarılıyor: tek varsayılan garbage collector olarak G1 (JEP 523), varsayılan olarak açık compact object headers (JEP 534), kuantum dirençli TLS anahtar değişimi (JEP 527), primitive türlerde pattern matching (JEP 532) ve Structured Concurrency, Lazy Constants ile Vector API için yeni preview turları (JEP 533, 531 ve 537).

G1 tek varsayılan collector oluyor

Şimdiye kadar bir JVM'nin varsayılan olarak hangi collector'ı kullanacağı, makinenin başlangıçtaki CPU sayısına ve belleğine bağlıydı. dev.to yazarı, 256 MB heap'e sahip tek CPU'lu bir container gibi kısıtlı bir ortamın, kimsenin seçmediği halde sessizce Serial GC'ye düşebildiğini gösteriyor. Java 27'de aynı komut koşulsuz olarak G1 raporluyor. Sidecar süreçleri için bilinçli olarak Serial'ın düşük yüküne güvenen ekipler -XX:+UseSerialGC ile yine seçim yapabilir; tek değişen, bunun istemeden elde edilen bir varsayılan olmaktan çıkması.

Compact headers ve hizalama tuzağı

JEP 534, object header'ları 96 bitten (12 bayt) 64 bite (8 bayt) küçültüyor ve özelliği varsayılan olarak açıyor. JEP, tipik iş yükleri için %10-20 daha az heap öne sürüyor; ancak dev.io'daki benchmark bu rakamın eksik olduğunu savunuyor: HotSpot her nesneyi 8 baytlık sınıra yuvarlıyor, dolayısıyla tasarruf yalnızca daha küçük header bir nesneyi, standart header'ın sınırı çiğnediği noktanın ötesine taşıdığında ortaya çıkıyor.

Yazıda 0 ile 4 int alanlı beş küçük sınıf, her biri 10 milyon örnekle ölçüldü. Alanı olmayan bir sınıfın örnek başına boyutu 16'dan 8 bayta düştü; %50 tasarruf. Bir int alanı değişiklik göstermedi; iki int %33 tasarruf sağladı; üç int hiçbir şey kazandırmadı; dört int %25 kazandırdı. Sonuç tamamen hizalamadan kaynaklanan bir testere dişi desen ve pratik öneri, öne çıkan yüzdeyi geçerli varsaymadan önce kendi sınıflarınızla ölçümü yeniden çalıştırmak. Özellik JDK 25'te JEP 519 olarak son halini aldığından artık deneysel bir flag gerekmiyor.

Varsayılan olarak post-quantum TLS

JEP 527, TLS 1.3'ün her iki taraf da desteklediğinde otomatik olarak hibrit bir anahtar değişimi, klasik ECDHE ile NIST tarafından standartlaştırılmış ML-KEM'in birleşimini, müzakere etmesini sağlıyor; çoğu uygulama için sıfır kod değişikliği gerekiyor. Bunun motivasyonu "şimdi topla, sonra çöz" tehdidi: bugün kaydedilen şifreli trafik, kuantum donanımı var olduğunda çözülebilir; bu yüzden savunma tehdit tamamen gerçek olmadan sevkiyat edilmeli.

dev.to yazarı, geçiş hikâyesini göstermek için JDK 25'i gerçek bir sunucuya karşı da test etti. Yalnızca X25519MLKEM768 grubunu istemek, JDK 25 hibrit grubu henüz uygulamadığı için bir handshake exception ile başarısız oluyor. Bunu X25519 gibi klasik yedeklerle birlikte istemek başarılı oluyor ve yalnızca alt sürüme inerek müzakere ediyor. Çıkarım: bağlantının her iki ucunun desteklediği doğrulanana kadar post-quantum grubun yanına bir klasik grup yazın.

Preview'lar ilerliyor

Bu döngüdeki tek gerçek dil özelliği, beşinci preview turunda olan primitive türlerde pattern matching (JEP 532). switch ve instanceof, primitive türleri doğrudan guard'larla ve boxing olmadan eşleştirebiliyor; hâlâ --enable-preview arkasında ve beş tur geri bildirimden sonra kesin sözdiziminin kesinleştiği varsayılmamalı.

Structured Concurrency yedinci preview turuna ulaştı (JEP 533); artık özel bir tür yerine ExecutionException fırlatıyor ve onTimeout() timeout() olarak yeniden adlandırıldı. Lazy Constants üçüncü preview'ını aldı (JEP 531) ve Set.ofLazy() eklendi. Vector API, API değişikliği olmadan on ikinci incubator turunda (JEP 537) ve hâlâ Valhalla'yı bekliyor. Yazarın skaler-vektörel iç çarpım benchmark'ı, 512 bitlik AVX-512 vektörleriyle kabaca 2 kat hızlanma ölçtü; çekirdek o dizi boyutunda hesap yerine bellek bant genişliğine bağlı olduğundan sıkça ima edilen dramatik katlardan uzak bir sonuç.

Neden önemli

Java 27'yi hiç kurmayan ekipler bile bu varsayılanlarla bir sonraki LTS sıçramasında karşılaşacak. Her yerde G1, kısıtlı dağıtımları şaşırtabilecek sessiz bir collector seçimini ortadan kaldırıyor. Compact headers heap ayak izlerini her sınıfın şekline göre değişen biçimde etkiliyor; dolayısıyla kapasite planlama rakamları kayabilir. Hibrit post-quantum TLS, kimsenin planlamadığı durumlarda bile handshake'lerde görünmeye başlayacak; bu da peer desteğini kontrol etmeyi gerçek bir operasyonel görev hâline getiriyor. dev.to yazısının önerisi net: Java 21 veya 25 LTS üzerindeyseniz henüz geçmek için bir neden yok. Bu özellikleri izleyin, compact headers'ı kendi iş yüklerinizle benchmark'layın ve preview etkin kodu üretimden uzak tutun.

  • #java
  • #jdk
  • #garbage-collection
  • #tls
  • #post-quantum-cryptography