7 puan yazan GN⁺ 2025-03-19 | 4 yorum | WhatsApp'ta paylaş
  • Oracle, Java 24 (JDK 24) sürümünü resmi olarak duyurdu
  • JDK 24, JCP’nin JSR 399’te tanımladığı Java SE Platform sürüm 24’ün referans uygulamasıdır ve JDK sürüm yayın süreci (JEP 3) üzerinden yayımlandı

[JEP’e göre özet]

  • JEP 404: Generational Shenandoah (deneysel)

    • Shenandoah GC’de nesil bazlı toplamayı destekleyerek performansı iyileştirir
  • JEP 450: Compact Object Headers (deneysel)

    • HotSpot JVM’de nesne başlığı boyutunu 96~128 bitten 64 bite düşürür
    • Yığın boyutunu azaltma, dağıtım yoğunluğunu artırma ve veri yerelliğini iyileştirme etkisi bekleniyor
  • JEP 472: Prepare to Restrict the Use of JNI

    • JNI (Java Native Interface) kullanımı sırasında uyarılar eklenir
    • Foreign Function & Memory (FFM) API’de tutarlı uyarılar sunar
    • Gelecekte JNI ve FFM API kullanımını kısıtlamaya hazırlık için uyarılar sağlar
    • Gerekli olduğunda uygulamalarda arayüz isteğe bağlı olarak etkinleştirilebilir
  • JEP 475: Late Barrier Expansion for G1

    • G1 çöp toplayıcısının Barrier uygulamasını sadeleştirir
    • Barrier genişletme zamanını C2 JIT derleyicisinin erken aşamasından daha geç aşamasına kaydırır
  • JEP 478: Key Derivation Function API (önizleme)

    • Kriptografik anahtar türetme işlevi sağlayan Key Derivation Function (KDF) API’sini sunar
    • Gizli anahtar ve diğer veriler üzerinden ek anahtarlar türetilebilir
  • JEP 483: Ahead-of-Time Class Loading & Linking

    • HotSpot JVM başlatıldığında uygulama sınıflarını hemen kullanılabilir hale getirir
    • Bir çalıştırmada yüklenip bağlanan durumu önbelleğe alarak sonraki çalıştırmalarda daha hızlı başlangıç sağlar
  • JEP 484: Class-File API

    • Java class dosyalarının ayrıştırılması, oluşturulması ve dönüştürülmesi için standart bir API sağlar
  • JEP 485: Stream Gatherers

    • Stream API’ye kullanıcı tanımlı ara işlemler desteği ekler
    • Mevcut ara işlemlerle zor olan veri dönüşümlerini mümkün kılar
  • JEP 486: Permanently Disable the Security Manager

    • Security Manager, istemci tarafı kod için başlıca güvenlik mekanizması değildi
    • Java 17’de (JEP 411) kaldırılmak üzere devre dışı bırakılmıştı
    • Security Manager API’si gelecekteki sürümlerde tamamen kaldırılacak
  • JEP 487: Scoped Values (dördüncü önizleme)

    • İş parçacığı içinde değişmez veriyi alt iş parçacıklarıyla paylaşmak için Scoped Values sunar
    • Thread-local değişkenlere göre bellek ve zaman maliyetini azaltabilir
    • Sanal iş parçacıkları ve yapısal eşzamanlılıkla birlikte kullanıldığında performans artışı bekleniyor
  • JEP 488: Primitive Types in Patterns, instanceof, and switch (ikinci önizleme)

    • Pattern matching içinde ilkel türler için destek sağlar
    • instanceof ve switch içinde tüm ilkel türlerin kullanılmasını mümkün kılar
  • JEP 489: Vector API (dokuzuncu incubator)

    • Vektör işlemleri için bir API sunar
    • Vektör komutlarına derlenerek skaler işlemlere göre daha yüksek performans sağlaması beklenir
  • JEP 490: ZGC: Remove the Non-Generational Mode

    • ZGC’nin nesil-dışı modunu kaldırır ve nesil modunu varsayılan yapar
  • JEP 491: Synchronize Virtual Threads without Pinning

    • synchronized yapısında sanal iş parçacıklarının platform iş parçacıklarını serbest bırakmasını iyileştirir
    • Sanal iş parçacıklarının platform iş parçacıklarına sabitlenmesini önleyerek performans ve ölçeklenebilirliği artırır
  • JEP 492: Flexible Constructor Bodies (üçüncü önizleme)

    • Açık constructor çağrısından (super(..), this(..)) önce ifadelere izin verir
    • Instance tamamen başlatılmadan önce alanların başlatılmasını mümkün kılar
  • JEP 494: Module Import Declarations (ikinci önizleme)

    • Modül tarafından dışa aktarılan paketleri daha kolay içe aktarmaya yönelik bildirimler ekler
    • Modüler kütüphanelerin yeniden kullanımını sadeleştirir
  • JEP 495: Simple Source Files and Instance Main Methods (dördüncü önizleme)

    • Yeni başlayanların kolayca yazabileceği basit kaynak dosyaları ve yöntemleri destekler
    • Karmaşık kod olmadan basit programlar yazılmasını sağlar
  • JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism

    • Kuantuma dayanıklı Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM) sunar
    • Simetrik anahtar güvenliğini güçlendirir ve kuantum bilişim saldırılarına hazırlık sağlar
  • JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm

    • Kuantuma dayanıklı Module-Lattice-Based Digital Signature Algorithm (ML-DSA) sunar
    • Veri tahrifatına karşı korumayı ve imzalayan doğrulamasını güçlendirir
    • Gelecekteki kuantum bilişim saldırılarına karşı hazırlık sağlar
  • JEP 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe

    • sun.misc.Unsafe içindeki bellek erişim yöntemlerinin kullanımında uyarı verir
    • VarHandle API ve FFM API’ye geçiş önerilir
  • JEP 499: Structured Concurrency (dördüncü önizleme)

    • İlgili görev gruplarını tek bir iş birimi olarak ele alan yapısal eşzamanlılığı sunar
    • Hata işleme ve iptali sadeleştirir, güvenilirlik ve görünürlüğü iyileştirir

