b buyoldan.com
Blog

Motivasyon

Java Geliştirici (Backend & Microservices)

KURUMSAL YAZILIM

Sıfırdan ileri seviye Java Core mimarisine, Spring Boot ekosistemine ve Mikroservis dünyasına uzanan, en ince ayrıntılarıyla tasarlanmış devasa kurumsal(Enterprise) geliştirici kılavuzu.

Aşama 1: Java Temelleri ve JRE/JDK Mimarisi

Sözdizimi, Tipler, JVM ve Bellek
01

JVM, JRE ve JDK Farkları (Java Arka Planı)

Java Kodunun nasıl derlenip (.java -> .class) makine diline çevrildiğini anlama.

02

Main Metodu ve Top-Level Mimarisi

`public static void main(String[] args)` imzasının anlamı ve sınıf zorunluluğu.

03

İlkel (Primitive) ve Referans Veri Tipleri

int, boolean, char, double (Stack) ile String, Object (Heap) arasındaki devasa fark.

04

Tip Dönüşümleri (Type Casting)

Küçük tipleri büyüğe (int to long - Widening) veya büyüğü küçüğe (double to int - Narrowing) zorla sokmak.

05

Karar ve Kontrol Yapıları (If, Else, Switch-Case)

Akışı kontrol eden temel şartlı dallanmalar.

06

Döngüler (For, Enhanced For-Each, While, Do-While)

Tekrar eden kod bloklarını yönetme mekanizmaları ve koleksiyonlar üzerinde gezinme.

07

Metotlar (Functions) ve Parametre Geçişi (Pass by Value)

Prosedürel kodları bağımsız görev parçalarına bölmek, dönüş tipleri (void, return).

08

Metot Aşırı Yükleme (Method Overloading)

Aynı isimde ama parametre sayıları/tipleri "Farklı" olan çok sayıda fonksiyon tanımlayabilme serbestisi.

09

String Sınıfı, Hafıza Yönetimi ve String Pool

Metinler için en çok kullanılan sınıfın gizli çalışma mantığı ve değiştirilemezlik (Immutability).

10

StringBuilder ve StringBuffer: Hız Canavarları

Döngü içinde milyonlarca metni "+" operatörüyle birleştirme Faciasına (RAM şişmesine) ilaç olan sınıflar.

11

Hata Yönetimi ve İstisnalar (Exception Handling)

Try, Catch, Finally blokları, Throw/Throws anahtar kelimeleri ile uygulamanın çökmesini (Crash) önleme.

Aşama 2: Nesne Yönelimli Programlama (OOP)

Polymorphism, Interface, Abstract
01

Sınıf (Class) ve Nesne (Object) Anatomisi

Taslak(Blueprint) olan Sınıflar ile o taslaktan bellek(Heap) üzerinde "new" ile vücut bulan Canlı(Object) nesneler.

02

Constructor (Yapıcı Metot) ve "this" Anahtar Kelimesi

Nesne ilk "new"lendiğinde SADECE BİR KERE çalışan tetikleyici metot ve Parametre çakışmasını çözen "this" kancası.

03

Varsayılan (Default) ve Parametreli Constructor

Sınıfa hiçbir constructor yazmazsanız Java'nın gizlice arka planda attığı Boş(Default) yapıcı.

04

Kapsülleme (Encapsulation) ve Erişim Belirleyiciler

Değişkenleri "private" (Kilitli) yapıp, onlara sadece bizim Kontrollü Getter ve Setter metotlarımızla ulaşılması felsefesi.

05

Kalıtım (Inheritance) ve "extends" Mantığı

SubClass'ın (Çocuk), SuperClass'tan (Baba) tüm metot ve değişkenleri Miras alması.

06

Object Sınıfı ve "super" Anahtar Kelimesi

Java'daki İSTİSNASIZ TÜM sınıfların gizli Atası (Hz. Adem) olan "Object" sınıfı ve Ata Sınıfa ulaşım.

07

Çok Biçimlilik (Polymorphism): Upcasting

Bir "Kuş" referansının içine "Penguen" objesi, "Kartal" objesi koyup hepsine `.uc()` diyebilme yeteneği.

08

Method Overriding ve Overloading Farkı

Babadan gelen "SesCikar()" metodunu Çocuğun (Köpek) HA-YIR ben havlayacağım diyerek Ezmesi (Override) felsefesi.

09

Abstract (Soyut) Sınıflar ve Metotlar

