Java 22 Yenilikleri (2024)
> ⚠️ Bu konuda çalıştırılabilir örnek yoktur. Bu portal JDK 21 üzerinde çalışır; Java 22+ > özellikleri burada derlenmez. Aşağıdaki kod parçacıkları JDK 22 gerektirir ve yalnızca > tanıtım amaçlıdır. Çalışan sürümler…
Java 22 Yenilikleri (2024)
⚠️ Bu konuda çalıştırılabilir örnek yoktur. Bu portal JDK 21 üzerinde çalışır; Java 22+ özellikleri burada derlenmez. Aşağıdaki kod parçacıkları JDK 22 gerektirir ve yalnızca tanıtım amaçlıdır. Çalışan sürümler için Java 8–21 konularına bak.
Java 22 (Mart 2024), LTS olmayan bir sürüm olsa da geliştirici deneyimini iyileştiren birkaç önemli özellik standartlaştırdı ve gelecekteki büyük özellikleri önizledi.
İsimsiz değişkenler ve desenler — _ (JEP 456, standart)
Kullanmadığın bir değişkeni/deseni _ ile işaretlersin — niyeti netleştirir, "kullanılmayan
değişken" uyarısını giderir:
// Yakaladığın ama kullanmadığın istisna: try { riskli(); } catch (NumberFormatException _) { System.out.println("geçersiz sayı"); } // Record pattern'de ilgilenmediğin alan: if (nokta instanceof Nokta(int x, _)) { ... } // y'yi umursamıyoruz // Döngüde kullanılmayan değişken: for (var _ : liste) sayac++;
Foreign Function & Memory API (JEP 454, standart)
JNI'nin modern, güvenli halefi: Java'dan yerel (native) C kütüphanelerini ve yönetilmeyen belleği doğrudan çağırmanın standart yolu (uzun süre önizlemeydi, 22'de standartlaştı):
// C kütüphanesindeki bir fonksiyonu çağırmak (kavramsal): Linker linker = Linker.nativeLinker(); MethodHandle strlen = linker.downcallHandle( linker.defaultLookup().find("strlen").orElseThrow(), FunctionDescriptor.of(JAVA_LONG, ADDRESS));
Çok dosyalı kaynak programları çalıştırma (JEP 458)
Java 11'in tek-dosya çalıştırmasını genişletir: artık birden çok .java dosyasına bölünmüş bir
programı, önceden derlemeden tek komutla çalıştırabilirsin:
java Ana.java # Ana.java başka .java dosyalarına başvursa bile derlemeden çalışır
Statements before super(...) (JEP 447, önizleme)
Bir constructor'da super(...)/this(...) çağrısından önce ifade yazabilme (argümanları
doğrulama/hazırlama için) — eskiden ilk satır olmak zorundaydı:
Cocuk(int x) { if (x < 0) throw new IllegalArgumentException(); // super'den ÖNCE (Java 22 önizleme) super(x); }
Önizlemeler (sonraki sürümlerde olgunlaşacak)
- Stream Gatherers (JEP 461, önizleme): özel ara stream işlemleri (
map/filtergibi ama kendi yazdığın) — Java 24'te standart oldu. - String Templates (JEP 459, 2. önizleme):
STR."Merhaba \{ad}". - Structured Concurrency (2. önizleme), Scoped Values (2. önizleme).
- Implicit Classes & Instance Main (2. önizleme): sade
void main()— Java 25'te standart.
Özet
Java 22'nin geliştirici-dostu yeniliklerini gördük: standartlaşan isimsiz değişkenler (_) ve
Foreign Function & Memory API, çok dosyalı kaynak çalıştırma; super() öncesi ifadeler ve Stream
Gatherers/String Templates önizlemeleri. (Hepsi JDK 22+ gerektirir; bu portal JDK 21'dir.) Sırada,
Java 23.