deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

JDK 28 yapılandırılmış eşzamanlılığı finalize ediyor ve AOT cache'i derlenmiş koda genişletiyor

Mart 2027'de çıkması beklenen JDK 28, yedi önizleme turunun ardından yapılandırılmış eşzamanlılığı finalize ediyor, Project Leyden'in AOT cache'ini derlenmiş koda genişletiyor; bunlara uyarlamalı ZGC heap boyutlandırması ve inkübatör aşamasında bir JSON API'si de eşlik ediyor.

JDK 28 yapılandırılmış eşzamanlılığı finalize ediyor ve AOT cache'i derlenmiş koda genişletiyor

Yapılandırılmış eşzamanlılık JDK 28'de final oluyor

5–19 Ekim 2026 arasındaki Java ve Kotlin haberlerini kapsayan bir dev.to derlemesi, JEP 543'ün yapılandırılmış eşzamanlılığı JDK 28'de final bir özelliğe yükselttiğini ve böylece yedi tur süren önizleme sürecinin sona erdiğini bildiriyor. API, ilgili alt görevleri tek bir StructuredTaskScope altında grupluyor: bir alt görev başarısız olduğunda kardeşleri iptal ediliyor ve herhangi bir çocuk hâlâ çalışırken ebeveyn sonlanamıyor.

Geçiş çabası çıkış noktasına bağlı. JDK 27 önizlemesine göre yazılmış kodun yapması gereken tek şey preview bayrağını kaldırmak. JDK 26 kodunda daha fazla değişiklik var: join() artık başarısızlığı FailedException yerine ExecutionException ile bildiriyor, TimeoutException kaldırılmış durumda ve özel joiner'lar, join()'in fırlatabileceği istisnayı tanımlayan üçüncü bir tip parametresi alıyor. JDK 28'in Mart 2027'de çıkması planlanıyor ve 20 numaralı early access sürümü test için hâlâ mevcut.

Project Leyden'in AOT cache'i makine kodu saklıyor

JEP 544, Project Leyden'in son sürümlere katmanladığı ahead-of-time cache'i genişletiyor. JIT, yoğun kullanılan metotları yalnızca bir ısınma süresinden sonra optimize ettiği için cache, bu işi önceden yüklemek amacıyla getirilmişti: yüklenen sınıflar JDK 24'te, metot profilleri ise JDK 25'te geldi. Yeni JEP, derlenmiş yerel kodun kendisini ekliyor; böylece bir üretim süreci, optimize edilmiş kod yerleşik durumdayken çalışmaya başlıyor. İş akışı değişmedi: bir eğitim çalışması cache'i kaydediyor ve üretim çalışması buradan başlıyor.

JEP'in kendi ölçümlerine göre, derlenmiş kodun dahil edilmesiyle beş framework benchmarkı yüzde 65 ila 80 daha hızlı başladı; önceki cache ile bu oran yüzde 50 ila 70 idi. Tek bir kısıt var: cache'lenen kod yalnızca üretim makinesinin CPU özellikleri ve garbage collector'ı eğitim çalışmasıyla eşleştiğinde yükleniyor. Derleme, serverless iş yüklerinin ve sık ölçeklenen servislerin en çok kazanacak taraf olduğunu belirtiyor.

ZGC uyarlamalı bir heap kazanıyor

İki ZGC değişikliği JDK 28'yi hedefliyor. JEP 546, yeni bir adaptive heap sizing bayrağıyla etkinleştirilen, opt-in bir mod ekliyor; bu modda collector heap'i yük ile birlikte büyütüp küçültüyor ve belleği diğer süreçlere geri veriyor; varsayılan üst sınır sistem RAM'inin neredeyse tamamına yükseliyor. JEP, artık maksimum heap boyutu yapılandırmasına gerek kalmadığını savunuyor. JEP 545 ise ZGC'nin başlangıç ve ısınma süresini kısaltıyor. Konteynerleştirilmiş servisler ana yararlananlar olarak öne çıkarılıyor.

İnkübatör aşamasında bir JSON API'si ve bir kez daha lazy constants

