Eğitim Portalı/Java/Java 22 Yenilikleri (2024)
Java01-java/102-java22-yenilikleri

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/filter gibi 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.