MAPPING RELATIONSHIPS IN JAVA: WORKING WITH INTERFACES & CLASS LOADERS EĞİTİMİ

Interface ve sınıf yükleme mekanizmasını çözün

interface ve default metotlar, Strategy deseni, ClassLoader hiyerarşisi, özel loader, ServiceLoader ve jar hell teşhisi.

Java'da interface tasarımını ve JVM sınıf yükleme mekanizmasını öğrenin: Bootstrap/Platform/App ClassLoader, özel loader, ServiceLoader, reflection ve jar hell teşhisi.

2 gün Orta Seviye Online / Yüz Yüze / Hibrit Sertifikalı

Eğitim Hakkında

Interface sözleşmeleri ve JVM'in sınıf yükleme mekanizması

Eğitim iki ilişki katmanını birleştirir: kod düzeyindeki interface sözleşmeleri ve çalışma zamanındaki sınıf yükleme. default/static/private interface metotları, Strategy deseni, sealed interface ve record kullanımı uygulanır. Bootstrap, Platform ve Application ClassLoader hiyerarşisi, üst delegasyon, loading-linking-initialization aşamaları, NoClassDefFoundError analizi ele alınır. Özel ClassLoader, URLClassLoader, ServiceLoader ve reflection ile eklenti mimarisi kurulur; classpath ve modül yolu sorunları teşhis edilir.

Süre ve Format

2 Gün. Her gün dört modül; Interface ve Dinamik Yükleme; Class Loader İç Yapısı ekseninde ilerleyen uygulamalı program.

Seviye

Orta Seviye — Java'da interface tasarımı, Strategy ve sealed arayüzler, ClassLoader hiyerarşisi, özel loader, reflection ve ServiceLoader.

Öğrenme Metodu

Küçük bir eklenti sistemi inşa edilir; sınıf yükleme -verbose:class çıktılarıyla gözlenir ve hatalar bilinçli üretilip çözülür.

Neden Bu Eğitim?

🔌Eklenti Mimarisi

Interface ve ServiceLoader ile derleme zamanı bilinmeyen modülleri yüklersiniz.

🧭Hata Teşhisi

NoClassDefFoundError ve jar hell sorunlarını sistematik çözersiniz.

📐Arayüz Tasarımı

Strategy ve sealed interface ile esnek sözleşmeler kurarsınız.

Anahtar Konular

java interfacejava classloaderjava default methodjava strategy patternjava serviceloaderjava reflectionjava jar helljava NoClassDefFoundErrorjava plugin mimarisijava eğitimi
“Arayüz sözleşmeyi, ClassLoader ise o sözleşmenin nerede yaşadığını belirler.”

Ön Koşullar

Eğitimden verim almak için faydalı olacak bilgi ve ortam gereksinimleri

1
Java Sınıfları

Kalıtım ve interface temel bilgisi gerekir.

2
JDK 17+

JDK 17+ ve komut satırı araçları kurulu olmalıdır.

3
Maven

JAR üretimi için Maven bilgisi faydalıdır.

4
Terminal

Java komutlarını terminalden çalıştırabilmek gerekir.

Eğitim İçeriği

Programın gün gün akışı aşağıdadır. Bir güne tıklayarak o günün modüllerini ve içeriklerini görebilirsiniz.

Günün hedefiKatılımcı interface tabanlı esnek tasarımlar geliştirir, reflection ve ServiceLoader ile dinamik yükleme yapar.
Modül 1
Interface Tanımı ve Kullanımı
  • interface ile sözleşme tanımı ve implements
  • Çoklu interface uygulama
  • default, static ve private interface metotları
  • Sabitler (public static final) ve marker interface
  • Functional interface ve @FunctionalInterface
  • Soyut sınıf ile interface seçim kriterleri
Modül 2
Interface Tasarım Kalıpları
  • Strategy deseni ile davranışı interface'e taşıma
  • Programlamayı uygulamaya değil arayüze yapma
  • Comparable ve Comparator arayüzleri
  • Sealed interface ve record ile cebirsel veri tipleri
  • Default metotta elmas çözümlemesi
  • Interface'e metot eklemenin geriye dönük uyumluluğu