JEP 540, bir JSON API'sini inkübatör modülü olarak JDK'ya getiriyor; API, Devoxx Belgium'da Alan Bateman ve Viktor Klang tarafından tanıtıldı. Tek bir Json.parse çağrısı bir JsonValue tipleri ağacı döndürüyor; veri bağlama ve streaming yok, bu da onu uygulama framework'lerinden çok araçlar ve yapılandırma okuyan küçük servisler için konumlandırıyor. Bir inkübatör modülü bayrağının arkasında çalışıyor ve API'nin değişmesi bekleniyor.

JEP 547, lazy constants özelliğinin değişiklik yapılmadan dördüncü önizlemesini öneriyor; bu özellik değerini thread'ler arasındaki ilk erişimde yalnızca bir kez hesaplıyor ve JVM'in sonucu bir final alanı gibi ele alıp okuma koduna katlamasına izin veriyor. Derleme, özellik final olana kadar bunları üretim kodundan uzak tutmayı öneriyor.

Kotlin ve ekosistem notları

Kotlin derleyicisi taban çizgisini yükseltiyor. 2.5.0 sürümü, opt-out olmadıkça 17'den eski bir JDK'da başarısız olacak ve 2.5.20-Beta1 opt-out seçeneğini tamamen kaldırıyor. Bu, bytecode hedefini değil derleyiciyi çalıştıran JDK'yı ilgilendiriyor; yani eski JDK'lara sabitlenmiş CI imajları ve build'ler yükseltmeden sonra kırılacak. En son kararlı sürüm hâlâ 2.4.21.

Araçlar tarafında, IntelliJ tarafından geliştirilen ve VS Code ile Cursor için olan Java ve Kotlin uzantısı 1.0'a ulaştı; IntelliJ'in tamamlama, gezinme, refactoring ve debugger özelliklerini bu editörlere getiriyor, ancak artık 30 günlük deneme süresinin ardından bir IntelliJ IDEA Ultimate aboneliği gerektiriyor. John O'Reilly, PeopleInSpace uygulamasını SKIE eklentisinden Kotlin'in alpha aşamasındaki Swift export özelliğine 2.5.0-Beta2 geliştirme sürümünde taşıdı; uygulamanın export ettiklerini budamak, üretilen Swift kodunu kabaca 18.000 satırdan 2.600 satıra indirdi; ancak gizli bir bağımlılıktaki bir tip döndüren fonksiyon, build uyarısı olmadan bir fatalError() stub'ına dönüştü. Google'ın agent framework'ü ADK, Kotlin sürümünün 1.4.0'ını da yayınladı; bu sürüm workflow graph'ları için bir DSL ile OpenAI Chat Completions ve uyumlu API'ler için bir backend ekliyor.

Başka bir yerde, Helidon 27, Oracle'ın iki hatlı sürüm modelini açtı; uç hat en yeni JDK'yı izlerken, kuyruk hati daha eski bir sürümde düzeltmelerle kalıyor.

Neden önemli

JDK 28, artımlı bir sürüm olmaktan çok bir kilometre taşı olarak şekilleniyor. Final haline gelen yapılandırılmış eşzamanlılık, Project Loom'un sanal thread modeline kararlı bir koordinasyon primitifi kazandırıyor; böylece eşzamanlı çağrılar yürüten servisler, başarısızlık işleme ve iptal işlemini elle yazılmış kod yerine API'den alıyor. Derlenmiş kod içeren AOT cache, JVM'in uzun süredir süren ısınma cezasını tam da en çok can acıttığı yerde, yani serverless ve elastik dağıtımlarda, ölçülmüş yüzde 80'e varan başlangıç süreleri kesintisiyle hedefliyor; uzun süreçler için JIT'i ise koruyor. Uyarlamalı ZGC boyutlandırması, konteyner ayarlamasının bir parçasını daha ortadan kaldırıyor. Kotlin ekipleri için JDK 17 derleyici tabanı, bir sonraki yükseltmeden önce kontrol edilmesi gereken operasyonel kalem.

  • #java
  • #jdk-28
  • #structured-concurrency
  • #jvm
  • #kotlin