"Araba" isminde genel bir kavram olması ama kimsenin galeriden "Ben 1 tane ARABA satın almak istiyorum!" diyememesi mecburiyeti.

10

Interfaces (Arayüzler): %100 Sözleşme Mantığı

Sınıflar arası "Senin bu Yeteneğin var mı?" sözleşmesi. "implements" anahtar kelimesi.

11

Static Anahtar Kelimesi: Sınıfın Kendisine Ait Olmak

Objelerden bağımsız (Object Independent), "new"lemeden Memory'de(Metaspace) tek kopya olarak var olan değişken ve metotlar.

12

Final Anahtar Kelimesi: Javadaki Mühür

Değişkeni "Sabit(Constant)" yapan, Metodu "Ezilemez(No Override)" yapan, Sınıfı ise "Kısır(Miras Veremez)" yapan son mühür.

Aşama 3: Koleksiyonlar, Generics ve Stream API

List, Map, Set, Lambda Expressions
01

Java Collections Framework (JCF) Hiyerarşisi

Collection (Ata) -> List, Set, Queue (Çocuklar) şeklindeki Java'nın devasa Veri Yapıları ağacı (java.util).

02

List Arayüzü: ArrayList vs LinkedList Cengaverliği

Sıralı(Indexli) eleman tutan Listelerin Memory'deki (RAM) yapısal ve hızsal farklılıkları.

03

Set Arayüzü: HashSet vs TreeSet ve Mükerrer Kayıt

İçinde AYNI elemandan (Duplicate) ASLA iki tane barındırmayan matematiksel Kümeler.

04

Map Arayüzü: HashMap ve HashTable Gerçeği

Verileri "TCKimlik: İsim" gibi Anahtar-Değer (Key-Value) ikilisiyle eşleştiren Hash tabanlı sözlükler.

05

Generics (<T> Kavramı) ve Tip Güvenliği

`ArrayList<String>` diyerek o listeye Integer koyulmasını ENGELLEYEN ve Compile-Time'da Hata fırlatan mimari.

06

Iterator Deseni ve Fail-Fast Mekanizması

Bir koleksiyonu gezerken (while(iter.hasNext())) araya kaynak yapılmasına (Değişime) Java'nın gösterdiği acımasız tepki.

07

Java 8 Devrimi: Lambda İfadeleri (->)

Anonim İç Sınıfları (Anonymous Inner Class) ve uzun uzun "new Interface()" yazımını bitiren Ok(Arrow) sihirbazlığı.

08

Stream API (Akışlar): Filter, Map, Reduce

Toplu veriler (Listeler) üzerinde SQL tarzı Sorgular (Where, Select) yazmamızı sağlayan fonksiyonel veri borusu.

09

Parallel Streams (.parallelStream())

Stream sorgularını tek çekirdekte(CPU 1) değil, Bilgisayarın Geriye Kalan Tüm Çekirdeklerinde (Multi-Core) AYNI ANDA çalıştırmak.

10

Optional Sınıfı: NullPointerException (NPE) Katili

Bir metottan dönen objenin NULL gelme ihtimaline karşı onu `Optional<User>` kutusuna hapsedip güvenlik valfi takmak.

Aşama 4: Veritabanı Entegrasyonu (JDBC & Hibernate)

SQL, ORM, EntityManager
01

JDBC (Java Database Connectivity) Nedir?

Spring veya ORM kütüphaneleri YOKKEN, Java'nın direkt SQL yazarak veritabanına attığı ilkel / saf bağlantı köprüsü.

02

PreparedStatement vs Statement Farklılığı

SQL Injection (Veritabanı hackleme) zafiyetini %100 çözen, Parametreli(Soru İşaretli) ve önceden derlenen SQL cümleleri.

03

Connection Pooling (Bağlantı Havuzu - HikariCP)

Müşteri her istek attığında Veritabanıyla "YENİ BİR TCP" bağlantısı açma rezaletini engelleyen Hazır Depo mantığı.

04

ORM (Object Relational Mapping) Mucizesine Geçiş

Veritabanındaki "User" tablosunu Java'da "User" sınıfıyla Eşleyip, SQL yazmadan sadece `session.save(userObject)` dedirten teknoloji.

05

Hibernate Framework: Java'nın ORM Kralı

Java ekosistemindeki %90 pazar payına sahip JPA implementasyon standardı.

06

Entity Sınıfları ve Veritabanı Konfigürasyonu