Modül 3
Dinamik Yükleme ve Reflection
  • Class.forName ile ada göre sınıf yükleme
  • Constructor, Method ve Field reflection API
  • ServiceLoader ve META-INF/services
  • İnterface ile eklenti mimarisi kurma
  • MethodHandles ve reflection maliyeti
  • Spring ve Tomcat'te ClassLoader kullanımı
Modül 4
Classpath ve Modül Yolu
  • classpath, -cp ve JAR sırası sorunları
  • Aynı sınıfın birden çok JAR'da bulunması (jar hell)
  • Modül yolu (--module-path) ve otomatik modüller
  • jdeps ve jlink ile çalışma zamanı küçültme
  • Context ClassLoader ve Thread ilişkisi
  • Sınıf yükleme sorunlarını teşhis kontrol listesi
Günün hedefiKatılımcı ClassLoader hiyerarşisini ve yükleme aşamalarını açıklar, özel loader ile eklenti sistemi kurar.
Modül 1
ClassLoader Hiyerarşisi
  • Bootstrap, Platform ve Application class loader
  • Üst delegasyon (parent delegation) modeli
  • Class.getClassLoader() ve null dönen durumlar
  • Sınıfın JVM'de ad + loader ile tanımlanması
  • verbose:class ile yükleme sırasını izleme
  • Java 8 ile 9+ arasında ClassLoader değişiklikleri
Modül 2
Sınıf Yükleme Aşamaları
  • Loading, linking (verify, prepare, resolve) ve initialization
  • Sınıf başlatma tetikleyicileri
  • static initializer çalışma anı örnekleri
  • NoClassDefFoundError ile ClassNotFoundException farkı
  • Metaspace ve sınıf meta verisi
  • Bytecode doğrulayıcı (verifier) rolü
Modül 3
Özel ClassLoader Yazımı
  • ClassLoader'dan türetme ve findClass ezme
  • defineClass ile bayt dizisinden sınıf üretme
  • Dosya sisteminden ve URL'den sınıf yükleme
  • URLClassLoader ile eklenti (plugin) yükleme
  • Ayrı loader'larla sürüm çakışmasını izole etme
  • Loader sızıntısı ve sınıf boşaltma
Modül 4
Lab: Eklenti Sistemi
  • Plugin arayüzünün ayrı JAR olarak tanımlanması
  • Her eklenti için ayrı URLClassLoader oluşturma
  • Eklentiyi çalışırken yeniden yükleme (hot reload)
  • Eski loader'ın GC ile boşaltılmasını doğrulama
  • Eklenti sürüm çakışmasını izolasyonla çözme
  • Eklenti hatalarını ana uygulamadan yalıtma

Eğitim Kazanımları

Program sonunda katılımcılar:

✅
Interface Tasarımı

default ve static metotlu interface'ler tasarlayabilirsiniz.

🧩
Strategy Deseni

Davranışı interface arkasına taşıyarak esnek kod yazabilirsiniz.

⚙
Sealed Interface

sealed interface ve record ile kapalı tip kümeleri kurabilirsiniz.

️
ClassLoader Hiyerarşisi

Üst delegasyon modelini açıklayabilirsiniz.

🔍
Yükleme Aşamaları

Loading, linking ve initialization adımlarını ayırt edebilirsiniz.

🛠
Özel Loader

findClass ile özel ClassLoader yazabilirsiniz.

️
ServiceLoader

Eklenti mimarisini ServiceLoader ile kurabilirsiniz.

🧪
Sorun Teşhisi

Classpath çakışmalarını ve NoClassDefFoundError'u çözebilirsiniz.

Kimler İçin Uygundur?

  • Java uygulama geliştiricileri
  • uygulama sunucusu
  • eklenti mimarisi ile çalışan yazılımcılar ve sistem mimarları için uygundur

Sıkça Sorulan Sorular

