Advanced Java Backend
Real servisləri müstəqil aparmaq üçün JVM, concurrency, JPA/SQL və test dərinliyi.
Bu proqram planlaşdırılır və hələ cədvələ salınmayıb. Tarix, qiymət və qrup elan olunmayıb. Maraq bildirsəniz, proqram planlaşdırıldıqda və ya fərdi format müzakirə olunduqda sizinlə əlaqə saxlayarıq.
Məqsəd
Proqramın məqsədi junior səviyyədən real servisi müstəqil aparan developer səviyyəsinə keçidi dəstəkləməkdir. Əsas diqqət JVM-in və yaddaşın necə işlədiyini başa düşməyə, concurrency və verilənlər bazası ilə işi düzgün qurmağa və problemi production-a bənzər mühitdə diaqnoz etməyə yönəlir. Code review həm müəllif, həm rəyçi kimi məşq olunur.
Kimin üçündür
- Java ilə ən azı 1 il işləmiş və Spring Boot-da CRUD servisləri yazmış junior developer-lər
- Kodun niyə belə işlədiyini (yaddaş, thread, sorğu planı) başa düşmək istəyənlər
- Tapşırığı tam sahiblənmək və review-da özünü əsaslandırmaq istəyən mühəndislər
- Middle səviyyəyə keçid üçün boşluqlarını sistemli doldurmaq istəyənlər
Kimin üçün deyil
- Java-ya yeni başlayanlar: onlar üçün Java Backend Career Track daha uyğundur
- Yalnız framework konfiqurasiyasını öyrənmək istəyənlər: bu proqram dərin əsasları əhatə edir
- Kubernetes və infrastruktur avtomatlaşdırması axtaranlar: bu proqramın mövzusu deyil
İlkin tələblər
- Java 17+ sintaksisi, kolleksiyalar, exception və generics ilə rahat işləmək
- Spring Boot ilə sadə REST servisi və JPA ilə əsas CRUD təcrübəsi
- SQL-də JOIN, GROUP BY və index anlayışı
- Git və Pull Request axını ilə tanışlıq
Proqramın sonunda nə bacaracaqsınız
Proqramın sonunda nə bacaracaqsınız
- Heap, stack, GC və class loading-in davranışını sadə sxemlə izah etmək və heap dump-dan ilkin nəticə çıxarmaq
- Executor, CompletableFuture və virtual thread arasında məsələyə uyğun seçim etmək və seçimi əsaslandırmaq
- Race condition və deadlock-u test və thread dump ilə təkrarlayıb düzəltmək
- N+1, lazy loading və transaction sərhədi problemlərini aşkar edib JPA/SQL səviyyəsində həll etmək
- EXPLAIN planını oxuyub index və sorğu dəyişikliyini ölçü ilə əsaslandırmaq
- Unit, slice və integration testlərindən ibarət məntiqli test strategiyası qurmaq
- Log, metric və profiler ilə production-a bənzər performans problemini diaqnoz etmək
- Pull Request-i həm təqdim etmək, həm də konstruktiv review etmək
Heç bir təhsil proqramı işə qəbula və ya vəzifə yüksəlişinə zəmanət verə bilməz.
Tədris planı
Tədris planı
- 01
JVM və yaddaş
JVM-in kod və yaddaşı necə idarə etdiyini öyrənir, yaddaşla bağlı problemləri ölçü ilə araşdırırıq.
- Heap, stack, metaspace və obyektin ömrü
- Garbage collector-lar (G1, ZGC) və pauza anlayışı
- Class loading və JIT kompilyasiyası
- Heap dump və GC log oxumaq
- Memory leak-in tipik mənbələri (cache, listener, ThreadLocal)
Praktik laboratoriya: Qəsdən yaddaş sızıntısı olan servisi heap dump ilə analiz edib sızıntının mənbəyini tapmaq və düzəltmək.
- 02
Concurrency və virtual thread
Java Memory Model-dən virtual thread-lərə qədər düzgün və təhlükəsiz paralel kod yazmağı öyrənirik.
- Java Memory Model, happens-before və visibility
- synchronized, Lock, atomic və concurrent kolleksiyalar
- ExecutorService, CompletableFuture və structured concurrency
- Virtual thread-lər: nə vaxt faydalıdır, pinning problemi
- Deadlock, livelock və starvation diaqnozu
- Thread dump oxumaq
Praktik laboratoriya: Paylaşılan hesaba eyni vaxtda yazan kodda race condition yaradıb testlə təkrarlamaq, sonra iki fərqli yolla düzəldib müqayisə etmək.
- 03
JPA və Hibernate dərinliyi
Persistence context-in, flush-un və lazy loading-in necə işlədiyini bilmədən JPA ilə güvənli iş mümkün deyil.
- Persistence context, dirty checking və flush rejimləri
- Lazy/eager loading və N+1 problemi
- Fetch join, entity graph və projection
- Batch insert/update və optimistic locking
- Transaction sərhədləri və LazyInitializationException səbəbləri
Praktik laboratoriya: N+1 problemi olan endpoint-i SQL log-ları ilə ölçüb üç fərqli üsulla düzəltmək və sorğu sayını müqayisə etmək.
- 04
SQL və sorğu performansı
Sorğunun niyə yavaş olduğunu plan əsasında müəyyən etməyi və düzgün index seçməyi öyrənirik.
- EXPLAIN / EXPLAIN ANALYZE oxumaq
- B-tree index, composite index və sütun sırası
- Covering index və selectivity
- Pagination: offset və keyset yanaşması
- Isolation səviyyələri və lock davranışı
Praktik laboratoriya: Böyük cədvəldə yavaş sorğunu plan ilə analiz edib index əlavə etmək, əvvəl/sonra ölçüsünü yazılı qeyddə göstərmək.
- 05
Test strategiyası
Nəyi hansı səviyyədə test etməyin ucuz və etibarlı olduğunu müəyyən edirik.
- Test piramidası və onun məhdudiyyətləri
- JUnit 5, Mockito və mock-un həddindən artıq istifadəsi
- Testcontainers ilə real verilənlər bazasında integration test
- Slice testlər (@DataJpaTest, @WebMvcTest)
- Flaky testlərin səbəbləri və aradan qaldırılması
Praktik laboratoriya: Mövcud servis üçün test strategiyası sənədi yazıb kritik axın üçün Testcontainers ilə integration test əlavə etmək.
- 06
Böyüyən kod bazasında təmiz kod
Kod bazası böyüdükcə strukturu, adlandırmanı və asılılıqları idarə etməyi məşq edirik.
- Paket strukturu və qatlar arası asılılıq qaydaları
- Domain modelinin servis kodundan ayrılması
- Refactoring texnikaları və testlə qorunan dəyişiklik
- Exception və error modeli dizaynı
- Texniki borcun görünən edilməsi
Praktik laboratoriya: Mürəkkəb servis sinfini testləri qoruyaraq kiçik, aydın məsuliyyətli hissələrə bölmək.
- 07
Production-a bənzər problemlərin diaqnozu
Yavaşlıq, yaddaş artımı və nəzərə çarpmayan xətaları sistemli üsulla araşdırırıq.
- Structured logging və correlation ID
- Micrometer metrikaları və əsas siqnallar
- Profiler və flame graph oxumaq
- Connection pool tükənməsi və thread pool doyması
- Hipotezlə işləyən diaqnoz metodu
Praktik laboratoriya: Məqsədli şəkildə pozulmuş servisi (pool tükənməsi, yavaş sorğu) yalnız log, metrik və profiler ilə diaqnoz edib yazılı postmortem hazırlamaq.
- 08
Code review təcrübəsi
Review həm bacarıq, həm də komanda vərdişidir; hər iki tərəfdən məşq edirik.
- Kiçik və izah olunan Pull Request hazırlamaq
- Review checklist: düzgünlük, oxunaqlılıq, test, risk
- Konstruktiv rəy yazmaq və rəyə cavab vermək
- Review-da təhlükəsizlik və performans siqnalları
Praktik laboratoriya: Verilmiş Pull Request-i review edib yazılı rəy hazırlamaq, sonra öz Pull Request-inə gələn rəyləri əsaslandırılmış şəkildə cavablandırmaq.
Praktik tapşırıqlar
- Heap dump analizi və yazılı nəticə
- Concurrency xətasını təkrarlayan və düzəldən test
- JPA sorğu sayının ölçülməsi və optimallaşdırılması
- EXPLAIN ilə index qərarının əsaslandırılması
- İki Pull Request-in review-u
Portfolio nəticələri
- Yük testi keçmiş servis və qısa capacity qeydi
- Test strategiyası sənədi və Testcontainers testləri
- Performans diaqnozu üzrə yazılı postmortem
- Review rəylərindən ibarət portfolio nümunəsi
Necə qiymətləndirilir
- Pull Request-lər üzrə mentor code review-su
- Diaqnoz postmortem-inin müdafiəsi
- Concurrency və JPA üzrə praktiki yoxlama tapşırığı
- Öz kodunu izah edən qısa texniki müsahibə formatlı müzakirə
Alətlər və texnologiyalar
- Java 21
- Spring Boot
- PostgreSQL
- JUnit 5 və Mockito
- Testcontainers
- VisualVM və JDK Flight Recorder
- Eclipse MAT
- Micrometer
- Git
Səviyyə ardıcıllığı
- Əvvəl
- Əvvəl: Java Backend Career Track və ya junior səviyyədə ən azı 1 illik praktiki təcrübə.
- Sonra
- Sonra: Enterprise Spring Boot, ardınca Microservices və Distributed Systems.
- Müddət və format
- Müddət və format hələ müəyyən edilməyib; proqram planlaşdırılır və təqvimə salınmayıb.
Tez-tez verilən suallar
Tez-tez verilən suallar
Proqram hazırda açıqdır?
Xeyr. Proqram planlaşdırılır və hələ cədvələ salınmayıb. Tarix və qiymət elan olunmayıb. Maraq bildirə və ya konsultasiya istəyə bilərsiniz.
Java Backend Career Track keçməmişəm, qoşula bilərəm?
Əgər Java və Spring Boot ilə ən azı 1 il real iş təcrübəniz varsa, ola bilər. Əsasları zəifdirsə, əvvəlcə Career Track məsələni daha düzgün həll edir. Konsultasiyada səviyyənizi birgə qiymətləndirmək olar.
Virtual thread-lər üçün Java 21 lazımdır?
Bəli, proqram Java 21 üzərində qurulub. Əvvəlki versiyalarda virtual thread yoxdur, amma qalan mövzular (JVM, JPA, SQL, test) daha əvvəlki versiyalara da aiddir.
Proqram sertifikat verəcək?
Sertifikat vədi yoxdur. Dəyərləndirmə mentor rəyi, review və müdafiə formasındadır və tövsiyə xarakteri daşıyır.
Bu proqramla əlaqəli məqalələr
- Java CoreDüzgün Java kolleksiyasını seçmək
- Advanced JavaJava concurrency əsasları
- Java CoreJava-da equals və hashCode müqaviləsi
- Java CoreJava servislərində exception dizaynı
- Advanced JavaServis developerləri üçün Java yaddaşı və garbage collection
- Java CoreJava stream-ləri: oxunaqlı pipeline və tipik tələlər