Türkçe Java öğrenme notları ve tek dosyalık çalıştırılabilir örnekler:
temel sözdiziminden record, lambda ifadeleri ve JPMS modüllerine kadar 29 konu.
Her konu kendi klasöründe, yorumlanmış bir Main.java ve (bazı konularda) detaylı not
Markdown'ı ile birlikte durur.
- Çalıştırılabilir notlar: her konu kopyala-yapıştır değil, derlenip çalışan tek bir
Main.java. - Yorumlanmış kod: örnek satırlarının yanında ne yaptığı ve neden öyle olduğu Türkçe açıklanır.
- Sıralı müfredat: 8'den 37'ye kadar numaralandırılmış klasörler, klasik kaynak sırasını izler.
- Sıfır bağımlılık: JDK dışında hiçbir şey gerekmez — Maven, Gradle, JAR yok.
- CI doğrulaması: her push'ta 29 dosyanın tamamı JDK 17 ve 21 ile yeniden derlenir.
| # | Konu | Ne anlatıyor | Kod |
|---|---|---|---|
| 8 | Java Sözdizimi | Söz dizimi, dosya yapısı, temel unsurlar | Main.java · not |
| 9 | Değişkenler | Değişken tanımlama, kapsam (scope) | Main.java |
| 10 | Veri Tipleri | İlkel ve nesne tipleri, boxing | Main.java |
| 11 | Matematik İşlemleri | Aritmetik operatörler, Math | Main.java |
| 12 | Diziler | Tek/çok boyutlu diziler | Main.java |
| 13 | String | String API'si, immutable yapı | Main.java |
| # | Konu | Ne anlatıyor | Kod |
|---|---|---|---|
| 15 | if Deyimleri | Koşullu dallanma | Main.java |
| 16 | Ternary Operatörü | ? : ile kısa koşul |
Main.java |
| 17 | switch Deyimleri | Klasik switch | Main.java |
| 18 | instanceof Operatörü | Tip kontrolü | Main.java |
| 19 | for Döngüleri | Klasik ve for-each döngüler | Main.java |
| 20 | while Döngüleri | while / do-while | Main.java |
| # | Konu | Ne anlatıyor | Kod |
|---|---|---|---|
| 21 | Sınıflar | Sınıf bildirimi, nesne oluşturma | Main.java |
| 22 | Alanlar (Fields) | Instance/static alanlar | Main.java |
| 23 | Metotlar | Parametreler, dönüş tipleri, overloading | Main.java |
| 24 | Yapıcılar | Constructor zincirleme | Main.java |
| 25 | Paketler | Paket yapısı ve isimlendirme | Main.java · not |
| 26 | Erişim Belirleyicileri | public / protected / private | Main.java · not |
| 27 | Kalıtım | extends, super, override | Main.java |
| 28 | İç İçe Sınıflar | static / inner sınıflar | Main.java |
| 29 | Soyut Sınıflar | abstract sınıf ve metotlar | Main.java |
| 31 | Arayüzler (Interfaces) | default/static metotlar | Main.java |
| 32 | Interface vs Abstract Class | İkisinin karşılaştırması | Main.java · not |
| 33 | Enum | Sabitler, alanlı/metotlu enum | Main.java |
| # | Konu | Ne anlatıyor | Kod |
|---|---|---|---|
| 30 | Record | Immutable veri taşıyıcıları | Main.java |
| 34 | Anotasyonlar | Kendi anotasyonunu yazmak (tek dosya: MyClass.java) |
MyClass.java |
| 35 | Lambda İfadeleri | Fonksiyonel arayüzler, lambda | Main.java |
| 36 | Modüller (JPMS) | module-info, kapsülleme | Main.java · not |
| 37 | Scoped Assignment & Scoped Access | Kapsamlı erişim | Main.java |
Tek gereksinim: JDK 17+ (Adoptium önerilir). Maven/Gradle/IDE zorunlu değil.
git clone https://github.com/emrelab/java-language.git
cd java-language
# Tek bir konuyu derle ve çalıştır
javac -d out "Java Language/30-Record/src/Main.java"
java -cp out Main
# Tüm örneklerin derlendiğini doğrula (CI'ın çalıştırdığı betiğin aynısı)
./scripts/compile-all.shjavac -d out "Java Language/30-Record/src/Main.java"
java -cp out MainIDE ile çalışacaksanız: klasörü açın, ilgili
srcklasörünü kaynak kökü (source root) yapın veMain.javadosyasını çalıştırın. Her örnek bağımsızdır, tek başına derlenir.
Java Language/<konu no>-<konu adı>/src/Main.java
Numaralandırma klasik Java kaynak sırasını izler; listede olmayan numaralar (14 gibi) henüz eklenmemiş konulardır.
.github/workflows/build.yml her push ve pull request'te
scripts/compile-all.sh betiğini ubuntu-latest üzerinde
JDK 17 ve JDK 21 matrisiyle çalıştırır: 29 dosyanın tamamı javac ile derlenir ve sayı
doğrulanır. Yeşil rozet = tüm örnekler derleniyor.
Notlar ve örnekler, Jakob Jenkov'un Java Language bölümünden yararlanılarak Türkçe olarak hazırlanmıştır. Kod ve notlar MIT lisanslıdır — bkz. LICENSE.
Turkish study notes and 29 self-contained, compilable Main.java examples covering the
Java language from syntax and variables to OOP, records, lambdas, annotations and JPMS modules,
based on Jakob Jenkov's Java Language tutorial. No dependencies beyond a JDK 17+: compile a
single file with javac and run it, or verify every example via ./scripts/compile-all.sh
(the same script CI runs on JDK 17 and 21). MIT licensed.