Eğitim Portalı/Java/Java 25 Yenilikleri (2025, LTS) — En Yeni Sürüm
Java01-java/105-java25-yenilikleri

Java 25 Yenilikleri (2025, LTS) — En Yeni Sürüm

> ⚠️ Bu konuda çalıştırılabilir örnek yoktur. Portal JDK 21 üzerinde çalışır; Java 25 > özellikleri burada derlenmez. Kod parçacıkları JDK 25 gerektirir, tanıtım amaçlıdır.

Java 25 Yenilikleri (2025, LTS) — En Yeni Sürüm

⚠️ Bu konuda çalıştırılabilir örnek yoktur. Portal JDK 21 üzerinde çalışır; Java 25 özellikleri burada derlenmez. Kod parçacıkları JDK 25 gerektirir, tanıtım amaçlıdır.

Java 25 (Eylül 2025), Java 21'den sonraki LTS sürümüdür ve şu an itibarıyla en yeni LTS'tir. Son yılların önizleme özelliklerinin büyük kısmını standartlaştırarak, hem yeni başlayanlar için giriş engelini düşürdü hem de büyük uygulamalar için güçlü araçlar ekledi.

Sade kaynak dosyaları ve void main() (JEP 512, standart)

Belki de yeni başlayanlar için en büyük değişiklik: artık "Merhaba Dünya" için sınıf, public static, String[] args gerekmiyor:

// Java 25 — tüm program bu kadar:
void main() {
    IO.println("Merhaba Dünya!");
}

Karşılaştır — eski (ve hâlâ geçerli) tam biçim:

public class Merhaba {
    public static void main(String[] args) {
        System.out.println("Merhaba Dünya!");
    }
}

Sade biçim öğrenmeyi kolaylaştırır; öğrenci public static void main(String[]) ve class kavramlarını henüz öğrenmeden çalışan kod yazar. (Java 21-24 boyunca önizlemeydi, 25'te standart.) Yeni java.lang.IO sınıfı println/readln sağlar.

Modül import bildirimleri (JEP 511, standart)

Bir modülün tüm dışa açık paketlerini tek satırda içe aktarma:

import module java.base;     // java.util, java.io, java.time... hepsi tek satırda
List<String> l = List.of("a", "b");   // ayrı ayrı import gerekmez

Hızlı prototipleme ve betiklerde import gürültüsünü azaltır.

Esnek constructor gövdeleri (JEP 513, standart)

super(...)/this(...) çağrısından önce ifade yazabilme (argüman doğrulama/hazırlama):

Cocuk(int x) {
    if (x < 0) throw new IllegalArgumentException("negatif");  // super'den ÖNCE
    var hazirlanmis = x * 2;
    super(hazirlanmis);
}

Eskiden super() ilk satır olmak zorundaydı; bu da argüman doğrulamayı zorlaştırıyordu.

Scoped Values (JEP 506, standart)

ThreadLocal'a modern, değişmez ve sanal-thread-dostu alternatif: bir değeri belirli bir çağrı kapsamı boyunca (ve alt thread'lere) güvenle paylaşma:

final static ScopedValue<Kullanici> AKTIF_KULLANICI = ScopedValue.newInstance();

ScopedValue.where(AKTIF_KULLANICI, kullanici).run(() -> {
    // bu blok ve çağırdığı her şey AKTIF_KULLANICI.get() ile değere erişir
});

Sanal thread'lerle (milyonlarca thread) ThreadLocal'dan çok daha verimli ve güvenlidir.

Diğer öne çıkanlar

  • Compact Object Headers (JEP 519): nesne başlıklarını küçülterek bellek tasarrufu.
  • Generational Shenandoah (JEP 521): düşük gecikmeli GC'nin kuşak-temelli hali.
  • JFR geliştirmeleri (CPU profilleme, metot zamanlama): üretim profillemesi güçlendi.
  • Key Derivation Function API (JEP 510) ve PEM kodlama (JEP 470): kriptografi ekleri.
  • AOT method profiling / komut satırı ergonomisi (JEP 514/515): başlangıç performansı (Project Leyden).

Önizlemeler (gelecekte olgunlaşacak)

  • Stable Values (JEP 502): bir kez hesaplanıp sabitlenen, tembel (lazy) değerler.
  • Primitive Types in Patterns (3. önizleme), Structured Concurrency (5. önizleme), Vector API (inkübatör devam).

LTS seçimi: bugün hangisi?

  • Java 21: Yaygın, olgun, geniş kütüphane/araç desteği — bugünün güvenli üretim tabanı.
  • Java 25: En yeni LTS; sade void main, scoped values, daha iyi GC/başlangıç. Kütüphane ve araç ekosistemi olgunlaştıkça yeni projeler için tercih olacak.
  • Geçiş (21 → 25): Genelde düşük riskli; en büyük kazanımlar başlangıç performansı, bellek (compact headers) ve scoped values. Önizleme özelliklerini üretimde kullanma (bayrak gerektirir).

Özet — sürüm yolculuğunun sonu

Java 25 (en yeni LTS) ile sürüm bölümünü tamamladık: öğrenmeyi kolaylaştıran sade void main(), modül import bildirimleri, esnek constructor gövdeleri, Scoped Values (hepsi standart), ve bellek/GC/başlangıç iyileştirmeleri. Java 8'in lambda devriminden (topic 54) Java 25'in sadeleştirmelerine kadar gelen bu yolculuk, dilin güvenlik, üretkenlik ve performans ekseninde sürekli evrildiğini gösterir. Genel resim için topic 20 (Sürüm Evrimi 8→25) ve topic 21 (Sürüm Geçişi: riskler ve kazanımlar) konularına da bak.