Eğitim Portalı/Java/Kaldırılmış ve Eski (Legacy) Özellikler
Java01-java/96-kaldirilmis-ve-eski-ozellikler

Kaldırılmış ve Eski (Legacy) Özellikler

Java 25+ yıllık bir dildir ve geriye dönük uyumluluğa büyük önem verir. Yine de zamanla bazı özellikler kullanımdan kaldırılır (deprecated) ve sonunda silinir (removed). Bir geliştirici olarak, eski öğretici/kod örnek…

Kaldırılmış ve Eski (Legacy) Özellikler

Java 25+ yıllık bir dildir ve geriye dönük uyumluluğa büyük önem verir. Yine de zamanla bazı özellikler kullanımdan kaldırılır (deprecated) ve sonunda silinir (removed). Bir geliştirici olarak, eski öğretici/kod örneklerinde bunlara rastlayabilir ve "neden çalışmıyor?" diye şaşırabilirsin. Bu konu, tarihsel ama artık önerilmeyen/kaldırılmış özellikleri ve modern karşılıklarını topluca ele alır — böylece neyi kullanmayacağını bilirsin.

Bu konunun örneği, kaldırmaları çalışan kanıtla gösterir (örn. Nashorn motorunun artık bulunmadığı). Applet gibi tamamen kaldırılan özellikler çalıştırılamaz; yalnızca tarihsel olarak anlatılır.

Tamamen kaldırılanlar (artık çalışmaz)

ÖzellikNeydiNe zamanModern karşılığı
Applet (java.applet)Tarayıcıda çalışan JavaKullanımdan kalktı, JDK'dan kaldırıldıWeb (Spring Boot + JS), masaüstü için JavaFX/Swing
NashornJDK'nın JavaScript motoruJava 11 deprecated, 15 kaldırıldıGraalVM JavaScript (ayrı bağımlılık)
CORBA, Java EE modülleri (JAXB, JAX-WS)Dağıtık/XML standartlarıJava 11 kaldırıldıAyrı Maven/Gradle bağımlılıkları
Thread.stop/suspend/resumeThread kontrolüÇok eski, deprecatedinterrupt() + bayrak (topic 15)

Örnek 1 (./Ornek1.java) ScriptEngineManager ile Nashorn'un artık olmadığını kanıtlar (motor null, yerleşik motor sayısı genelde 0).

Deprecated (çalışır ama kullanma)

  • finalize(): Nesne çöpe atılmadan önce çağrılırdı; öngörülemez (ne zaman/çağrılır mı belirsiz), performansı bozar. Java 9'da deprecated. → try-with-resources (AutoCloseable) veya java.lang.ref.Cleaner.
  • Security Manager: Java 17'de deprecated (kaldırılacak).
  • İlkel wrapper constructor'ları (new Integer(5)): deprecated. → Integer.valueOf(5) veya autoboxing.

"Çalışır ama eski" (modern karşılığı tercih edilir)

Bunlar kaldırılmadı ama yeni kodda kullanılmaması önerilir:

EskiModern (tercih)Konu
Date, Calendar, SimpleDateFormatjava.time (LocalDate...)topic 88
Vector, Stack, HashtableArrayList, ArrayDeque, HashMaptopic 45
EnumerationIterator / for-eachtopic 45
new URL(String)URI + toURL()topic 32
Java serileştirmeJSON (Jackson) / Protobuftopic 68

Neden özellikler kaldırılır?

  • Güvenlik: Applet'ler büyük güvenlik açıklarıydı.
  • Bakım yükü: Az kullanılan ama bakımı pahalı özellikler (Nashorn).
  • Daha iyi alternatif: java.time, Cleaner gibi modern, doğru tasarlanmış API'ler.
  • Modülerlik: Java EE modülleri çekirdekten çıkarılıp bağımsız projelere taşındı.

Pratik ders

  • Bir API'nin var olması, onu kullanman gerektiği anlamına gelmez. Deprecated işaretine ve IDE uyarılarına dikkat et (topic 81).
  • Sürüm notlarını izle: LTS'ler arası geçişte (8→11→17→21) kaldırılan özellikler en sık geçiş sorunudur (topic 21).
  • Eski örnek/öğretici görürsen, modern karşılığını tercih et (bu portaldaki konular hep modern yolu gösterir).

Özet

Java'nın zamanla kaldırdığı/önermediği özellikleri öğrendik: tamamen kaldırılanlar (Applet, Nashorn, CORBA/Java EE — kanıtla, Örnek 1), deprecated olanlar (finalize, Security Manager) ve "çalışır ama eski" olanlar (Date, Vector, Enumeration...) ve hepsinin modern karşılıkları; neden kaldırıldıklarını ve pratik dersi gördük. Bu, listedeki tarihsel/niş başlıkları kapsayarak Java bölümünün kapsamını tamamlıyor.

Kod Örnekleri(1)

Ornek1

çalıştırılabilir
Ornek1.java
1// Ornek1: Kaldırılmış/eski özellikler — çalışan kanıt (Nashorn yok) ve modern karşılıkları.
2// Çalıştırma: java Ornek1.java
3import javax.script.ScriptEngine;
4import javax.script.ScriptEngineManager;
5
6public class Ornek1 {
7
8    public static void main(String[] args) {
9        // NASHORN (JavaScript motoru): Java 8'de geldi, Java 11'de deprecated, Java 15'te KALDIRILDI.
10        ScriptEngineManager yonetici = new ScriptEngineManager();
11        ScriptEngine nashorn = yonetici.getEngineByName("nashorn");
12        System.out.println("Nashorn JS motoru: " + (nashorn == null ? "YOK (Java 15'te kaldırıldı)" : "var"));
13        System.out.println("Yerleşik script motoru sayısı: " + yonetici.getEngineFactories().size()
14                + " (Nashorn gidince genelde 0)");
15        System.out.println("  -> Modern alternatif: GraalVM JavaScript (ayrı bağımlılık).");
16
17        // finalize(): nesne yok edilmeden önce çağrılırdı; öngörülemez, Java 9'da deprecated.
18        System.out.println("\nfinalize(): kullanma! -> try-with-resources (AutoCloseable) veya java.lang.ref.Cleaner.");
19
20        // Eski tarih API'si: Date/Calendar -> java.time (topic 88)
21        System.out.println("Date/Calendar -> java.time (LocalDate/LocalDateTime) ile değiştirildi.");
22
23        System.out.println("""
24
25                --- Kaldırılmış ve eski (legacy) özellikler ---
26                Java sürümler boyunca bazı özellikleri kullanımdan kaldırır/siler. Bilmen gerekenler:
27                  APPLET (java.applet): tarayıcıda çalışan Java; güvenlik nedeniyle terk edildi, JDK'dan KALDIRILDI.
28                    -> Yerine: web (Spring Boot + JS), masaüstü için JavaFX/Swing.
29                  NASHORN: JDK'nın JavaScript motoru; Java 15'te kaldırıldı. -> GraalVM JS.
30                  finalize(): öngörülemez yıkıcı; deprecated. -> try-with-resources / Cleaner.
31                  CORBA, Java EE modülleri (JAXB/JAX-WS): Java 11'de kaldırıldı. -> ayrı bağımlılıklar.
32                  Security Manager: deprecated (Java 17).
33                  Date/Calendar, Vector/Stack/Hashtable: 'çalışır ama eski'; modern karşılıkları tercih edilir.
34                Ders: bir özelliğin var olması onu KULLANMAN gerektiği anlamına gelmez; sürüm notlarını izle.""");
35    }
36}
Çıktı yerel JDK 21 ile yakalandı — tarayıcıda JVM çalışmaz.