Sınıfların başına `@Entity` koyarak onları Tablo Adayı, değişkenlerin başına `@Id` koyarak onları Primary Key(PK) yapma.

07

İlişkiler: C# EF vs Hibernate (OneToMany & ManyToMany)

İki sınıf (Kategori - Ürün) arasındaki SQL Foreign Key (Yabancı Anahtar) ilişkisini Kodla birbirine bağlamak.

08

Hibernate Fetch Type: Eager vs Lazy Loading

Ata(Kategori) Verisi DB'den çekilirken, Alt(Urunler) Verisinin o saniye "Hemen Gelsin mi(Eager) Yoksa Sorana Kadar Beklesin mi(Lazy)" sorunu.

09

Hibernate Cache Mimarisi (L1 ve L2 Caching)

1. Seviye Cache (Session İçi - Default) ve 2. Seviye Cache (Tüm Uygulama Çapında - EhCache) ile SQL isteklerini sıfıra indirme.

10

N+1 Problemi ve HQL / JPQL Çözümü

Lözy loading yaparken for döngüsü içinde DB'ye milyonlarca ince Select atma felaketi ve JOIN FETCH kurtarıcısı.

Aşama 5: Spring Boot ve REST API Geliştirme

IoC, DI Container, RestController
01

Spring Framework vs Spring Boot Farkı

Tonlarca XML ayarıyla boğuşulan eski Spring ile, "Convention over Configuration (Ayarsız Varsayım)" felsefesiyle çalışan otomatik Spring Boot ayrımı.

02

Inversion of Control (IoC) Prensibi

Uygulamanın kontrolünü (Obje yaratma işini) programcının elinden alıp, Spring'in kendi Merkez Bankasına (Konteynerine) devretmesi.

03

Dependency Injection (DI) ve @Autowired

IoC Container'da bekleyen o hazır nesneleri (Bean), ihtiyaç duyan başka bir sınıfın içine (Controller) "Enjekte (Zerk)" etme mekanizması.

04

Bean Yaşam Döngüsü (LifeCycle) ve Scope'lar

Spring'in bir objeyi RAM'de yaratıp (Singleton/Prototype/Request) çöpe atana (Destroy) kadarki biyolojik ömrü.

05

@RestController ve @RequestMapping Mimarisi

Gelen HTTP isteklerini karşılayan (Resepsiyonist) sınıflar ve URL (Örn: /api/v1/users) yönlendirmeleri.

06

HTTP Fiilleri (@GetMapping, @PostMapping, @PutMapping)

REST prensiplerine uygun olarak Veri Çekme(Get), Yeni Veri Yaratma(Post) ve Güncelleme(Put) metodolojileri.

07

İstek Verileri (Request Data): @PathVariable vs @RequestParam

Postman'den veya React'ten gelen `/users/5` (Path) veya `/users?age=20` (Query) şeklindeki verileri Controller Parametresine yapıştırmak.

08

Veri Taşıyıcılar: DTO ve MapStruct

Veritabanı varlıklarını (Entity), Kullanıcıya "Şifresiyle falan" komple açmak yerine Araya Filtre Objesi (DTO) koymak.

09

Veri Doğrulama (Data Validation): @Valid

Gelen RequestBody JSON'unu Controller'a sokmadan önce (Email formatında mı, Yaş>18 mi?) diye Güvenlikten geçirmek.

10

Global Hata Yönetimi (Exception Handling)

Projenin 50 farklı yerinde oluşan Hataları (try-catch yığınlarını) TEK BİR MERKEZİ SINIFA toplayarak Standart JSON dönmek.

11

Uluslararasılaştırma (i18n - Internationalization)

Hata mesajlarının JSON formatında İspanyol Müşteriye İspanyolca, Türk Müşteriye Türkçe dönmesi.

12

Application.yml ve Profil Yönetimi

Tüm Şifrelerin, Veritabanı yollarının ve ayarların tutulduğu tek merkez. (Test, Canlı(Prod) ve Local ortamların ayrımı).

Aşama 6: Spring Data JPA ve İleri Veri Yönetimi

Repository Pattern, Migrations
01

Repository Pattern ve JpaRepository Arayüzü

Veritabanı CRUD operasyonlarını (Ekle, Sil, Listele) Tek satır kod yazmadan Sağlayan Sihirli Arayüz (Interface).

02

Türetilmiş Sorgular (Derived Query Methods)

