JAVA İLERİ EĞİTİMİ
Temel Java bilen geliştirici küçük uygulamayı yazabilir. Ama kurumsal Java projesinde aynı kişi takılır: thread havuzları, eşzamanlılık, generic koleksiyonlar, Stream API ile fonksiyonel yaklaşım, JVM bellek yönetimi — bu konuları bilmek temel ile ileri arasındaki sınırı çizer. Senior geliştirici olmak için Java'nın iç yapısını ve modern özelliklerini bilmek gerekir.
Java İleri Eğitimi, Java'da senior düzeye geçişi sağlayan konuları kapsar. Çoklu iş parçacığı (Thread, Runnable, ExecutorService), eşzamanlılık (synchronized, lock, volatile), generic'ler ve type erasure, Stream API ve fonksiyonel programlama, Lambda ifadeleri ve metod referansları, Optional, modern Java özellikleri (Java 17+: record, sealed class, pattern matching), JVM bellek yapısı ve garbage collection işlenir.
Java İleri Eğitimi, junior'dan senior'a geçen Java geliştiricileri, kurumsal yazılım sektöründe ilerleyen profesyoneller, Spring framework eğitimi öncesi temel atmak isteyenler için tasarlanmıştır. Eğitim sonunda katılımcı, modern Java'nın gücünü gerçek projelerde kullanabilir.
Ön Koşullar
Java İleri Eğitimi için ön koşul, Java temel düzeyde bilgi sahibi olmak ve nesne tabanlı programlama prensiplerini bilmektir. En az 1-2 yıl Java pratiği avantajdır.
Kimler Katılmalı
- Junior'dan Senior'a Geçen Java Geliştiricileri: Derinleşmek isteyen yazılımcılar
- Kurumsal Yazılım Sektörü Çalışanları: Banka, sigorta, telekom yazılımcıları
- Spring Framework Eğitimi Öncesi Temel Atmak İsteyenler: Modern Java'ya geçişte güçlü temel arayanlar
- JVM Performans Optimizasyonu Yapan Profesyoneller: GC ve memory tuning ile ilgilenenler
- Çoklu İş Parçacığı Yazılımı Geliştirenler: Eşzamanlılık derinleşmesi arayanlar
- Modern Java (17+) Özelliklerine Geçmek İsteyenler: Yeni dil özellikleri öğrenmek isteyenler
- Mimari Tasarım Yapan Tech Lead Adayları: Java derinliğini liderlik için arayanlar
Eğitim Yöntemi
Sunum, çoklu iş parçacığı atölyesi, Stream API ve Lambda egzersizi, modern Java (record, sealed) demo ve katılımcının kendi senior düzey vakaları üzerinden grup analizi ile yürür.
Kazanımlar
- Çoklu İş Parçacığı: Thread, Runnable, ExecutorService kullanımı
- Eşzamanlılık: synchronized, lock, volatile ile yarış koşulu yönetimi
- Generic'ler: Type erasure ve generic koleksiyonlar
- Stream API: Fonksiyonel yaklaşımla koleksiyon işleme
- Lambda İfadeleri: Fonksiyon arabirimleri ile özlü kod yazımı
- Modern Java (17+): record, sealed class, pattern matching
- JVM ve Garbage Collection: Bellek yapısı ve GC ayarları
Eğitim Süresi
4 Gün (32 Saat). Kurumsal talebe göre 3 günlük yoğun veya 5 günlük uygulamalı versiyon olarak planlanabilir.
Java İleri Eğitimi İçeriği
1. Senior Java'nın Konusu
- Junior'dan ileri seviyeye geçişte sınır noktaları
- Üretim Java kodu okuma alışkanlığı
- Performans ve sürdürülebilirlik dengesi
- Modern Java'nın iş hayatında karşılığı
2. Generic'lerin Derinleşmesi
- Bounded type parameter kullanımı
- Wildcard'larda PECS kuralı
- Type erasure ve runtime sınırları
- Generic metot tasarımı
- Generic ile koleksiyon güvenliği
3. Lambda İfadeleri ve Functional Interface
- Lambda sözdiziminin iç işleyişi
- Closure ve effectively final kavramı
- Built-in functional interface'ler
- Composing lambda'lar (andThen, compose)
- Lambda ile davranış parametrelendirme
4. Stream API Derinlemesine
- Stream pipeline mimarisi
- Intermediate ve terminal operasyonlar
- Stateful operasyonlar (sorted, distinct)
- Reduce ve collect derin kullanımı
- Parallel stream ve dikkat noktaları
5. Collectors ve Custom Toplayıcılar
- groupingBy ve partitioningBy
- Downstream collector zincirleme
- toMap ve merge fonksiyonu
- Custom collector tasarımı
6. Optional ve Null Güvenliği
- Optional kullanım senaryoları
- map, flatMap, orElse kullanımı
- Optional zincir kalıpları
- Yaygın Optional anti-pattern'leri
7. Çoklu İş Parçacığı (Threads)
- Thread life cycle ve durum geçişleri
- Daemon ve user thread farkı
- Thread priority ve scheduler
- Interrupt mekanizması
- ThreadLocal kullanımı
8. Senkronizasyon ve Lock Mekanizmaları
- synchronized blok ve metotlar
- ReentrantLock ve ReadWriteLock
- volatile semantiği
- Happens-before ilişkisi
- Memory model temelleri
9. ExecutorService ve Thread Pool
- Executors fabrika metotları
- ThreadPoolExecutor parametreleri
- Future ve Callable
- CompletableFuture ile asenkron pipeline
- Graceful shutdown stratejileri
10. Concurrent Collection ve Atomic'ler
- ConcurrentHashMap iç yapısı
- CopyOnWriteArrayList kullanım alanı
- BlockingQueue ile producer-consumer
- AtomicInteger, AtomicReference
- StampedLock ve LongAdder
11. Reactive Streams ve Asenkron Yaklaşım
- Reactive Streams arayüzleri
- Publisher, Subscriber ve backpressure
- Flow API (Java 9+)
- Project Reactor genel bakış
12. Modern Java Dil Özellikleri (8-17)
- var ile local variable tip çıkarımı
- Text blocks ile çok satırlı string
- Switch expression yeni sözdizimi
- Records ve veri taşıyıcı sınıflar
- Sealed sınıflar ile kapalı hiyerarşi
13. Pattern Matching
- instanceof pattern matching
- Switch pattern matching
- Deconstruction pattern (önizleme)
- Pattern matching ile temiz kod
14. JVM Bellek Yapısı
- Heap, stack ve metaspace
- Young, old generation ayrımı
- String pool ve constant pool
- Method area ve class loader
- OutOfMemoryError çeşitleri
15. Garbage Collection
- GC algoritmaları (G1, ZGC, Shenandoah)
- Minor ve major GC
- GC tuning parametreleri
- GC log analizi
- Latency ve throughput dengesi
16. Class Loader Mekanizması
- Bootstrap, platform, application loader
- Custom class loader örnekleri
- Java modül sistemi (JPMS)
- Service loader pattern
17. Annotation ve Reflection
- Built-in annotation kullanımı
- Custom annotation oluşturma
- Reflection API ile dinamik erişim
- Annotation processor temelleri
18. Kurumsal Pattern'lar
- Builder, Factory, Singleton modern uygulamaları
- Strategy ve Template Method
- Observer ve event-driven yaklaşım
- Dependency Injection prensipleri
- Anti-pattern'leri tanıma
19. Profiling ve Performance
- JMH ile mikro-benchmark
- JFR ve Mission Control
- Heap dump analizi
- Thread dump okuma
- Performans optimizasyon disiplini
20. Spring Öncesi Hazırlık
- IoC ve DI kavramları
- POJO bazlı tasarım
- Modüler proje yapısı
- Test piramidi ve mock'lama
- Üretim Java koduna geçiş checklist'i