Bu eğitim kimler için uygundur?
Java uygulama geliştiricileri, uygulama sunucusu ve eklenti mimarisi ile çalışan yazılımcılar ve sistem mimarları için uygundur.
ClassNotFoundException ile NoClassDefFoundError farkı nedir?
Birincisi ada göre yükleme sırasında sınıfın bulunamamasıdır; ikincisi derleme zamanında var olan sınıfın çalışmada yüklenememesidir. Eğitimde ikisi de üretilir.
Özel ClassLoader günlük işte gerekir mi?
Eklenti sistemleri, uygulama sunucuları ve sürüm izolasyonunda gerekir; eğitimde gerçek senaryolar işlenir.
Interface mi soyut sınıf mı tercih edilmeli?
Durum taşıma ve ortak kod gerekiyorsa soyut sınıf, sözleşme ve çoklu uygulama için interface seçilir.
Eğitim sonunda sertifika verilir mi?
Katılım ve değerlendirme sonrasında Digital Vizyon Akademi Katılım ve Başarı Sertifikası verilir.

Sertifikalandırma

Bu eğitim Digital Vizyon Akademi Başarı Sertifikası ile tamamlanır.

Eğitim başında “Ön Test”, bitiminde “Son Test” uygulanarak gelişim ölçümlenir. Değerlendirme formunu dolduran katılımcılar sertifikalarını alır. Sertifikanızın geçerliliğini Sertifika Sorgulama sayfasından doğrulayabilirsiniz.

Örnek Sertifika d Digital Vizyon AKADEMİ KATILIM SERTİFİKASI Bu sertifika [Katılımcı Adı Soyadı] adlı katılımcının aşağıdaki eğitim programını başarıyla tamamladığını belgeler. Mapping Relationships in Java: Working with Interfaces & Cla Sertifika Kodu DV-2026XX00 Tarih 27.10.2026 Yetkili İmza DV AKADEMİ

Eğitim Bilgileri

Süre2 gün
SeviyeOrta Seviye
FormatOnline / Yüz Yüze / Hibrit
Sertifika✓ Var
Hemen Bilgi Al
İlgili Eğitimler

Bu Eğitimle Birlikte Tercih Edilenler

Java ve JVMFundamentals of Apache Maven for Java Developers Eğitimi
Yazılım Geliştirme Eğitimleri

Fundamentals of Apache Maven for Java Developers Eğitimi

2 günTemelOnline / Yüz Yüze / Hibrit

Apache Maven temelleri eğitimi: pom.xml, build lifecycle, bağımlılık scope'ları, transitif bağımlılık, eklentiler, profiller, Surefire ve paketleme ile uygulama

Detayları Gör →
Java ve JVMGenerics in Java: Bounded Type Parameters & Wildcards Eğitimi
Yazılım Geliştirme Eğitimleri

Generics in Java: Bounded Type Parameters & Wildcards Eğitimi

2 günİleriOnline / Yüz Yüze / Hibrit

Java generics ileri eğitimi: bounded type parameter, wildcard, PECS kuralı, type erasure, recursive bound ve @SafeVarargs ile tip güvenli API tasarımı.

Detayları Gör →
Java ve JVMGenerics in Java: Creating Classes and Methods Using Generics Eğitimi
Yazılım Geliştirme Eğitimleri

Generics in Java: Creating Classes and Methods Using Generics Eğitimi

2 günOrtaOnline / Yüz Yüze / Hibrit

Java generics ile sınıf ve metot yazma eğitimi: generic sınıf, arayüz, metot, diamond operatörü, Comparable sınırı, Iterable gerçekleme ve generic repository uy

Detayları Gör →
Java ve JVMGetting Started with Gradle for Spring Boot Eğitimi
Yazılım Geliştirme Eğitimleri

Getting Started with Gradle for Spring Boot Eğitimi

2 günOrtaOnline / Yüz Yüze / Hibrit

Spring Boot için Gradle eğitimi: build.gradle, Kotlin DSL, Spring Boot plugin, bootJar, bootBuildImage, çok projeli yapı, version catalog ve CI entegrasyonu.

Detayları Gör →
Java ve JVMGetting Started with Java: Operators Eğitimi
Yazılım Geliştirme Eğitimleri

Getting Started with Java: Operators Eğitimi

2 günBaşlangıçOnline / Yüz Yüze / Hibrit

Java operatörleri eğitimi: aritmetik, atama, karşılaştırma, mantıksal, bitwise, shift, üçlü operatör, öncelik kuralları ve integer overflow örnekleriyle başlang

Detayları Gör →
+90 (501) 369 40 14 WhatsApp [email protected] LinkedIn