Sadece Metodun "İSMİNE" bakarak, arkada o isme uygun (Where, And, Like) SQL kodunu Generate eden sihirbazlık.

03

@Query ve JPQL (Java Persistence Query Language)

Metot isimleriyle(findBy) yazılamayacak kadar Karmaşık(Çoklu Join, Alt sorgu) sorgular için Java dilinde özel SQL stili.

04

Native Query: İşin İçinden Çıkılamadığında

Performansın çok kritik olduğu (Özel Stored Procedure) anlarda, ORM zırhını delip doğrudan veritabanının kendi öz(çiğ) SQL'ini yollamak.

05

Sayfalama (Pagination) ve Sıralama (Sorting)

Milyonluk tabloyu `findAll()` demek yerine, "Bana sadece 2. Sayfanın 20 Elemanını getir" diyerek parçalayıp RAM'i kurtarmak.

06

@Transactional Yönetimi ve ACID Kuralları

Service katmanındaki 5 ayrı DB işleminin "Ya HEP YA HİÇ" mantığı! Biri hata verirse Önceki yapılmış tüm kayıtların Geri Alınması (Rollback).

07

Transaction Yayılımı (Propagation)

İç içe çalışan Transactional iki metodun Birbirlerinin Rollback(Hata) Kararından Nasıl etkileneceği kuralı.

08

Veritabanı Auditing (Otomatik Tarih/Adam Kaydı)

Bir Enttiy kaydedilirken "createdDate, updatedBy" gibi sütunların Developer ELLERİYLE değil, Spring Tarafından(Otomatik) doldurulması.

09

DTO Projeksiyonları (Projections)

Tabloda 50 Kolon varken (Şifre, CV vs), sadece ID ve İSİM getirmek için Koca Entity'i RAM'e taşımayıp (Performans) Arabirim(Interface) üzerinden filtrelemek.

10

Soft Deletion (Pasife Çekmek) Mekanizması

Kullanıcı Sil(Delete) tuşuna basınca Entity(Satır)nin Fiziksel(SQL Delete) değil, Mantıksal(is_deleted=true) olarak gizlenmesi kalkanı.

Aşama 7: Spring Security, JWT ve Kimlik Doğrulama

Filtreler, OAuth2, Authorization
01

Spring Security Mimarisi ve Filtre Zinciri (Filter Chain)

Tomcat sunucusuna gelen isteğin, Controller'a ulaşmadan önce geçtiği "Güvenlik Gişeleri" silsilesi.

02

Authentication (Kimlik Doğrulama) vs Authorization (Yetkilendirme)

Authentication "Sen Kimsin?" (Login) sorusudur. Authorization ise "Kimliğini Anladım ama Buraya Girmeye Yetkin(Rolün) Var mı?" sorusudur.

03

UserDetailsService ve UserDetails Arayüzleri

Spring Security'e "Benim Veritabanımdaki Müşterilerimi Nereden Okuman Gerektiğini Sana Öğretiyorum" deme sözleşmesi.

04

Şifreleme (Hashing) Algoritmaları

Veritabanına şifreleri "123456" yerine, Geri Döndürülemez (Irreversible) kriptografik özetlerle (Hash) kaydetmek.

05

Session Tabanlı Güvenlik ve CSRF Koruması

Eski tip sitelerde, Login sonrası Tarayıcı Çerezine (Cookie) bırakılan JSESSIONID ile adamı tanıma.

06

Stateless REST API Güvenliği (State Tutmamak)

Sunucu RAM'inde (Session) adamın giriş yaptığını TUTMAMAK! Her yeni istekte Adamın Mühürlü Kartını (Token) sormak.

07

JWT (JSON Web Token) Anatomisi (Header, Payload, Signature)

İçinde Adamın ID'sini, Rolünü ve Expiration(Bitme) Süresini tutan, Sunucunun Özel Anahtarıyla İmzalanmış Mühürlü vize.

08

Token Yönetimi: Access Token ve Refresh Token

Access Token çalınırsa diye ömrünü 15 Dakika (Kısa) tutmak. Süre bitince adamı tekrar Logine zorlamamak için Refresh Token ile yeni Access Token türetmek.

09

OncePerRequestFilter Sınıfı ile JWT Doğrulama Kapısı

Spring Security zincirinin tam Kalbine Kendi yazdığımız "Token Validasyon Filtresi"ni entegre etmek.

10

Rol Bazlı Yetkilendirme (Role Based Access Control - RBAC)