[JDK 24 yeni özellik özeti]

  • Configurable New Session Tickets Count for TLSv1.3

    • Yeni sistem özelliği jdk.tls.server.newSessionTicket eklendi
    • JSSE sunucusunda TLSv1.3 yeniden başlatma bileti sayısı ayarlanabilir (0~10 aralığı)
    • Varsayılan değer 1 olarak ayarlanmıştır
    • Komut örneği:
      java -Djdk.tls.server.newSessionTicket=2  
      
  • Mechanism to Disable TLS Cipher Suites by Pattern Matching

    • java.security yapılandırma dosyasında jdk.tls.disabledAlgorithms özelliği üzerinden TLS şifre paketleri devre dışı bırakılabilir
    • Pattern matching desteği vardır (_ joker karakteri kullanılabilir)
    • Örnek: "TLS_RSA_*", TLS_RSA ile başlayan tüm şifre paketlerini devre dışı bırakır
  • New Option to Extract a JAR File to a Specific Directory Using the jar Tool

    • jar aracına yeni --dir ve -C seçenekleri eklendi
    • Bir JAR dosyasının içeriği belirli bir dizine çıkarılabilir
    • Örnek:
      jar -xf foo.jar -C /tmp/bar/  
      jar --extract --file foo.jar --dir /tmp/bar/  
      
  • New Reader.of(CharSequence) Method

    • Yeni statik fabrika yöntemi java.io.Reader.of(CharSequence) eklendi
    • String, StringBuilder vb. kaynaklardan verimli okuma desteği sağlar
  • New Method Process.waitFor(Duration)

    • java.lang.Process#waitFor(Duration) yöntemi eklendi
    • Mevcut waitFor() kullanımındaki birim ayarı karışıklığını önler
  • Support for Unicode 16.0

    • Unicode 16.0 desteği eklendi
    • Toplam 154.998 karakter ve 7 yeni yazı sistemi eklendi
      • Garay (Batı Afrika)
      • Gurung Khema, Kirat Rai, Ol Onal, Sunuwar (Hindistan ve Nepal)
      • Todhri (Arnavutluk)
      • Tulu-Tigalari (güneybatı Hindistan)
  • New JAR Command Option to Not Overwrite Existing Files

    • jar aracına --keep-old-files ve -k seçenekleri eklendi
    • Mevcut dosyaların üzerine yazmayı engelleyebilir
    • Örnek:
      jar xkf foo.jar  
      jar --extract --keep-old-files --file foo.jar  
      
  • New MXBean to Monitor and Manage Virtual Thread Scheduler

    • jdk.management.VirtualThreadSchedulerMXBean arayüzü eklendi
    • Sanal iş parçacığı zamanlayıcısının durumu ve paralellik seviyesi izlenebilir
    • Zamanlayıcının hedef paralellik seviyesi dinamik olarak değiştirilebilir
  • New jcmd Commands Thread.vthread_scheduler and Thread.vthread_pollers

    • jcmd aracına yeni komutlar eklendi
      • Thread.vthread_scheduler: iş parçacığı zamanlayıcısı durumunu çıktılar
      • Thread.vthread_pollers: I/O poller durumunu çıktılar
  • Support for Including Security Properties Files

    • java.security yapılandırma dosyasında başka özellik dosyaları dahil edilebilir
    • include <dosya yolu> kullanılır
    • include anahtar sözcüğü özellik adı olarak kullanılamaz
  • Document Standard Hash and MGF Algorithms for RSASSA-PSS Signature

    • RSASSA-PSS imzasında kullanılabilen standart hash ve mesaj üretim işlevleri belgelenmiştir
  • SunPKCS11 Provider Is Enhanced to Use CKM_AES_CTS Mechanism

    • SunPKCS11 sağlayıcısına AES/CTS dönüşümü desteği eklendi
    • Yeni yapılandırma özelliği cipherTextStealingVariant eklendi (CS1, CS2, CS3)
    • NSS için varsayılan değer CS1 olarak ayarlanmıştır
  • New Summary Page for External Specifications

    • Java SE ve JDK API’lerinin referans verdiği dış spesifikasyonları topluca gösteren yeni bir özet sayfası eklendi
  • jpackage Supports WiX Toolset v4 and v5 on Windows

    • jpackage içinde WiX Toolset v4 ve v5 desteği eklendi
    • En güncel kurulu sürümü otomatik olarak seçer
    • WiX v3 biçimindeki kullanıcı tanımlı kaynakları otomatik olarak v4 biçimine dönüştürür
  • Add W3C DTDs and XSDs to the JDK Built-in Catalog

    • JDK’nin yerleşik XML kataloğuna W3C’nin DTD ve XSD’leri eklendi
    • Ağ bağlantısı olmadan yerelden yüklenebilir
    • Eklenen öğeler:
      • xml namespace
      • XML Schema Part 1 & 2
      • XHTML 1.0 & 1.1
      • W3C XML spesifikasyonu DTD’leri

