Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion html-generators/locales.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ fr=🇫🇷 Français
ja=🇯🇵 日本語
ko=🇰🇷 한국어
it=🇮🇹 Italiano
pl=🇵🇱 Polski
pl=🇵🇱 Polski
tr=🇹🇷 Türkçe
18 changes: 18 additions & 0 deletions translations/content/tr/collections/collectors-teeing.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Collectors.teeing()
oldApproach: İki Geçiş
modernApproach: teeing()
summary: "Tek bir stream geçişinde iki toplama işlemi gerçekleştirin."
explanation: "Collectors.teeing(), her elemanı iki alt collector'a gönderir ve sonuçları birleştirir. Bu sayede veriyi iki kez akıtmaktan veya değiştirilebilir bir biriktirici kullanmaktan kaçınılır."
whyModernWins:
- icon: "⚡"
title: "Tek geçiş"
desc: "Stream'i iki yerine bir kez işleyin."
- icon: "🧩"
title: "Birleştirilebilir"
desc: "Herhangi iki collector'ı birleştirme fonksiyonuyla bir araya getirin."
- icon: "🔒"
title: "Değişmez sonuç"
desc: "Doğrudan bir record veya değer nesnesine birleştirin."
support:
description: JDK 12'den itibaren geniş çapta kullanılabilir (Mart 2019)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Koleksiyonları değişmez biçimde kopyalama
oldApproach: Elle Kopyalama + Sarmalama
modernApproach: List.copyOf()
summary: "Herhangi bir koleksiyonun değişmez kopyasını tek çağrıyla oluşturun."
explanation: "List.copyOf(), Set.copyOf() ve Map.copyOf() mevcut koleksiyonların değişmez anlık görüntülerini oluşturur. Kaynak zaten değişmez bir koleksiyonsa kopyalama yapılmaz."
whyModernWins:
- icon: ""
title: "Akıllı kopyalama"
desc: "Kaynak zaten değişmezse kopyalamayı atlar."
- icon: "📏"
title: "Tek çağrı"
desc: "Elle ArrayList oluşturma ve sarmalama gerekmez."
- icon: "🛡️"
title: "Savunmacı kopya"
desc: "Orijinaldeki değişiklikler kopyayı etkilemez."
support:
description: JDK 10'dan itibaren geniş çapta kullanılabilir (Mart 2018)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/immutable-list-creation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Değişmez liste oluşturma
oldApproach: Ayrıntılı Sarmalama
modernApproach: List.of()
summary: "Değişmez listeleri tek ve temiz bir ifadeyle oluşturun."
explanation: "List.of(), sarmalama veya savunmacı kopya gerektirmeksizin gerçek anlamda değişmez bir liste oluşturur. Null düşman yapısıyla (null öğeleri reddeder) yapısal olarak değişmezdir. Eski yöntem üç iç içe çağrı gerektiriyordu."
whyModernWins:
- icon: "📏"
title: "Tek çağrı"
desc: "Üç iç içe çağrıyı tek bir factory metoduyla değiştirin."
- icon: "🔒"
title: "Gerçekten değişmez"
desc: "Sadece bir sarmalayıcı değil — listenin kendisi değişmezdir."
- icon: "🛡️"
title: "Null-güvenli"
desc: "Oluşturma sırasında null öğeleri reddeder, hızlı hata verir."
support:
description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/immutable-map-creation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Değişmez map oluşturma
oldApproach: Map Builder Kalıbı
modernApproach: Map.of()
summary: "Builder kullanmadan satır içi değişmez map'ler oluşturun."
explanation: "Map.of(), anahtar-değer çiftlerini satır içinde alır ve değişmez bir map döndürür. 10'dan fazla giriş için Map.entry() çiftleriyle birlikte Map.ofEntries() kullanın."
whyModernWins:
- icon: "📏"
title: "Satır içi oluşturma"
desc: "Geçici değiştirilebilir map gerekmez."
- icon: "🔒"
title: "Değişmez sonuç"
desc: "Map oluşturulduktan sonra değiştirilemez."
- icon: "🚫"
title: "Null anahtar/değer yok"
desc: "Null girişler anında reddedilir."
support:
description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/immutable-set-creation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Değişmez set oluşturma
oldApproach: Ayrıntılı Sarmalama
modernApproach: Set.of()
summary: "Tek bir factory çağrısıyla değişmez set'ler oluşturun."
explanation: "Set.of(), oluşturma sırasında null'ları ve yinelenen öğeleri reddeden gerçek anlamda değişmez bir set oluşturur. Artık değiştirilebilir set'leri sarmalamanıza gerek yok."
whyModernWins:
- icon: "📏"
title: "Kısa ve öz"
desc: "Üç iç içe çağrı yerine tek satır."
- icon: "🚫"
title: "Tekrarlananları algılar"
desc: "Yanlışlıkla yinelenen öğeler geçirilirse hata fırlatır."
- icon: "🔒"
title: "Değişmez"
desc: "Oluşturulduktan sonra ekleme/çıkarma yapılamaz."
support:
description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/map-entry-factory.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Map.entry() factory
oldApproach: SimpleEntry
modernApproach: Map.entry()
summary: "Map girişlerini temiz bir factory metoduyla oluşturun."
explanation: "Map.entry(), ayrıntılı AbstractMap.SimpleEntry yapıcısının yerini alır. Değişmez bir giriş döndürür; bu da onu Map.ofEntries() ve stream işlemleri için ideal kılar."
whyModernWins:
- icon: "📏"
title: "Kısa ve öz"
desc: "Daha net bir niyetle üç satır yerine tek satır."
- icon: "🔒"
title: "Değişmez"
desc: "Döndürülen giriş değiştirilemez."
- icon: "🧩"
title: "Birleştirilebilir"
desc: "Büyük map'ler için Map.ofEntries() ile mükemmel çalışır."
support:
description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/reverse-list-iteration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Ters liste yineleme
oldApproach: Elle ListIterator
modernApproach: reversed()
summary: "Bir liste üzerinde temiz bir for-each döngüsüyle ters sırada yineleyin."
explanation: "SequencedCollection'dan gelen reversed() metodu, listenin ters sıralı bir görünümünü döndürür. Bu görünüm orijinal listenin arkasına dayandığından kopyalama yapılmaz. Geliştirilmiş for döngüsü sözdizimi, ters yinelemeyi ileri yineleme kadar okunabilir kılar."
whyModernWins:
- icon: "📖"
title: "Doğal sözdizimi"
desc: "Ayrıntılı ListIterator yerine geliştirilmiş for döngüsü."
- icon: "⚡"
title: "Kopyalama yok"
desc: "reversed() bir görünüm döndürür — performans yükü yoktur."
- icon: "🧩"
title: "Tutarlı API"
desc: "List, Deque, SortedSet üzerinde tekdüze çalışır."
support:
description: JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/sequenced-collections.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Sıralı koleksiyonlar
oldApproach: İndeks Aritmetiği
modernApproach: getFirst/getLast
summary: "Temiz API metodlarıyla ilk/son öğelere ve ters görünümlere erişin."
explanation: "SequencedCollection, List, Deque, SortedSet ve LinkedHashSet'e getFirst(), getLast(), reversed(), addFirst(), addLast() ekler. Artık size-1 aritmetiğine veya elle ters yinelemeye gerek yok."
whyModernWins:
- icon: "📖"
title: "Kendini belgeleyen"
desc: "getLast(), get(size()-1) ifadesinden çok daha açıktır."
- icon: "🔄"
title: "Ters görünüm"
desc: "reversed() bir görünüm verir — kopyalama gerekmez."
- icon: "🧩"
title: "Tekdüze API"
desc: "List, Deque, SortedSet üzerinde aynı şekilde çalışır."
support:
description: JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/stream-toarray-typed.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Tiplendirilmiş stream toArray
oldApproach: Elle Dizi Kopyalama
modernApproach: toArray(generator)
summary: "Stream'leri metot referansıyla tiplendirilmiş dizilere dönüştürün."
explanation: "toArray(IntFunction) metodu, bir stream'den düzgün tiplendirilmiş bir dizi oluşturur. Üretici (String[]::new), stream'e hangi türde dizi oluşturacağını söyler."
whyModernWins:
- icon: "🎯"
title: "Tip güvenli"
desc: "Object[] dönüşümü yok — dizi türü doğrudur."
- icon: "🔗"
title: "Zincirlenebilir"
desc: "Herhangi bir stream hattının sonunda çalışır."
- icon: "📏"
title: "Kısa ve öz"
desc: "Tek ifade elle yapılan döngünün yerini alır."
support:
description: JDK 8'den itibaren geniş çapta kullanılabilir (Mart 2014)
18 changes: 18 additions & 0 deletions translations/content/tr/collections/unmodifiable-collectors.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Değiştirilemez collector'lar
oldApproach: collectingAndThen
modernApproach: stream.toList()
summary: "stream.toList() ile doğrudan değiştirilemez bir listeye toplayın."
explanation: "Java 10, ayrıntılı collectingAndThen sarmalayıcısının yerini almak için toUnmodifiableList(), toUnmodifiableSet() ve toUnmodifiableMap() ekledi. Listeler için Java 16'nın stream.toList() yöntemi daha da basit bir alternatif sunar — hiç collect() çağrısına gerek yoktur. Diğer koleksiyon türleri için toUnmodifiableSet() ve toUnmodifiableMap() kullanın."
whyModernWins:
- icon: "📏"
title: "En kısa yol"
desc: "stream.toList() hiç collect() veya Collectors import gerektirmez."
- icon: "🔒"
title: "Değişmez"
desc: "Sonuç değiştirilemez — yanlışlıkla mutasyon olmaz."
- icon: "📖"
title: "Okunabilir"
desc: "Herhangi bir stream hattının terminal adımı olarak doğal okunur."
support:
description: JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: CompletableFuture zinciri
oldApproach: Bloklayan Future.get()
modernApproach: CompletableFuture
summary: "CompletableFuture kullanarak bloklamadan asenkron işlemleri zincirleme."
explanation: "CompletableFuture, bloklamayan asenkron hatlar sağlar. İşlemleri thenApply, thenCompose, thenAccept ile zincirleyin. Hataları exceptionally() ile işleyin. Birden fazla future'ı allOf/anyOf ile birleştirin."
whyModernWins:
- icon: "🔗"
title: "Zincirlenebilir"
desc: "Asenkron adımları okunabilir bir hatta birleştirin."
- icon: "🚫"
title: "Bloklama yok"
desc: "Hiçbir iş parçacığı sonuçları beklemek için boşta durmaz."
- icon: "🛡️"
title: "Hata işleme"
desc: "exceptionally() ve handle() ile temiz hata kurtarma."
support:
description: JDK 8'den itibaren geniş çapta kullanılabilir (Mart 2014)
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/concurrent-http-virtual.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Sanal iş parçacıklarıyla eşzamanlı HTTP
oldApproach: İş Parçacığı Havuzu + URLConnection
modernApproach: Sanal İş Parçacıkları + HttpClient
summary: "Sanal iş parçacıkları ve HttpClient ile birçok URL'yi eşzamanlı getirin."
explanation: "Sanal iş parçacıkları, her HTTP isteği için bir iş parçacığı oluşturmayı pratik hale getirir. HttpClient ile birleştirildiğinde, karmaşık asenkron geri arama kalıplarının yerini ölçeklenen basit bloklama koduyla alır."
whyModernWins:
- icon: "♾️"
title: "İstek başına iş parçacığı"
desc: "Havuz boyutlandırması yok — URL başına bir sanal iş parçacığı."
- icon: "📖"
title: "Basit kod"
desc: "Anlaşılır bloklama kodu yazın."
- icon: "⚡"
title: "Yüksek verim"
desc: "Minimum kaynak kullanımıyla binlerce eşzamanlı istek."
support:
description: JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: ExecutorService otomatik kapanma
oldApproach: Elle Kapatma
modernApproach: try-with-resources
summary: "Otomatik executor kapatma için try-with-resources kullanın."
explanation: "Java 19'dan itibaren ExecutorService, AutoCloseable arayüzünü uygular. close() metodu shutdown() çağırır ve görevlerin tamamlanmasını bekler. Artık elle try/finally kapatma kalıplarına gerek yok."
whyModernWins:
- icon: "🧹"
title: "Otomatik temizleme"
desc: "Blok çıkışında kapatma otomatik gerçekleşir."
- icon: "🛡️"
title: "Sızıntı yok"
desc: "İstisnalar oluşsa bile executor her zaman kapanır."
- icon: "📖"
title: "Tanıdık kalıp"
desc: "Dosyalar ve bağlantılar için kullanılan aynı try-with-resources."
support:
description: JDK 19'dan itibaren geniş çapta kullanılabilir (Eylül 2022)
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/lock-free-lazy-init.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Kilitlenmesiz tembel başlatma
oldApproach: synchronized + volatile
modernApproach: StableValue
summary: "Tembel singleton'lar için çift kontrollü kilitleme yerine StableValue kullanın."
explanation: "StableValue, doğru iş parçacığı güvenliğiyle tembel başlatma kalıbını kapsüller. JVM, başlatma sonrasında okuma yolunu optimize edebilir; bu da onu volatile okumalardan daha hızlı yapabilir."
whyModernWins:
- icon: "🧹"
title: "Şablonsuz kod yok"
desc: "volatile, synchronized veya çift null kontrolü yok."
- icon: "⚡"
title: "Daha hızlı okumalar"
desc: "JVM başlatma sonrasında değeri sabit katlamaya alabilir."
- icon: "✅"
title: "Kanıtlanmış doğruluk"
desc: "İnce sıralama hataları yok — JVM halleder."
support:
description: "JDK 25'te önizleme (JEP 502, StableValue). --enable-preview gerektirir."
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/process-api.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Modern Process API
oldApproach: Runtime.exec()
modernApproach: ProcessHandle
summary: "ProcessHandle ile işletim sistemi süreçlerini inceleyin ve yönetin."
explanation: "ProcessHandle; PID'leri, süreç bilgilerini (komut, argümanlar, başlangıç zamanı, CPU kullanımı), üst/alt ilişkilerini ve süreç sonlandırmayı sağlar. Artık belgelenmemiş Process iç kısımlarına gerek yok."
whyModernWins:
- icon: "🔍"
title: "Tam bilgi"
desc: "PID, komut, argümanlar, başlangıç zamanı, CPU kullanımına erişin."
- icon: "🌳"
title: "Süreç ağacı"
desc: "Üst, alt ve torun süreçlerde gezinin."
- icon: "📊"
title: "İzleme"
desc: "onExit() asenkron izleme için bir CompletableFuture döndürür."
support:
description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/scoped-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Kapsamlı değerler
oldApproach: ThreadLocal
modernApproach: ScopedValue
summary: "ThreadLocal tuzakları olmadan çağrı yığınları arasında güvenle veri paylaşın."
explanation: "ScopedValue; değiştirilemez, miras alınabilir, kapsam sınırlı bağlam sağlar. ThreadLocal'dan farklı olarak kapsamlı değerler otomatik temizlenir, sanal iş parçacıklarıyla çalışır ve çağrılanlar tarafından değiştirilemez."
whyModernWins:
- icon: "🔒"
title: "Değiştirilemez"
desc: "Çağrılanlar kapsamlı değeri okuyabilir ama asla değiştiremez."
- icon: "🧹"
title: "Otomatik temizleme"
desc: "Elle remove() gerekmez — değer blokla sınırlıdır."
- icon: "⚡"
title: "Sanal iş parçacığı güvenli"
desc: "Milyonlarca sanal iş parçacığıyla verimli çalışır."
support:
description: "JDK 25 LTS'de kesinleşti (JEP 506, Eylül 2025)."
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/stable-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Kararlı değerler
oldApproach: Çift Kontrollü Kilitleme
modernApproach: StableValue
summary: "volatile veya synchronized olmadan iş parçacığı güvenli tembel başlatma."
explanation: "StableValue, yerleşik iş parçacığı güvenliğiyle tembel başlatılmış, değiştirilemez bir değer sağlar. Çift kontrollü kilitleme yok, volatile alan yok, synchronized blok yok. JVM başlatma sonrasında okuma yolunu bile optimize edebilir."
whyModernWins:
- icon: "🧹"
title: "Sıfır şablonsuz kod"
desc: "volatile, synchronized veya null kontrolleri yok."
- icon: "⚡"
title: "JVM-optimize"
desc: "JVM başlatma sonrasında değeri katlayabilir."
- icon: "🛡️"
title: "Bir kez garantili"
desc: "Sağlayıcı, çakışma altında bile yalnızca bir kez çalışır."
support:
description: "JDK 25'te önizleme (JEP 502). --enable-preview gerektirir."
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/structured-concurrency.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Yapılandırılmış eşzamanlılık
oldApproach: Elle İş Parçacığı Yaşam Döngüsü
modernApproach: StructuredTaskScope
summary: "Eşzamanlı görev ömürlerini tek bir iş birimi olarak yönetin."
explanation: "Yapılandırılmış eşzamanlılık, bir grup eşzamanlı görevi tek bir işlem olarak ele alır. Herhangi bir alt görev başarısız olursa diğerleri iptal edilir. Kapsam, iş parçacığı sızıntısı olmadığını garanti eder ve açık üst-alt ilişkileri sunar."
whyModernWins:
- icon: "🛡️"
title: "İş parçacığı sızıntısı yok"
desc: "Tüm çatallanmış görevler kapsam kapanmadan önce tamamlanır."
- icon: "⚡"
title: "Hızlı hata"
desc: "ShutdownOnFailure, biri başarısız olursa kardeş görevleri iptal eder."
- icon: "📐"
title: "Açık yapı"
desc: "Görev ömrü koddaki sözcüksel kapsamla eşleşir."
support:
description: "JDK 25'te önizleme (beşinci önizleme, JEP 505). --enable-preview gerektirir."
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/thread-sleep-duration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Duration ile Thread.sleep
oldApproach: Milisaniye
modernApproach: Duration
summary: "Kendini belgeleyen zaman değerleri için Duration kullanın."
explanation: "Thread.sleep(Duration) zaman birimini açık hale getirir. 5000'in milisaniye mi yoksa mikrosaniye mi olduğunu artık tahmin etmeye gerek yok. Duration.ofSeconds, ofMillis, ofMinutes vb. ile çalışır."
whyModernWins:
- icon: "📖"
title: "Kendini belgeleyen"
desc: "Duration.ofSeconds(5) belirsizlik taşımaz."
- icon: "🛡️"
title: "Birim güvenli"
desc: "Mikrosaniyeyi yanlışlıkla milisaniye olarak geçirme olmaz."
- icon: "🧩"
title: "Birleştirilebilir"
desc: "Duration matematiği: plus(), multipliedBy() vb."
support:
description: JDK 19'dan itibaren geniş çapta kullanılabilir (Eylül 2022)
18 changes: 18 additions & 0 deletions translations/content/tr/concurrency/virtual-threads.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Sanal iş parçacıkları
oldApproach: Platform İş Parçacıkları
modernApproach: Sanal İş Parçacıkları
summary: "Ağır işletim sistemi iş parçacıkları yerine milyonlarca hafif sanal iş parçacığı oluşturun."
explanation: "Sanal iş parçacıkları, işletim sistemi değil JVM tarafından yönetilen hafif iş parçacıklarıdır. İş parçacığı havuzlarını ayarlamadan milyonlarcasını oluşturabilirsiniz. HTTP çağrıları ve veritabanı sorguları gibi G/Ç'ye bağlı görevler için idealdir."
whyModernWins:
- icon: "⚡"
title: "Hafif"
desc: "Sanal iş parçacıkları KB bellek kullanır, platform iş parçacıkları MB."
- icon: "♾️"
title: "Ölçeklenebilir"
desc: "Milyonlarca iş parçacığı oluşturun — havuz boyutlandırması gerekmez."
- icon: "🧹"
title: "Basit model"
desc: "Asenkron kod gibi ölçeklenen bloklama kodu yazın."
support:
description: JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)
Loading