Metotların tepesine `@PreAuthorize("hasRole('ADMIN')")` yazarak Controller seviyesinde izinsiz girişleri kesmek.

11

OAUTH2 ve OpenID Connect (OIDC) Kavramları

"Google ile Giriş Yap", "GitHub ile Giriş Yap" butonlarının arkasında yatan Delegasyon (Yetki Devri) mimarisi.

Aşama 8: Mikroservis Mimarisi, Docker ve Bulut

Eureka, API Gateway, CI/CD
01

Monolitik vs Mikroservis (Microservices) Mimarisi Çatışması

Tüm E-Ticaretin (Sepet, Kargo, Ödeme) tek bir WAR dosyasından (Monolit), 50 Ayrı bağımsız sunucuya (Servis) bölünmesi serüveni.

02

Servis Keşfi (Service Discovery) ve Eureka

20 farklı mikroservisin IP adresi sürekli değişirse(Bulutta), birbirlerini Olay(IP) Yerinde nasıl bulacaklarının (Sarı Sayfalar/Rehber) çözümü.

03

API Gateway (Spring Cloud Gateway)

Müşterinin(React/iOS) 20 farklı servisin URL'ini bilmesini Engelleyip, tek bir Merkeze /api/v1/sepet isteği atmasını ve trafiği arka tarafa dağıtan Yönetmen.

04

Merkezi Konfigürasyon (Spring Cloud Config)

50 tane servisin "application.yml" dosyasına tek tek girip Veritabanı Şifresini(Local) Değiştirmek ameleliğinden kurtulmak.

05

Senkron ve Asenkron İletişim

Mikroservisler arası HTTP(Bekleyerek) iletişim kurmak ile Mesaj Kuyruğu(Beklemeksizin) iletişim kurmak felsefesi.

06

Saga Deseni ve Dağıtık İşlemler (Distributed Transactions)

Veritabanı farklı 3 Serviste(Sipariş->Stok->Ödeme) dönen bir döngüde STOK YOKSA diğer atılan Commit'leri (Örn Siparişi) nasıl RollBack yapacağımız.

07

Resilience4j ile Devre Kesici (Circuit Breaker) Patern

Sürekli Error/Timeout dönen bir servise(Örn: Ödeme) inatla istek atmayı sürdürüp Tüm Sistemi kilitlemek yerine "Devreyi Kapat (Fişi Çek)" mantığı.

08

Docker Konteyner Mimarisi (Kapsülleme)

Spring Boot [.jar] dosyasını; içinde kendisi için ayarlanmış (JRE, Alpine OS) sanal duvarlarla bir kalıba döküp İzole etmek.

09

Docker Compose ile Servis Ağı (Networking)

Tek komutla (`docker-compose up -d`) hem Postgres, hem Redis, hem RabbitMQ hem de 5 Spring Servisini birleriyle konuşacak ağda ayağa kaldırmak.

10

Dağıtık İzleme (Distributed Tracing)

Birbirine HTTP atan 15 servisin(Sepet->Fiyat->Banka) içinde "Bu İstek 5 saniye beklemiş AMA HANGİ SERVİSTE yavaşlamış?" dedektifliği.

11

CI/CD: GitHub Actions ve Jenkins (Sürekli Dağıtım)

Developer`in kodu Git'e `Push` etmesiyle; Sistemin KENDİ KENDİNE testleri (Unit) koşturması, Docker Image alıp Sunucuya (Deployment) Entegre etmesi.

!
Bilgi Sorumluluktur

buyoldan.com tarafından sunulan bu yol haritaları, yalnızca öğrenme sürecini kolaylaştırmak amacıyla hazırlanan birer rehber ve tavsiye niteliğindedir. Konular zamanla güncellenebilir, değişebilir veya sınav sistemlerine göre farklılık gösterebilir. Hedefine ulaşırken yalnızca buradaki içeriklerle yetinmemeni, resmi kaynakları ve güncel müfredatları da düzenli olarak araştırmanı şiddetle öneririz. Kendi yolunu çizmek senin elinde!

👀

Buna Da Göz At

Rehber

...

Detaylı Analiz

...

Çalışma Taktikleri

...

Öğrenme Kaynakları

Ders çalışma veya site hakkında aklına takılan her şeyi sorabilirsin.
YOLAI
// kariyer asistanı
Merhaba! Ders çalışma, sınav hazırlığı veya kariyer konularında yardımcı olabilirim. Ne öğrenmeye çalışıyorsun?
0 / 300