4 yorum

 
clickin 2025-03-20

Project Valhalla gerçekten çok uzun süredir geliştiriliyor; umarım iyi bir sonuca ulaşır.
Kişisel olarak, value class'in düz yapısının pointer referanslarını azaltarak bellek erişim hızında önemli bir avantaj sağlayacağını düşünüyorum.

 
tsboard 2025-03-20

Kotlin’in (olumlu) etkilerini epey almış gibi görünüyor. Bu aralar Kotlin dilini kullanırken gerçekten çok memnunum; köken sayılabilecek Java’yı da destekliyorum.

 
carnoxen 2025-03-19

Structured Concurrency ve Scoped Value için beklentim gerçekten çok yüksek.

 
GN⁺ 2025-03-19
Hacker News yorumları
  • SecurityManager sessizce ortadan kalktı. Geçmişte Java seçmeli dersi veren profesörüm, SecurityManager’ın avantajlarını sık sık vurgulardı. O zamanlar buna oldukça şüpheyle yaklaşıyordum; şimdi ise bu şüphenin haklı çıktığını görmek tatmin edici

  • Yapısal eşzamanlılığın önizleme aşamasından çıkmasını istiyorum. Bu, Java’nın eşzamanlı programlama kolaylığı açısından golang ile arasındaki son farkı kapatmasına yardımcı oluyor. Go; channel ve wait group’ları kolaylaştırıyor. Yapısal eşzamanlılık, bu temel yapı taşlarını kullanarak daha yüksek seviyeli işleri yazmayı ve anlamayı kolaylaştırıyor

  • Sanal thread pinning’in ortadan kalkması büyük bir artı. Artık sanal thread’leri neredeyse sınırsız şekilde kullanmak mümkün

  • Streams’in hâlâ sevildiğini görmek güzel. Şirkette sık sık fizzbuzz tarzı mülakatlar yapıyoruz ve Java seçip stream kullanan adaylar genelde geçiyor. Bu, dilin ergonomisini, sezgiselliğini ve soyutlamanın gücünü gösteriyor. Java stream’leri, Ruby’nin fonksiyonel tarz işlem zincirleri kadar güçlü ama gerçekten iyi performans veriyor

  • Yeni özellikler: OpenJDK 24 proje bağlantısı

  • ARM32 ve Risc-V sürümleri yakında burada görülebilir

  • Raspberry 2 ve Vision Five 2, Oracle ile OpenJDK’nın görmezden geldiği oldukça ileri görüşlü donanımlar

  • OpenJDK ile resmî Oracle JDK sürümlerini kullanma arasındaki lisans farkına dair bir soru

  • JEP 491’den henüz bahsedilmemiş olmasına şaşırdım. Bu, synchronized anahtar kelimesinin sanal thread’leri bozmamasını garanti ediyor. Mevcut kodu sanal thread’lerde çalıştırmak için büyük bir avantaj

  • Java’nın sürüm ilerleyişi son birkaç yılda ilginçti. Java 9, 10, 11 LTS derken hâlâ Java 8 kullanıyorum. Yapılacak çok iş var

  • Java’nın en güncel sürümünü Kotlin ile karşılaştırınca, Java gelişmeye ve Kotlin’in bazı özelliklerini almaya devam ediyor; ama Kotlin de kendi başına gelişiyor

  • GraalVM de Java 24 ile kullanılabiliyor. Birçok iyi özellik var

  • Sanal thread’lerde pinning sonunda kaldırıldı