From f290197b23662efacfea21daccb37b0af3c9ae9a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:20:57 +0000 Subject: [PATCH 1/6] Initial plan From 0a827e55be8d73d85db60dec9aca0a1104d80711 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:27:53 +0000 Subject: [PATCH 2/6] Add Turkish (tr) translations for collections and concurrency patterns Translate 10 collections and 10 concurrency pattern YAML files to Turkish. - translations/content/tr/collections/collectors-teeing.yaml - translations/content/tr/collections/copying-collections-immutably.yaml - translations/content/tr/collections/immutable-list-creation.yaml - translations/content/tr/collections/immutable-map-creation.yaml - translations/content/tr/collections/immutable-set-creation.yaml - translations/content/tr/collections/map-entry-factory.yaml - translations/content/tr/collections/reverse-list-iteration.yaml - translations/content/tr/collections/sequenced-collections.yaml - translations/content/tr/collections/stream-toarray-typed.yaml - translations/content/tr/collections/unmodifiable-collectors.yaml - translations/content/tr/concurrency/completablefuture-chaining.yaml - translations/content/tr/concurrency/concurrent-http-virtual.yaml - translations/content/tr/concurrency/executor-try-with-resources.yaml - translations/content/tr/concurrency/lock-free-lazy-init.yaml - translations/content/tr/concurrency/process-api.yaml - translations/content/tr/concurrency/scoped-values.yaml - translations/content/tr/concurrency/stable-values.yaml - translations/content/tr/concurrency/structured-concurrency.yaml - translations/content/tr/concurrency/thread-sleep-duration.yaml - translations/content/tr/concurrency/virtual-threads.yaml Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../tr/collections/collectors-teeing.yaml | 18 ++++++++++++++++++ .../copying-collections-immutably.yaml | 18 ++++++++++++++++++ .../collections/immutable-list-creation.yaml | 18 ++++++++++++++++++ .../tr/collections/immutable-map-creation.yaml | 18 ++++++++++++++++++ .../tr/collections/immutable-set-creation.yaml | 18 ++++++++++++++++++ .../tr/collections/map-entry-factory.yaml | 18 ++++++++++++++++++ .../tr/collections/reverse-list-iteration.yaml | 18 ++++++++++++++++++ .../tr/collections/sequenced-collections.yaml | 18 ++++++++++++++++++ .../tr/collections/stream-toarray-typed.yaml | 18 ++++++++++++++++++ .../collections/unmodifiable-collectors.yaml | 18 ++++++++++++++++++ .../completablefuture-chaining.yaml | 18 ++++++++++++++++++ .../concurrency/concurrent-http-virtual.yaml | 18 ++++++++++++++++++ .../executor-try-with-resources.yaml | 18 ++++++++++++++++++ .../tr/concurrency/lock-free-lazy-init.yaml | 18 ++++++++++++++++++ .../content/tr/concurrency/process-api.yaml | 18 ++++++++++++++++++ .../content/tr/concurrency/scoped-values.yaml | 18 ++++++++++++++++++ .../content/tr/concurrency/stable-values.yaml | 18 ++++++++++++++++++ .../tr/concurrency/structured-concurrency.yaml | 18 ++++++++++++++++++ .../tr/concurrency/thread-sleep-duration.yaml | 18 ++++++++++++++++++ .../tr/concurrency/virtual-threads.yaml | 18 ++++++++++++++++++ 20 files changed, 360 insertions(+) create mode 100644 translations/content/tr/collections/collectors-teeing.yaml create mode 100644 translations/content/tr/collections/copying-collections-immutably.yaml create mode 100644 translations/content/tr/collections/immutable-list-creation.yaml create mode 100644 translations/content/tr/collections/immutable-map-creation.yaml create mode 100644 translations/content/tr/collections/immutable-set-creation.yaml create mode 100644 translations/content/tr/collections/map-entry-factory.yaml create mode 100644 translations/content/tr/collections/reverse-list-iteration.yaml create mode 100644 translations/content/tr/collections/sequenced-collections.yaml create mode 100644 translations/content/tr/collections/stream-toarray-typed.yaml create mode 100644 translations/content/tr/collections/unmodifiable-collectors.yaml create mode 100644 translations/content/tr/concurrency/completablefuture-chaining.yaml create mode 100644 translations/content/tr/concurrency/concurrent-http-virtual.yaml create mode 100644 translations/content/tr/concurrency/executor-try-with-resources.yaml create mode 100644 translations/content/tr/concurrency/lock-free-lazy-init.yaml create mode 100644 translations/content/tr/concurrency/process-api.yaml create mode 100644 translations/content/tr/concurrency/scoped-values.yaml create mode 100644 translations/content/tr/concurrency/stable-values.yaml create mode 100644 translations/content/tr/concurrency/structured-concurrency.yaml create mode 100644 translations/content/tr/concurrency/thread-sleep-duration.yaml create mode 100644 translations/content/tr/concurrency/virtual-threads.yaml diff --git a/translations/content/tr/collections/collectors-teeing.yaml b/translations/content/tr/collections/collectors-teeing.yaml new file mode 100644 index 0000000..e9b8400 --- /dev/null +++ b/translations/content/tr/collections/collectors-teeing.yaml @@ -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) diff --git a/translations/content/tr/collections/copying-collections-immutably.yaml b/translations/content/tr/collections/copying-collections-immutably.yaml new file mode 100644 index 0000000..a38954b --- /dev/null +++ b/translations/content/tr/collections/copying-collections-immutably.yaml @@ -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) diff --git a/translations/content/tr/collections/immutable-list-creation.yaml b/translations/content/tr/collections/immutable-list-creation.yaml new file mode 100644 index 0000000..bb971b9 --- /dev/null +++ b/translations/content/tr/collections/immutable-list-creation.yaml @@ -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) diff --git a/translations/content/tr/collections/immutable-map-creation.yaml b/translations/content/tr/collections/immutable-map-creation.yaml new file mode 100644 index 0000000..c6c2e78 --- /dev/null +++ b/translations/content/tr/collections/immutable-map-creation.yaml @@ -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) diff --git a/translations/content/tr/collections/immutable-set-creation.yaml b/translations/content/tr/collections/immutable-set-creation.yaml new file mode 100644 index 0000000..4cafccc --- /dev/null +++ b/translations/content/tr/collections/immutable-set-creation.yaml @@ -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) diff --git a/translations/content/tr/collections/map-entry-factory.yaml b/translations/content/tr/collections/map-entry-factory.yaml new file mode 100644 index 0000000..7f07571 --- /dev/null +++ b/translations/content/tr/collections/map-entry-factory.yaml @@ -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) diff --git a/translations/content/tr/collections/reverse-list-iteration.yaml b/translations/content/tr/collections/reverse-list-iteration.yaml new file mode 100644 index 0000000..a2653b2 --- /dev/null +++ b/translations/content/tr/collections/reverse-list-iteration.yaml @@ -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) diff --git a/translations/content/tr/collections/sequenced-collections.yaml b/translations/content/tr/collections/sequenced-collections.yaml new file mode 100644 index 0000000..ed16282 --- /dev/null +++ b/translations/content/tr/collections/sequenced-collections.yaml @@ -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) diff --git a/translations/content/tr/collections/stream-toarray-typed.yaml b/translations/content/tr/collections/stream-toarray-typed.yaml new file mode 100644 index 0000000..6486725 --- /dev/null +++ b/translations/content/tr/collections/stream-toarray-typed.yaml @@ -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) diff --git a/translations/content/tr/collections/unmodifiable-collectors.yaml b/translations/content/tr/collections/unmodifiable-collectors.yaml new file mode 100644 index 0000000..8c36434 --- /dev/null +++ b/translations/content/tr/collections/unmodifiable-collectors.yaml @@ -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) diff --git a/translations/content/tr/concurrency/completablefuture-chaining.yaml b/translations/content/tr/concurrency/completablefuture-chaining.yaml new file mode 100644 index 0000000..a584ddc --- /dev/null +++ b/translations/content/tr/concurrency/completablefuture-chaining.yaml @@ -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) diff --git a/translations/content/tr/concurrency/concurrent-http-virtual.yaml b/translations/content/tr/concurrency/concurrent-http-virtual.yaml new file mode 100644 index 0000000..dd82b01 --- /dev/null +++ b/translations/content/tr/concurrency/concurrent-http-virtual.yaml @@ -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) diff --git a/translations/content/tr/concurrency/executor-try-with-resources.yaml b/translations/content/tr/concurrency/executor-try-with-resources.yaml new file mode 100644 index 0000000..c82c7cc --- /dev/null +++ b/translations/content/tr/concurrency/executor-try-with-resources.yaml @@ -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) diff --git a/translations/content/tr/concurrency/lock-free-lazy-init.yaml b/translations/content/tr/concurrency/lock-free-lazy-init.yaml new file mode 100644 index 0000000..f8d5b12 --- /dev/null +++ b/translations/content/tr/concurrency/lock-free-lazy-init.yaml @@ -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." diff --git a/translations/content/tr/concurrency/process-api.yaml b/translations/content/tr/concurrency/process-api.yaml new file mode 100644 index 0000000..e8fb1b3 --- /dev/null +++ b/translations/content/tr/concurrency/process-api.yaml @@ -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) diff --git a/translations/content/tr/concurrency/scoped-values.yaml b/translations/content/tr/concurrency/scoped-values.yaml new file mode 100644 index 0000000..5f02015 --- /dev/null +++ b/translations/content/tr/concurrency/scoped-values.yaml @@ -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)." diff --git a/translations/content/tr/concurrency/stable-values.yaml b/translations/content/tr/concurrency/stable-values.yaml new file mode 100644 index 0000000..310a6f9 --- /dev/null +++ b/translations/content/tr/concurrency/stable-values.yaml @@ -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." diff --git a/translations/content/tr/concurrency/structured-concurrency.yaml b/translations/content/tr/concurrency/structured-concurrency.yaml new file mode 100644 index 0000000..f9f093d --- /dev/null +++ b/translations/content/tr/concurrency/structured-concurrency.yaml @@ -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." diff --git a/translations/content/tr/concurrency/thread-sleep-duration.yaml b/translations/content/tr/concurrency/thread-sleep-duration.yaml new file mode 100644 index 0000000..c66cdf3 --- /dev/null +++ b/translations/content/tr/concurrency/thread-sleep-duration.yaml @@ -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) diff --git a/translations/content/tr/concurrency/virtual-threads.yaml b/translations/content/tr/concurrency/virtual-threads.yaml new file mode 100644 index 0000000..9512464 --- /dev/null +++ b/translations/content/tr/concurrency/virtual-threads.yaml @@ -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) From 875ccf09f903199eeeb9f773a331b81afecf664e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:32:35 +0000 Subject: [PATCH 3/6] Add Turkish (tr) translations for datetime and enterprise patterns - 6 datetime files: date-formatting, duration-and-period, hex-format, instant-precision, java-time-basics, math-clamp - 16 enterprise files: ejb-timer-vs-jakarta-scheduler, ejb-vs-cdi, jdbc-resultset-vs-jpa-criteria, jdbc-vs-jooq, jdbc-vs-jpa, jndi-lookup-vs-cdi-injection, jpa-vs-jakarta-data, jsf-managed-bean-vs-cdi-named, manual-transaction-vs-declarative, mdb-vs-reactive-messaging, servlet-vs-jaxrs, singleton-ejb-vs-cdi-application-scoped, soap-vs-jakarta-rest, spring-api-versioning, spring-null-safety-jspecify, spring-xml-config-vs-annotations Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- html-generators/locales.properties | 3 +- .../content/tr/datetime/date-formatting.yaml | 18 ++++ .../tr/datetime/duration-and-period.yaml | 18 ++++ .../content/tr/datetime/hex-format.yaml | 18 ++++ .../tr/datetime/instant-precision.yaml | 18 ++++ .../content/tr/datetime/java-time-basics.yaml | 18 ++++ .../content/tr/datetime/math-clamp.yaml | 18 ++++ .../ejb-timer-vs-jakarta-scheduler.yaml | 18 ++++ .../content/tr/enterprise/ejb-vs-cdi.yaml | 18 ++++ .../jdbc-resultset-vs-jpa-criteria.yaml | 18 ++++ .../content/tr/enterprise/jdbc-vs-jooq.yaml | 18 ++++ .../content/tr/enterprise/jdbc-vs-jpa.yaml | 18 ++++ .../jndi-lookup-vs-cdi-injection.yaml | 18 ++++ .../tr/enterprise/jpa-vs-jakarta-data.yaml | 18 ++++ .../jsf-managed-bean-vs-cdi-named.yaml | 18 ++++ .../manual-transaction-vs-declarative.yaml | 18 ++++ .../enterprise/mdb-vs-reactive-messaging.yaml | 18 ++++ .../tr/enterprise/servlet-vs-jaxrs.yaml | 18 ++++ ...ngleton-ejb-vs-cdi-application-scoped.yaml | 18 ++++ .../tr/enterprise/soap-vs-jakarta-rest.yaml | 18 ++++ .../tr/enterprise/spring-api-versioning.yaml | 18 ++++ .../spring-null-safety-jspecify.yaml | 18 ++++ .../spring-xml-config-vs-annotations.yaml | 18 ++++ translations/strings/tr.yaml | 89 +++++++++++++++++++ 24 files changed, 487 insertions(+), 1 deletion(-) create mode 100644 translations/content/tr/datetime/date-formatting.yaml create mode 100644 translations/content/tr/datetime/duration-and-period.yaml create mode 100644 translations/content/tr/datetime/hex-format.yaml create mode 100644 translations/content/tr/datetime/instant-precision.yaml create mode 100644 translations/content/tr/datetime/java-time-basics.yaml create mode 100644 translations/content/tr/datetime/math-clamp.yaml create mode 100644 translations/content/tr/enterprise/ejb-timer-vs-jakarta-scheduler.yaml create mode 100644 translations/content/tr/enterprise/ejb-vs-cdi.yaml create mode 100644 translations/content/tr/enterprise/jdbc-resultset-vs-jpa-criteria.yaml create mode 100644 translations/content/tr/enterprise/jdbc-vs-jooq.yaml create mode 100644 translations/content/tr/enterprise/jdbc-vs-jpa.yaml create mode 100644 translations/content/tr/enterprise/jndi-lookup-vs-cdi-injection.yaml create mode 100644 translations/content/tr/enterprise/jpa-vs-jakarta-data.yaml create mode 100644 translations/content/tr/enterprise/jsf-managed-bean-vs-cdi-named.yaml create mode 100644 translations/content/tr/enterprise/manual-transaction-vs-declarative.yaml create mode 100644 translations/content/tr/enterprise/mdb-vs-reactive-messaging.yaml create mode 100644 translations/content/tr/enterprise/servlet-vs-jaxrs.yaml create mode 100644 translations/content/tr/enterprise/singleton-ejb-vs-cdi-application-scoped.yaml create mode 100644 translations/content/tr/enterprise/soap-vs-jakarta-rest.yaml create mode 100644 translations/content/tr/enterprise/spring-api-versioning.yaml create mode 100644 translations/content/tr/enterprise/spring-null-safety-jspecify.yaml create mode 100644 translations/content/tr/enterprise/spring-xml-config-vs-annotations.yaml create mode 100644 translations/strings/tr.yaml diff --git a/html-generators/locales.properties b/html-generators/locales.properties index 8d6af5f..40c7bf6 100644 --- a/html-generators/locales.properties +++ b/html-generators/locales.properties @@ -9,4 +9,5 @@ fr=🇫🇷 Français ja=🇯🇵 日本語 ko=🇰🇷 한국어 it=🇮🇹 Italiano -pl=🇵🇱 Polski \ No newline at end of file +pl=🇵🇱 Polski +tr=🇹🇷 Türkçe \ No newline at end of file diff --git a/translations/content/tr/datetime/date-formatting.yaml b/translations/content/tr/datetime/date-formatting.yaml new file mode 100644 index 0000000..04f4dd1 --- /dev/null +++ b/translations/content/tr/datetime/date-formatting.yaml @@ -0,0 +1,18 @@ +--- +title: Tarih biçimlendirme +oldApproach: SimpleDateFormat +modernApproach: DateTimeFormatter +summary: "Tarihleri thread-safe ve değişmez DateTimeFormatter ile biçimlendirin." +explanation: "DateTimeFormatter, SimpleDateFormat'ın aksine değişmez ve thread-safe'dir. Sabit olarak saklanabilir ve paylaşılabilir. Yaygın biçimler için ISO_LOCAL_DATE gibi önceden tanımlanmış biçimleyiciler mevcuttur." +whyModernWins: +- icon: 🛡️ + title: Thread-safe + desc: "Biçimleyicileri senkronizasyon olmadan iş parçacıkları arasında paylaşın." +- icon: 📋 + title: Yerleşik biçimler + desc: "Standart biçimler için ISO_LOCAL_DATE, ISO_INSTANT ve diğerleri." +- icon: 🔒 + title: Değişmez + desc: "Güvenle static final sabit olarak saklayın." +support: + description: JDK 8'den (Mart 2014) itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/datetime/duration-and-period.yaml b/translations/content/tr/datetime/duration-and-period.yaml new file mode 100644 index 0000000..5865fbd --- /dev/null +++ b/translations/content/tr/datetime/duration-and-period.yaml @@ -0,0 +1,18 @@ +--- +title: Duration ve Period +oldApproach: Milisaniye Matematiği +modernApproach: Duration / Period +summary: "Zaman farklarını tür-güvenli Duration ve Period ile hesaplayın." +explanation: "Duration, saat, dakika ve saniye gibi zaman tabanlı miktarlar içindir. Period ise yıl, ay ve gün gibi tarih tabanlı miktarlar içindir. Basit farklar için ChronoUnit.between() kullanılır. Tümü kenar durumları doğru şekilde ele alır." +whyModernWins: +- icon: 🎯 + title: Tür-güvenli + desc: "Zaman için Duration, tarihler için Period — karışıklık yok." +- icon: 🛡️ + title: Doğru hesaplama + desc: "Yaz saati geçişlerini, artık yılları ve artık saniyeleri doğru ele alır." +- icon: 📖 + title: Okunabilir + desc: "ChronoUnit.DAYS.between() doğal dil gibi okunur." +support: + description: JDK 8'den (Mart 2014) itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/datetime/hex-format.yaml b/translations/content/tr/datetime/hex-format.yaml new file mode 100644 index 0000000..106ab5e --- /dev/null +++ b/translations/content/tr/datetime/hex-format.yaml @@ -0,0 +1,18 @@ +--- +title: HexFormat +oldApproach: Manuel Hex Dönüşümü +modernApproach: HexFormat +summary: "HexFormat ile hex dizileri ve bayt dizileri arasında dönüşüm yapın." +explanation: "HexFormat, baytlar, int'ler ve diziler için iki yönlü hex kodlama/kod çözme sağlar. Sınırlayıcıları, ön eki, son eki ve büyük/küçük harf kullanımını yapılandırın. Artık manuel biçimlendirme veya ayrıştırma gerekmez." +whyModernWins: +- icon: 📐 + title: İki yönlü + desc: "Tek bir API ile bayt→hex ve hex→bayt dönüşümü yapın." +- icon: 🔧 + title: Yapılandırılabilir + desc: "Sınırlayıcılar, ön ek, son ek, büyük/küçük harf desteği." +- icon: 📦 + title: Dizi desteği + desc: "Tüm bayt dizilerini tek seferde kodlayın/kodunu çözün." +support: + description: JDK 17 LTS'den (Eylül 2021) itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/datetime/instant-precision.yaml b/translations/content/tr/datetime/instant-precision.yaml new file mode 100644 index 0000000..17c2643 --- /dev/null +++ b/translations/content/tr/datetime/instant-precision.yaml @@ -0,0 +1,18 @@ +--- +title: Nanosaniye hassasiyetli Instant +oldApproach: Milisaniyeler +modernApproach: Nanosaniyeler +summary: "Mikrosaniye veya nanosaniye hassasiyetiyle zaman damgaları alın." +explanation: "Java 9, saat çözünürlüğünü iyileştirdi; böylece Instant.now() çoğu platformda mikrosaniye hassasiyeti (bazılarında nanosaniye) yakalıyor. Eski currentTimeMillis() yalnızca milisaniye sağlar." +whyModernWins: +- icon: 🎯 + title: Daha yüksek hassasiyet + desc: "Milisaniye yerine mikrosaniye/nanosaniye zaman damgaları." +- icon: 📐 + title: Tür-güvenli + desc: "Instant hassasiyetini taşır — belirsiz long türü yok." +- icon: 🌐 + title: UTC tabanlı + desc: "Instant her zaman UTC'dedir — saat dilimi karışıklığı yok." +support: + description: JDK 9'dan (Eylül 2017) itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/datetime/java-time-basics.yaml b/translations/content/tr/datetime/java-time-basics.yaml new file mode 100644 index 0000000..22b435d --- /dev/null +++ b/translations/content/tr/datetime/java-time-basics.yaml @@ -0,0 +1,18 @@ +--- +title: java.time API temelleri +oldApproach: Date + Calendar +modernApproach: java.time.* +summary: "Date ve Calendar yerine değişmez ve açık tarih/saat türlerini kullanın." +explanation: "java.time; LocalDate, LocalTime, LocalDateTime, Instant, ZonedDateTime sağlar — hepsi değişmez ve thread-safe'dir. Aylar 1'den başlar. Artık Calendar.JANUARY = 0 karışıklığı yok." +whyModernWins: +- icon: 🔒 + title: Değişmez + desc: "Tarih/saat değerleri yanlışlıkla değiştirilemez." +- icon: 📖 + title: Açık API + desc: "0 değil Month.JANUARY; 2 değil DayOfWeek.MONDAY." +- icon: 🛡️ + title: Thread-safe + desc: "Senkronizasyon gerekmez — iş parçacıkları arasında serbestçe paylaşın." +support: + description: JDK 8'den (Mart 2014) itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/datetime/math-clamp.yaml b/translations/content/tr/datetime/math-clamp.yaml new file mode 100644 index 0000000..db49c49 --- /dev/null +++ b/translations/content/tr/datetime/math-clamp.yaml @@ -0,0 +1,18 @@ +--- +title: Math.clamp() +oldApproach: İç içe min/max +modernApproach: Math.clamp() +summary: "Bir değeri tek ve açık bir çağrıyla sınırlar arasında kısıtlayın." +explanation: "Math.clamp(value, min, max), bir değeri [min, max] aralığıyla kısıtlar. İç içe Math.min/Math.max'tan daha açık ve int, long, float ve double için kullanılabilir." +whyModernWins: +- icon: 📖 + title: Kendini belgeleyen + desc: "clamp(value, min, max) belirsizlik içermez." +- icon: 🛡️ + title: Daha az hata eğilimli + desc: "Artık min/max sırasını yanlışlıkla yer değiştirme riski yok." +- icon: 🎯 + title: Tüm sayısal türler + desc: "int, long, float ve double ile çalışır." +support: + description: JDK 21 LTS'den (Eylül 2023) itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/ejb-timer-vs-jakarta-scheduler.yaml b/translations/content/tr/enterprise/ejb-timer-vs-jakarta-scheduler.yaml new file mode 100644 index 0000000..2f76cef --- /dev/null +++ b/translations/content/tr/enterprise/ejb-timer-vs-jakarta-scheduler.yaml @@ -0,0 +1,18 @@ +--- +title: EJB Timer ve Jakarta Scheduler +oldApproach: EJB TimerService +modernApproach: ManagedScheduledExecutorService +summary: "Ağır EJB zamanlayıcıları, daha basit zamanlama için Jakarta Concurrency'nin ManagedScheduledExecutorService'i ile değiştirin." +explanation: "EJB zamanlayıcıları, @Timeout geri çağrısı olan bir @Stateless veya @Singleton bean ve XML ya da ek açıklama tabanlı zamanlama ifadeleri gerektirir. Jakarta Concurrency, tanıdık java.util.concurrent zamanlama API'sini kullanan ManagedScheduledExecutorService sağlar. Sonuç: daha az şablon kod, daha kolay birim testi ve EJB kapsayıcı bağımlılığı yok." +whyModernWins: +- icon: 🪶 + title: Azaltılmış şablon kod + desc: "@Timeout geri çağrısı veya ScheduleExpression yok — standart ScheduledExecutorService API'sini kullanın." +- icon: 🧪 + title: Daha iyi test edilebilirlik + desc: "Düz yöntemler ve executor mock'ları, EJB kapsayıcı olmadan birim testini basit hale getirir." +- icon: ☁️ + title: Buluta uyumlu + desc: "Yönetilen yürütücüler, kapsayıcı yaşam döngüsüyle entegre olur ve hafif çalışma ortamlarında çalışır." +support: + description: Jakarta EE 10 / Concurrency 3.0'dan itibaren kullanılabilir diff --git a/translations/content/tr/enterprise/ejb-vs-cdi.yaml b/translations/content/tr/enterprise/ejb-vs-cdi.yaml new file mode 100644 index 0000000..9d32ebc --- /dev/null +++ b/translations/content/tr/enterprise/ejb-vs-cdi.yaml @@ -0,0 +1,18 @@ +--- +title: EJB ile CDI Karşılaştırması +oldApproach: EJB +modernApproach: CDI Bean +summary: "Bağımlılık enjeksiyonu ve işlemler için ağır EJB'leri hafif CDI bean'leri ile değiştirin." +explanation: "CDI (Contexts and Dependency Injection), EJB'lerle aynı bağımlılık enjeksiyonu ve işlem yönetimini sağlar; ancak kapsayıcıya özel arayüzler veya üst sınıflar olmadan düz Java sınıfları olarak. @ApplicationScoped ve @RequestScoped gibi kapsamlar yaşam döngüsünü kontrol eder; @Transactional ise zorunlu EJB işlem semantiğinin yerini alır." +whyModernWins: +- icon: 🪶 + title: Hafif + desc: "CDI bean'leri, EJB'ye özel arayüzler veya tanımlayıcılar olmadan düz Java sınıflarıdır." +- icon: 💉 + title: Birleşik enjeksiyon + desc: "@Inject; tüm yönetilen bean'ler, JAX-RS kaynakları ve Jakarta EE bileşenlerinde çalışır." +- icon: 🧪 + title: Kolay birim testi + desc: "EJB proxy ek yükü olmayan düz sınıflar, örneklendirmek ve mock'lamak için çok daha basittir." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/jdbc-resultset-vs-jpa-criteria.yaml b/translations/content/tr/enterprise/jdbc-resultset-vs-jpa-criteria.yaml new file mode 100644 index 0000000..d9c303f --- /dev/null +++ b/translations/content/tr/enterprise/jdbc-resultset-vs-jpa-criteria.yaml @@ -0,0 +1,18 @@ +--- +title: JDBC ResultSet Eşleme ile JPA Criteria API Karşılaştırması +oldApproach: JDBC ResultSet +modernApproach: JPA Criteria API +summary: "Dinamik sorgular için manuel JDBC ResultSet eşlemesini JPA'nın tür-güvenli Criteria API'siyle değiştirin." +explanation: "Ham JDBC, SQL dizilerinin oluşturulmasını, parametrelerin dizine göre ayarlanmasını ve her ResultSet sütununun manuel olarak eşlenmesini gerektirir — bu süreç hata eğilimlidir ve sütunlar değiştiğinde sessizce bozulur. JPA Criteria API, tür-güvenli bir oluşturucu deseni kullanarak sorguları programatik olarak oluşturur. Sütun adları entity modeline göre doğrulanır, sonuç eşlemesi otomatik yapılır ve karmaşık dinamik sorgular dize birleştirme olmadan temiz biçimde oluşturulur." +whyModernWins: +- icon: 🔒 + title: Tür-güvenli sorgular + desc: "Criteria oluşturucusu, alan adı ve tür uyumsuzluklarını derleme zamanında yakalar." +- icon: 🗺️ + title: Otomatik eşleme + desc: "JPA, sonuç satırlarını entity nesnelerine eşler — sütun bazında manuel çıkarma yok." +- icon: 🧩 + title: Birleştirilebilir koşullar + desc: "Dinamik where koşulları, and(), or() ve yeniden kullanılabilir Predicate nesneleriyle temiz biçimde oluşturulur." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/jdbc-vs-jooq.yaml b/translations/content/tr/enterprise/jdbc-vs-jooq.yaml new file mode 100644 index 0000000..3d25790 --- /dev/null +++ b/translations/content/tr/enterprise/jdbc-vs-jooq.yaml @@ -0,0 +1,18 @@ +--- +title: JDBC ile jOOQ Karşılaştırması +oldApproach: Ham JDBC +modernApproach: jOOQ SQL DSL +summary: "Ham JDBC dize tabanlı SQL'i jOOQ'nun tür-güvenli, akıcı SQL DSL'i ile değiştirin." +explanation: "jOOQ (Java Object Oriented Querying), veritabanı şemanızdan Java kodu üretir; tablo ve sütun adlarını tür-güvenli Java sabitlerına dönüştürür. Akıcı DSL, SQL söz dizimini yansıtır; böylece sorgular okunabilir ve birleştirilebilir olur. Tüm parametreler otomatik olarak bağlanır ve SQL enjeksiyonu riski ortadan kalkar. JPA/JPQL'den farklı olarak jOOQ, SQL'i tam anlamıyla benimser — pencere fonksiyonları, CTE'ler, RETURNING cümleleri ve satıcıya özgü uzantılar birinci sınıf desteklenir." +whyModernWins: +- icon: 🔒 + title: Tür-güvenli sütunlar + desc: "Sütun adları üretilmiş Java sabitleridir — yazım hataları ve tür uyumsuzlukları çalışma zamanı hataları yerine derleyici hatalarına dönüşür." +- icon: 📖 + title: SQL akıcılığı + desc: "jOOQ DSL, SQL söz dizimini yakından yansıtır; karmaşık JOIN'ler, alt sorgular ve CTE'ler okunabilir kalır." +- icon: 🛡️ + title: Tasarım gereği enjeksiyonsuz + desc: "Parametreler her zaman güvenli şekilde bağlanır — dize birleştirme olmadığından SQL enjeksiyonu riski yoktur." +support: + description: "jOOQ açık kaynak sürümü tüm büyük açık kaynak veritabanlarını destekler; eski ticari veritabanlar ücretli lisans gerektirir" diff --git a/translations/content/tr/enterprise/jdbc-vs-jpa.yaml b/translations/content/tr/enterprise/jdbc-vs-jpa.yaml new file mode 100644 index 0000000..1836978 --- /dev/null +++ b/translations/content/tr/enterprise/jdbc-vs-jpa.yaml @@ -0,0 +1,18 @@ +--- +title: JDBC ile JPA Karşılaştırması +oldApproach: JDBC +modernApproach: JPA EntityManager +summary: "Ayrıntılı JDBC şablon kodunu JPA'nın nesne-ilişkisel eşleme ve EntityManager'ı ile değiştirin." +explanation: "JPA (Jakarta Persistence API), Java nesnelerini veritabanı satırlarına eşler; manuel ResultSet işleme ve SQL dize birleştirmeyi ortadan kaldırır. EntityManager, find(), persist() ve JPQL sorguları sağlar; böylece ham SQL yerine etki alanı nesneleriyle çalışırsınız; kapsayıcı ise bağlantı havuzlama ve işlemleri yönetir." +whyModernWins: +- icon: 🗺️ + title: Nesne eşleme + desc: "Entity'ler düz açıklamalı sınıflardır — manuel ResultSet'ten nesneye çeviri yok." +- icon: 🔒 + title: Tür-güvenli sorgular + desc: "JPQL, ham tablo ve sütun dizeleri yerine entity türleri ve alanlar üzerinde çalışır." +- icon: ⚡ + title: Yerleşik önbellekleme + desc: "Birinci ve ikinci düzey önbellekler, veritabanı gidiş-dönüşlerini otomatik olarak azaltır." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/jndi-lookup-vs-cdi-injection.yaml b/translations/content/tr/enterprise/jndi-lookup-vs-cdi-injection.yaml new file mode 100644 index 0000000..4120782 --- /dev/null +++ b/translations/content/tr/enterprise/jndi-lookup-vs-cdi-injection.yaml @@ -0,0 +1,18 @@ +--- +title: JNDI Arama ile CDI Enjeksiyonu Karşılaştırması +oldApproach: JNDI Arama +modernApproach: CDI @Inject +summary: "Kırılgan JNDI dize aramalarını, kapsayıcı tarafından yönetilen kaynaklar için tür-güvenli CDI enjeksiyonuyla değiştirin." +explanation: "Geleneksel JNDI deseni, dize tabanlı kaynak adları kullanmayı, NamingException'ı işlemeyi ve bir InitialContext yönetmeyi zorlar. @Inject (veya kapsayıcı kaynakları için @Resource) ile CDI enjeksiyonu, kapsayıcının bağımlılıkları otomatik olarak bağlamasını sağlar. Yazım hataları derleme zamanı hatalarına dönüşür ve sınıflar, bağımlılıklar doğrudan enjekte edilebildiğinden test edilmesi daha kolaydır." +whyModernWins: +- icon: 🔒 + title: Tür-güvenli bağlama + desc: "Enjeksiyon hataları, dize aramaları yerine dağıtım zamanında yakalanır." +- icon: 🗑️ + title: Şablon kod yok + desc: "InitialContext oluşturma, JNDI ad dizeleri ve NamingException işlemeyi ortadan kaldırır." +- icon: 🧪 + title: Test edilebilir + desc: "Bağımlılıklar enjekte edilmiş alanlardır; birim testlerinde mock'larla kolayca değiştirilebilir." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/jpa-vs-jakarta-data.yaml b/translations/content/tr/enterprise/jpa-vs-jakarta-data.yaml new file mode 100644 index 0000000..0767b15 --- /dev/null +++ b/translations/content/tr/enterprise/jpa-vs-jakarta-data.yaml @@ -0,0 +1,18 @@ +--- +title: JPA ile Jakarta Data Karşılaştırması +oldApproach: JPA EntityManager +modernApproach: Jakarta Data Repository +summary: "Bir repository arayüzü tanımlayın ve Jakarta Data'nın DAO uygulamasını otomatik olarak oluşturmasına izin verin." +explanation: "Jakarta Data (Jakarta EE 11), veri erişimini saf bir arayüz bildirimine dönüştürür. Bir arayüzü @Repository ile açıklarsınız ve CrudRepository gibi yerleşik bir repository türünü genişletirsiniz. Çalışma zamanı, findByName gibi yöntem adlarından türetilmiş sorgular dahil uygulamayı üretir — dolayısıyla EntityManager şablon kodu, JPQL dizeleri ve elle yazılmış save/find yöntemleri yoktur." +whyModernWins: +- icon: 🪄 + title: Sıfır şablon kod + desc: "Arayüzü tanımlayın; kapsayıcı dağıtım zamanında tam DAO uygulamasını üretir." +- icon: 🔍 + title: Türetilmiş sorgular + desc: "findByNameAndStatus gibi yöntem adları otomatik olarak ayrıştırılır — JPQL veya SQL gerekmez." +- icon: 🔌 + title: Taşınabilir + desc: "Jakarta EE 11 uyumlu herhangi bir çalışma ortamı, satıcı bağımlılığı olmadan repository uygulamasını sağlar." +support: + description: Jakarta EE 11 / Java 21'den itibaren kullanılabilir (2024) diff --git a/translations/content/tr/enterprise/jsf-managed-bean-vs-cdi-named.yaml b/translations/content/tr/enterprise/jsf-managed-bean-vs-cdi-named.yaml new file mode 100644 index 0000000..17d5e9b --- /dev/null +++ b/translations/content/tr/enterprise/jsf-managed-bean-vs-cdi-named.yaml @@ -0,0 +1,18 @@ +--- +title: JSF Managed Bean ile CDI Named Bean Karşılaştırması +oldApproach: "@ManagedBean" +modernApproach: "@Named + CDI" +summary: "Birleşik bir bağımlılık enjeksiyonu modeli için kullanımdan kaldırılmış JSF @ManagedBean'i CDI @Named ile değiştirin." +explanation: "JSF'in @ManagedBean ve @ManagedProperty'si, Jakarta Faces 2.3'te kullanımdan kaldırıldı ve Jakarta EE 10'da kaldırıldı. CDI tabanlı değişiklik, bean'i EL ifadelerine açmak için @Named ve bağımlılık bağlama için @Inject kullanır. Bu, bean modelini birleştirir: JSF sayfaları, JAX-RS kaynakları ve EJB'ler aynı CDI kapsayıcısını paylaşır." +whyModernWins: +- icon: 🔗 + title: Birleşik model + desc: "Tek bir CDI kapsayıcısı tüm bean'leri yönetir — JSF, REST ve hizmet katmanları aynı enjeksiyonu paylaşır." +- icon: 🗑️ + title: Daha az şablon kod + desc: "@Inject, @ManagedProperty ve gerekli setter yönteminin yerini alır." +- icon: 🔮 + title: Geleceğe hazır + desc: "@ManagedBean, Jakarta EE 10'da kaldırılmıştır; @Named desteklenen yerini alandır." +support: + description: "CDI @Named Java EE 6'dan itibaren kullanılabilir; @ManagedBean Jakarta EE 10'da kaldırılmıştır" diff --git a/translations/content/tr/enterprise/manual-transaction-vs-declarative.yaml b/translations/content/tr/enterprise/manual-transaction-vs-declarative.yaml new file mode 100644 index 0000000..309eeba --- /dev/null +++ b/translations/content/tr/enterprise/manual-transaction-vs-declarative.yaml @@ -0,0 +1,18 @@ +--- +title: Manuel JPA İşlemi ile Bildirimsel @Transactional Karşılaştırması +oldApproach: Manuel İşlem +modernApproach: "@Transactional" +summary: "Ayrıntılı begin/commit/rollback bloklarını tek bir @Transactional açıklamasıyla değiştirin." +explanation: "Manuel işlem yönetimi, try-catch bloklarına sarılmış açık begin(), commit() ve rollback() çağrıları gerektirir — her hizmet yöntemi bu şablon kodu tekrar eder. @Transactional açıklaması, yaşam döngüsü yönetimini kapsayıcıya devreder: yöntemden önce bir işlem başlatır, başarıda commit eder ve RuntimeException durumunda otomatik olarak geri alır." +whyModernWins: +- icon: 🗑️ + title: Şablon kod yok + desc: "Tek bir açıklama, tekrarlayan begin/commit/rollback try-catch bloklarının yerini alır." +- icon: 🛡️ + title: Daha güvenli geri alma + desc: "Kapsayıcı, denetlenmemiş istisnalarda geri almayı garanti eder — catch bloğunu unutma riski yok." +- icon: 📐 + title: Bildirimsel kontrol + desc: "Yayılım, yalıtım ve geri alma kuralları açıklama öznitelikleri olarak ifade edilir." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/mdb-vs-reactive-messaging.yaml b/translations/content/tr/enterprise/mdb-vs-reactive-messaging.yaml new file mode 100644 index 0000000..019494c --- /dev/null +++ b/translations/content/tr/enterprise/mdb-vs-reactive-messaging.yaml @@ -0,0 +1,18 @@ +--- +title: Message-Driven Bean ile Reactive Messaging Karşılaştırması +oldApproach: Message-Driven Bean +modernApproach: Reactive Messaging +summary: "Daha basit olay işleme için JMS Message-Driven Bean'leri MicroProfile Reactive Messaging ile değiştirin." +explanation: "Message-Driven Bean'ler, MessageListener'ı uygulamayı, etkinleştirme özelliklerini yapılandırmayı ve JMS iletilerini manuel olarak seri dışı bırakmayı gerektirir. MicroProfile Reactive Messaging, doğrudan yazılı nesneler alan bir yöntem üzerinde basit bir @Incoming açıklaması kullanır. Kanal yapılandırması dışarı çıkarılır; bu da kodu aracı-agnostik ve test edilmesi çok daha kolay hale getirir." +whyModernWins: +- icon: 🪶 + title: Minimal kod + desc: "Tek bir @Incoming yöntemi, MDB sınıfının, MessageListener arayüzünün ve etkinleştirme yapılandırmasının yerini alır." +- icon: 🔌 + title: Aracı-agnostik + desc: "Uygulama kodunu değiştirmeden yapılandırma yoluyla Kafka, AMQP veya JMS bağlayıcılarını değiştirin." +- icon: ☁️ + title: Buluta uyumlu + desc: "Reaktif akışlar geri baskısı ve hafif çalışma ortamı, konteynerleştirilmiş dağıtımlar için idealdir." +support: + description: MicroProfile 4.0 / SmallRye Reactive Messaging'den itibaren kullanılabilir diff --git a/translations/content/tr/enterprise/servlet-vs-jaxrs.yaml b/translations/content/tr/enterprise/servlet-vs-jaxrs.yaml new file mode 100644 index 0000000..c0ff7b7 --- /dev/null +++ b/translations/content/tr/enterprise/servlet-vs-jaxrs.yaml @@ -0,0 +1,18 @@ +--- +title: Servlet ile JAX-RS Karşılaştırması +oldApproach: HttpServlet +modernApproach: JAX-RS Resource +summary: "Ayrıntılı HttpServlet şablon kodunu bildirimsel JAX-RS kaynak sınıflarıyla değiştirin." +explanation: "JAX-RS (Jakarta RESTful Web Services), @GET, @Path ve @Produces gibi basit açıklamalar kullanarak REST uç noktaları açığa çıkarmanızı sağlar. Artık istek parametrelerini manuel olarak ayrıştırmaya veya yanıtta içerik türlerini ayarlamaya gerek yok — çalışma zamanı, sıralama ve yönlendirmeyi otomatik olarak yönetir." +whyModernWins: +- icon: 📐 + title: Bildirimsel yönlendirme + desc: "Açıklamalar, zorunlu if/else dağıtımı yerine HTTP yöntemini, yolu ve içerik türünü tanımlar." +- icon: 🔄 + title: Otomatik sıralama + desc: "POJO'ları doğrudan döndürün; çalışma zamanı bunları @Produces'a göre JSON veya XML'e serileştirir." +- icon: 🧪 + title: Daha kolay test + desc: "Kaynak sınıfları düz Java nesneleridir; servlet kapsayıcısı olmadan test edilebilir." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/singleton-ejb-vs-cdi-application-scoped.yaml b/translations/content/tr/enterprise/singleton-ejb-vs-cdi-application-scoped.yaml new file mode 100644 index 0000000..3eeaa39 --- /dev/null +++ b/translations/content/tr/enterprise/singleton-ejb-vs-cdi-application-scoped.yaml @@ -0,0 +1,18 @@ +--- +title: Singleton EJB ile CDI @ApplicationScoped Karşılaştırması +oldApproach: "@Singleton EJB" +modernApproach: "@ApplicationScoped CDI" +summary: "Singleton EJB'leri daha basit paylaşılan durum yönetimi için CDI @ApplicationScoped bean'lerle değiştirin." +explanation: "Singleton EJB'ler, eşzamanlılık yönetimini (@Lock, @ConcurrencyManagement) ve istekli başlatmayı (@Startup) EJB kapsayıcısına dahil eder. Bir CDI @ApplicationScoped bean, çok daha az törenle aynı tek örnek yaşam döngüsünü elde eder. Eşzamanlılık kontrolü gerektiğinde, standart java.util.concurrent yardımcı programları EJB kilit açıklamalarından daha ince taneli kontrol sağlar." +whyModernWins: +- icon: 🪶 + title: Daha az açıklama gürültüsü + desc: "@ConcurrencyManagement, @Lock veya @Startup yok — yalnızca tek bir @ApplicationScoped açıklaması." +- icon: 🔧 + title: Esnek eşzamanlılık + desc: "Tam olarak ihtiyacınız olan iş parçacığı güvenliği için java.util.concurrent kilitleri veya volatile kullanın." +- icon: 🧪 + title: Kolay test + desc: "Düz CDI bean'leri, EJB kapsayıcısı olmadan testlerde doğrudan örneklendirilebilir." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/soap-vs-jakarta-rest.yaml b/translations/content/tr/enterprise/soap-vs-jakarta-rest.yaml new file mode 100644 index 0000000..1b0fa81 --- /dev/null +++ b/translations/content/tr/enterprise/soap-vs-jakarta-rest.yaml @@ -0,0 +1,18 @@ +--- +title: SOAP Web Servisleri ile Jakarta REST Karşılaştırması +oldApproach: JAX-WS / SOAP +modernApproach: Jakarta REST / JSON +summary: "Ağır SOAP/WSDL uç noktalarını JSON döndüren temiz Jakarta REST kaynaklarıyla değiştirin." +explanation: "SOAP tabanlı web servisleri, önemli ek yük katan WSDL sözleşmeleri, XML sıralama ve JAX-WS açıklamalarına dayanır. Jakarta REST (eski adıyla JAX-RS), RESTful JSON API'lerini açığa çıkarmak için @GET, @Path ve @Produces gibi sezgisel açıklamalar kullanır. Programlama modeli daha basit, yükler daha küçük ve yaklaşım modern mikro servislerin iletişim biçimiyle örtüşüyor." +whyModernWins: +- icon: 🪶 + title: Daha hafif yükler + desc: "JSON, SOAP XML zarflarına kıyasla daha kompakttır; bant genişliği ve ayrıştırma ek yükünü azaltır." +- icon: 📐 + title: Basit açıklamalar + desc: "@GET, @Path ve @Produces; WSDL, @WebService ve @WebMethod töreninin yerini alır." +- icon: 🔌 + title: Mikro servise hazır + desc: "REST/JSON, buluta özgü mimarilerde servisler arası iletişimin standardıdır." +support: + description: Jakarta EE 8 / Java 11'den itibaren geniş çapta kullanılabilir diff --git a/translations/content/tr/enterprise/spring-api-versioning.yaml b/translations/content/tr/enterprise/spring-api-versioning.yaml new file mode 100644 index 0000000..7c3c30f --- /dev/null +++ b/translations/content/tr/enterprise/spring-api-versioning.yaml @@ -0,0 +1,18 @@ +--- +title: Spring Framework 7 API Sürümlendirme +oldApproach: Manuel URL Yolu Sürümlendirme +modernApproach: Yerel API Sürümlendirme +summary: "Yinelenen sürüm önekli controller'ları Spring Framework 7'nin yerel API sürümlendirme desteğiyle değiştirin." +explanation: "Spring Framework 7 öncesinde, API sürümlendirme her sürüm için ayrı controller sınıfları gerektiriyordu (örn. /api/v1/products, /api/v2/products); bu da istek eşlemelerini kopyalıyor ve sürüm mantığını birçok dosyaya yayıyordu. Spring Framework 7, @RequestMapping ve ilgili açıklamalardaki yeni version özniteliği ile WebMvcConfigurer'daki configureApiVersioning kancası aracılığıyla yerel sürümlendirmeyi tanıtıyor. Sürüm, bir istek başlığından, URL yolu segmentinden veya sorgu parametresinden çözümlenebilir — hepsi tek bir yerde kontrol edilir." +whyModernWins: +- icon: 🗂️ + title: Controller yinelemesi yok + desc: "Tüm sürümler tek bir controller sınıfında yaşar; yalnızca bireysel işleyici yöntemleri bir version özniteliği taşır." +- icon: ⚙️ + title: Merkezi sürüm stratejisi + desc: "Tek bir configureApiVersioning çağrısıyla başlıktan URL'ye veya sorgu parametresi sürümlendirmesine geçin." +- icon: 📈 + title: Kademeli gelişim + desc: "İlgisiz uç noktalara dokunmadan veya yeni controller dosyaları oluşturmadan tek bir yönteme yeni bir sürüm ekleyin." +support: + description: Spring Framework 7.0'dan itibaren kullanılabilir (Java 17+ gerektirir) diff --git a/translations/content/tr/enterprise/spring-null-safety-jspecify.yaml b/translations/content/tr/enterprise/spring-null-safety-jspecify.yaml new file mode 100644 index 0000000..2c73e6e --- /dev/null +++ b/translations/content/tr/enterprise/spring-null-safety-jspecify.yaml @@ -0,0 +1,18 @@ +--- +title: JSpecify ile Spring Null Safety +oldApproach: Spring @NonNull/@Nullable +modernApproach: JSpecify @NullMarked +summary: "Spring 7, JSpecify açıklamalarını benimseyerek null olmayan değeri varsayılan yapar ve açıklama gürültüsünü azaltır." +explanation: "Spring 5 ve 6, org.springframework.lang paketinde kendi null güvenlik açıklamalarını tanıttı. Yararlı olmakla birlikte bunlar çerçeveye özgüydü ve her null olmayan öğeyi açıkça açıklamayı gerektiriyordu. Spring 7, null güvenliği için çapraz ekosistem standardı olan JSpecify'a geçiş yapıyor. Sınıf veya paket düzeyindeki @NullMarked açıklaması, açıklanmamış tüm türlerin varsayılan olarak null olmayan olduğunu belirtir. Yalnızca gerçekten null olabilecek türlerin @Nullable açıklamasına ihtiyacı vardır; bu da ayrıntıyı önemli ölçüde azaltır. JSpecify açıklamaları NullAway, Error Prone ve IntelliJ IDEA gibi büyük statik analiz araçları tarafından tanınır ve Spring'e özgü açıklamaların sağladığından daha zengin araç desteği sunar." +whyModernWins: +- icon: ✂️ + title: Varsayılan olarak null olmayan + desc: "@NullMarked, açıklanmamış tüm türleri null olmayan yapar; yalnızca nullable istisnalar açıklama gerektirir." +- icon: 🌐 + title: Ekosistem standardı + desc: "JSpecify açıklamaları, NullAway, Error Prone ve IDE'ler tarafından tanınan çapraz çerçeve standardıdır." +- icon: 🔍 + title: Daha zengin araç desteği + desc: "Modern statik analizörler JSpecify'ın null modelini anlar ve ihlalleri derleme zamanında bildirir." +support: + description: Spring Framework 7.0'dan itibaren kullanılabilir (Java 17+ gerektirir) diff --git a/translations/content/tr/enterprise/spring-xml-config-vs-annotations.yaml b/translations/content/tr/enterprise/spring-xml-config-vs-annotations.yaml new file mode 100644 index 0000000..db57a46 --- /dev/null +++ b/translations/content/tr/enterprise/spring-xml-config-vs-annotations.yaml @@ -0,0 +1,18 @@ +--- +title: Spring XML Bean Yapılandırması ile Açıklama Tabanlı Karşılaştırması +oldApproach: XML Bean Tanımları +modernApproach: Açıklama Tabanlı Bean'ler +summary: "Ayrıntılı Spring XML bean tanımlarını Spring Boot'ta özlü açıklama tabanlı yapılandırmayla değiştirin." +explanation: "Geleneksel Spring uygulamaları, her sınıfı ve bağımlılıklarını ayrıntılı öğeleri olarak bildiren XML yapılandırma dosyaları aracılığıyla bean'leri bağlardı. Spring 2.5'ten itibaren açıklama desteği mevcut olsa da Spring Boot otomatik yapılandırmayı tanıtana kadar XML baskın yaklaşım olmaya devam etti. Spring Boot, classpath taraması yoluyla @Component, @Service, @Repository ve @Controller ile açıklanmış bean'leri algılar, kurucu enjeksiyon yoluyla bağımlılıkları otomatik karşılar ve classpath'ten DataSource gibi altyapıyı yapılandırır — tüm XML bağlama dosyalarını ortadan kaldırır." +whyModernWins: +- icon: 🚫 + title: XML yok + desc: "@SpringBootApplication, bileşen taramayı ve otomatik yapılandırmayı tetikler; tüm XML bağlama dosyalarını ortadan kaldırır." +- icon: 💉 + title: Kurucu enjeksiyon + desc: "Spring, bağımlılıkları otomatik olarak kurucular aracılığıyla enjekte eder; bean'leri test etmeyi ve anlamayı kolaylaştırır." +- icon: ⚡ + title: Otomatik yapılandırma + desc: "Spring Boot, DataSource, JPA ve diğer altyapıyı classpath'ten sıfır şablon kodla yapılandırır." +support: + description: "Spring Boot 1.0'dan (Nisan 2014) itibaren geniş çapta kullanılabilir; Spring Boot 3 Java 17+ gerektirir" diff --git a/translations/strings/tr.yaml b/translations/strings/tr.yaml new file mode 100644 index 0000000..a04e498 --- /dev/null +++ b/translations/strings/tr.yaml @@ -0,0 +1,89 @@ +site: + title: java.evolved + tagline: Java gelişti. Kodun da gelişebilir. + tagline_line1: Java gelişti. + tagline_line2: Kodun da gelişebilir. + description: Modern Java kod parçacıklarından oluşan bir koleksiyon. Her eski Java deseni, temiz ve modern karşılığının yanında — yan yana. + heroSnippetCount: ✦ {{snippetCount}} modern desen · Java 8 → Java 25 + heroOld: Eski + heroModern: Modern + allComparisons: Tüm karşılaştırmalar + snippetsBadge: '{{snippetCount}} parçacık' +nav: + allPatterns: ← Tüm desenler + toggleTheme: Temayı değiştir + viewOnGitHub: GitHub'da görüntüle + selectLanguage: Dil seç +breadcrumb: + home: Ana Sayfa +sections: + codeComparison: Kod Karşılaştırması + whyModernWins: Modern yöntem neden daha iyi + oldApproach: Eski Yaklaşım + modernApproach: Modern Yaklaşım + sinceJdk: JDK'dan itibaren + difficulty: Zorluk + jdkSupport: JDK Desteği + howItWorks: Nasıl çalışır + relatedDocs: İlgili Belgeler + relatedPatterns: İlgili desenler +filters: + show: 'Göster:' + all: Tümü +difficulty: + beginner: Başlangıç + intermediate: Orta + advanced: İleri +search: + placeholder: Parçacık ara… + noResults: Sonuç bulunamadı. + esc: ESC + searchTrigger: Ara… + navigate: gezin + open: aç + close: kapat +cards: + old: Eski + modern: Modern + hoverHint: modernini görmek için üzerine gel → + hoverHintRelated: Modernini görmek için üzerine gel ➜ + touchHint: 👆 dokun veya kaydır → + learnMore: daha fazla bilgi +copy: + copy: Kopyala + copied: Kopyalandı! +share: + label: Paylaş +view: + expandAll: Tümünü Genişlet + collapseAll: Tümünü Daralt +stats: + modernPatterns: Modern Desenler + jdkVersions: Kapsanan JDK Sürümleri + categories: Kategoriler + linesOfPython: Gereken Python Satırı +footer: + tagline: Java gelişti. Kodun da gelişebilir. + madeWith: ❤️ ile yapıldı + and: ve + inspiredBy: İlham kaynağı + viewOnGitHub: GitHub'da görüntüle +copilot: + headline: Java kod tabanınızı GitHub Copilot ile modernleştirin. + description: Copilot'un eski desenleri modern Java'ya otomatik olarak geçirmenize yardımcı olmasına izin verin. + appModernization: Uygulama Modernizasyonu → + javaGuide: Java Kılavuzu → +support: + available: Mevcut + preview: Önizleme + experimental: Deneysel +contribute: + button: Katkıda Bulun + codeIssue: Kod sorunu bildir + translationIssue: Çeviri sorunu bildir + suggestPattern: Yeni desen öner + seeIssue: "Bu kodda bir sorun mu gördünüz?" + reportIt: "Bize bildirin." +untranslated: + notice: Bu sayfa henüz {{localeName}} diline çevrilmemiştir. + viewInEnglish: İngilizce olarak görüntüle From d60776663a5147d1f595de953c8c123efed3ceae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:36:35 +0000 Subject: [PATCH 4/6] Add Turkish (tr) translations for errors, io, and security categories Translate 22 content YAML files to Turkish: - errors: helpful-npe, multi-catch, null-in-switch, optional-chaining, optional-orelsethrow, record-based-errors, require-nonnull-else - io: deserialization-filters, file-memory-mapping, files-mismatch, http-client, inputstream-transferto, io-class-console-io, path-of, reading-files, try-with-resources-effectively-final, writing-files - security: key-derivation-functions, pem-encoding, random-generator, strong-random, tls-default Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../content/tr/errors/helpful-npe.yaml | 18 ++++++++++++++++++ .../content/tr/errors/multi-catch.yaml | 18 ++++++++++++++++++ .../content/tr/errors/null-in-switch.yaml | 18 ++++++++++++++++++ .../content/tr/errors/optional-chaining.yaml | 18 ++++++++++++++++++ .../tr/errors/optional-orelsethrow.yaml | 18 ++++++++++++++++++ .../content/tr/errors/record-based-errors.yaml | 18 ++++++++++++++++++ .../tr/errors/require-nonnull-else.yaml | 18 ++++++++++++++++++ .../content/tr/io/deserialization-filters.yaml | 18 ++++++++++++++++++ .../content/tr/io/file-memory-mapping.yaml | 18 ++++++++++++++++++ translations/content/tr/io/files-mismatch.yaml | 18 ++++++++++++++++++ translations/content/tr/io/http-client.yaml | 18 ++++++++++++++++++ .../content/tr/io/inputstream-transferto.yaml | 18 ++++++++++++++++++ .../content/tr/io/io-class-console-io.yaml | 18 ++++++++++++++++++ translations/content/tr/io/path-of.yaml | 18 ++++++++++++++++++ translations/content/tr/io/reading-files.yaml | 18 ++++++++++++++++++ .../try-with-resources-effectively-final.yaml | 18 ++++++++++++++++++ translations/content/tr/io/writing-files.yaml | 18 ++++++++++++++++++ .../tr/security/key-derivation-functions.yaml | 18 ++++++++++++++++++ .../content/tr/security/pem-encoding.yaml | 18 ++++++++++++++++++ .../content/tr/security/random-generator.yaml | 18 ++++++++++++++++++ .../content/tr/security/strong-random.yaml | 18 ++++++++++++++++++ .../content/tr/security/tls-default.yaml | 18 ++++++++++++++++++ 22 files changed, 396 insertions(+) create mode 100644 translations/content/tr/errors/helpful-npe.yaml create mode 100644 translations/content/tr/errors/multi-catch.yaml create mode 100644 translations/content/tr/errors/null-in-switch.yaml create mode 100644 translations/content/tr/errors/optional-chaining.yaml create mode 100644 translations/content/tr/errors/optional-orelsethrow.yaml create mode 100644 translations/content/tr/errors/record-based-errors.yaml create mode 100644 translations/content/tr/errors/require-nonnull-else.yaml create mode 100644 translations/content/tr/io/deserialization-filters.yaml create mode 100644 translations/content/tr/io/file-memory-mapping.yaml create mode 100644 translations/content/tr/io/files-mismatch.yaml create mode 100644 translations/content/tr/io/http-client.yaml create mode 100644 translations/content/tr/io/inputstream-transferto.yaml create mode 100644 translations/content/tr/io/io-class-console-io.yaml create mode 100644 translations/content/tr/io/path-of.yaml create mode 100644 translations/content/tr/io/reading-files.yaml create mode 100644 translations/content/tr/io/try-with-resources-effectively-final.yaml create mode 100644 translations/content/tr/io/writing-files.yaml create mode 100644 translations/content/tr/security/key-derivation-functions.yaml create mode 100644 translations/content/tr/security/pem-encoding.yaml create mode 100644 translations/content/tr/security/random-generator.yaml create mode 100644 translations/content/tr/security/strong-random.yaml create mode 100644 translations/content/tr/security/tls-default.yaml diff --git a/translations/content/tr/errors/helpful-npe.yaml b/translations/content/tr/errors/helpful-npe.yaml new file mode 100644 index 0000000..fe81c7a --- /dev/null +++ b/translations/content/tr/errors/helpful-npe.yaml @@ -0,0 +1,18 @@ +--- +title: Yardımcı NullPointerException'lar +oldApproach: Belirsiz NPE +modernApproach: Ayrıntılı NPE +summary: "JVM, hangi değişkenin null olduğunu otomatik olarak tam olarak söyler." +explanation: "Yardımcı NPE'ler hangi ifadenin null olduğunu ve hangi işlemin başarısız olduğunu açıklar. Bu özellik Java 14'ten itibaren varsayılan olarak etkindir — herhangi bir kod değişikliğine gerek yoktur, yalnızca JDK'yı yükseltin." +whyModernWins: +- icon: "🔍" + title: "Tam değişken" + desc: "Mesaj, zincirdeki null değişkeni adlandırır." +- icon: "⚡" + title: "Daha hızlı hata ayıklama" + desc: "Zincirleme 5 çağrıdan hangisinin null olduğunu artık tahmin etmek gerekmez." +- icon: "🆓" + title: "Ücretsiz yükseltme" + desc: "Kod değişikliği gerekmez — sadece JDK 14+ üzerinde çalıştırın." +support: + description: JDK 14'ten itibaren geniş çapta kullanılabilir (Mart 2020) diff --git a/translations/content/tr/errors/multi-catch.yaml b/translations/content/tr/errors/multi-catch.yaml new file mode 100644 index 0000000..0e6daeb --- /dev/null +++ b/translations/content/tr/errors/multi-catch.yaml @@ -0,0 +1,18 @@ +--- +title: Çoklu istisna yakalama +oldApproach: Ayrı Catch Blokları +modernApproach: Çoklu catch +summary: "Birden fazla istisna türünü tek bir catch bloğunda yakalayın." +explanation: "Çoklu catch, aynı kodla birden fazla istisna türünü işler. İstisna değişkeni fiilen final olduğundan, sarmalamaya gerek kalmadan yeniden fırlatılabilir." +whyModernWins: +- icon: "📏" + title: "DRY" + desc: "Aynı işlem mantığı üç kez yerine bir kez yazılır." +- icon: "🔄" + title: "Yeniden fırlatılabilir" + desc: "Yakalanan istisna, tam türüyle yeniden fırlatılabilir." +- icon: "📖" + title: "Taranabilir" + desc: "Tüm işlenen türler tek bir yerde görünür." +support: + description: JDK 7'den itibaren geniş çapta kullanılabilir (Temmuz 2011) diff --git a/translations/content/tr/errors/null-in-switch.yaml b/translations/content/tr/errors/null-in-switch.yaml new file mode 100644 index 0000000..a14f43e --- /dev/null +++ b/translations/content/tr/errors/null-in-switch.yaml @@ -0,0 +1,18 @@ +--- +title: Switch içinde null durumu +oldApproach: Switch Öncesi Koruma +modernApproach: case null +summary: "null değerini doğrudan bir switch durumu olarak işleyin — ayrı koruma gerekmez." +explanation: "Örüntü eşleştirme switch, null değerini bir durum etiketi olarak eşleştirebilir. Bu, switch öncesinde null kontrolüne olan ihtiyacı ortadan kaldırır ve null işlemeyi açık ve görünür kılar." +whyModernWins: +- icon: "🎯" + title: "Açık" + desc: "null işleme doğrudan switch içinde görünür." +- icon: "🛡️" + title: "NPE yok" + desc: "null değer üzerinde switch, NullPointerException fırlatmaz." +- icon: "📐" + title: "Hepsi bir arada" + desc: "null dahil tüm durumlar tek bir switch ifadesinde." +support: + description: JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023) diff --git a/translations/content/tr/errors/optional-chaining.yaml b/translations/content/tr/errors/optional-chaining.yaml new file mode 100644 index 0000000..3ce23cb --- /dev/null +++ b/translations/content/tr/errors/optional-chaining.yaml @@ -0,0 +1,18 @@ +--- +title: Optional zincirleme +oldApproach: İç İçe Null Kontrolleri +modernApproach: Optional Pipeline +summary: "İç içe null kontrollerini Optional pipeline ile değiştirin." +explanation: "Optional.map(), null değerler üzerinden kısa devre yaparak zincirleme sağlar. orElse() varsayılanı sağlar. Bu, piramit şeklindeki null kontrolünü ortadan kaldırır." +whyModernWins: +- icon: "🔗" + title: "Zincirlenebilir" + desc: "Her .map() adımı null'ı şeffaf biçimde işler." +- icon: "📖" + title: "Doğrusal akış" + desc: "İç içe if blokları yerine soldan sağa okunur." +- icon: "🛡️" + title: "NPE'ye karşı korumalı" + desc: "Her adımda null işlenir — çökme mümkün değildir." +support: + description: JDK 8+'dan itibaren kullanılabilir (9+'da iyileştirildi) diff --git a/translations/content/tr/errors/optional-orelsethrow.yaml b/translations/content/tr/errors/optional-orelsethrow.yaml new file mode 100644 index 0000000..c8c601c --- /dev/null +++ b/translations/content/tr/errors/optional-orelsethrow.yaml @@ -0,0 +1,18 @@ +--- +title: Supplier olmadan Optional.orElseThrow() +oldApproach: get() veya orElseThrow(supplier) +modernApproach: orElseThrow() +summary: "get() için daha net ve niyeti açıklayan bir alternatif olarak Optional.orElseThrow() kullanın." +explanation: "Optional.get(), başarısızlık olasılığını gizlediği için yaygın biçimde kötü uygulama olarak kabul edilir. Java 10'da eklenen argümansız orElseThrow(), tam olarak aynı şeyi yapar ama niyeti açık kılar: geliştirici bir değer bekler ve yoksa istisna ister." +whyModernWins: +- icon: "📖" + title: "Kendini belgeleyen" + desc: "orElseThrow(), yokluğun beklenmedik olduğunu açıkça belirtir." +- icon: "🔒" + title: "get()'ten kaçınır" + desc: "Statik analiz araçları get()'i riskli olarak işaretler; orElseThrow() deyimseldir." +- icon: "⚡" + title: "Daha az şablon kod" + desc: "Varsayılan NoSuchElementException için supplier geçirmeye gerek yoktur." +support: + description: JDK 10'dan itibaren kullanılabilir (Mart 2018). diff --git a/translations/content/tr/errors/record-based-errors.yaml b/translations/content/tr/errors/record-based-errors.yaml new file mode 100644 index 0000000..de6abfe --- /dev/null +++ b/translations/content/tr/errors/record-based-errors.yaml @@ -0,0 +1,18 @@ +--- +title: Record tabanlı hata yanıtları +oldApproach: Map veya Ayrıntılı Sınıf +modernApproach: Hata Record'ları +summary: "Özlü, değiştirilemez hata yanıt türleri için record kullanın." +explanation: "Record'lar hata yanıtları için mükemmeldir — değiştirilemezler, karşılaştırma için yerleşik equals/hashCode'a ve günlükleme için toString'e sahiptirler. Özel yapıcılar doğrulama veya varsayılan değerler ekler." +whyModernWins: +- icon: "📏" + title: "Özlü" + desc: "Hata türlerini 30 satır yerine 3 satırda tanımlayın." +- icon: "🔒" + title: "Değiştirilemez" + desc: "Hata verileri oluşturulduktan sonra yanlışlıkla değiştirilemez." +- icon: "📋" + title: "Otomatik toString" + desc: "Günlükleme için mükemmel — tüm alanları otomatik olarak gösterir." +support: + description: JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021) diff --git a/translations/content/tr/errors/require-nonnull-else.yaml b/translations/content/tr/errors/require-nonnull-else.yaml new file mode 100644 index 0000000..e74c7a2 --- /dev/null +++ b/translations/content/tr/errors/require-nonnull-else.yaml @@ -0,0 +1,18 @@ +--- +title: Objects.requireNonNullElse() +oldApproach: Üçlü Null Kontrolü +modernApproach: requireNonNullElse() +summary: "Üçlü operatöre gerek kalmadan net bir varsayılanla null olmayan değer elde edin." +explanation: "requireNonNullElse, ilk argüman null değilse onu döndürür, aksi takdirde ikinciyi döndürür. Varsayılanın kendisi null olamaz — her ikisi de null ise NPE fırlatarak hataları erken yakalar." +whyModernWins: +- icon: "📖" + title: "Net niyet" + desc: "Metod adı tam olarak ne yaptığını açıklar." +- icon: "🛡️" + title: "Null güvenli varsayılan" + desc: "Varsayılan değer de null açısından kontrol edilir." +- icon: "📏" + title: "Okunabilir" + desc: "Basit null-ya-da-varsayılan mantığı için üçlü operatörden daha iyidir." +support: + description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017) diff --git a/translations/content/tr/io/deserialization-filters.yaml b/translations/content/tr/io/deserialization-filters.yaml new file mode 100644 index 0000000..7d61224 --- /dev/null +++ b/translations/content/tr/io/deserialization-filters.yaml @@ -0,0 +1,18 @@ +--- +title: Seri duruma getirme filtreleri +oldApproach: Her Şeyi Kabul Et +modernApproach: ObjectInputFilter +summary: "Saldırıları önlemek için hangi sınıfların seri durumdan çıkarılabileceğini kısıtlayın." +explanation: "ObjectInputFilter, sınıfları izin listesine/reddetme listesine almanıza, nesne grafiği derinliğini, dizi boyutlarını ve referans sayılarını sınırlandırmanıza olanak tanır. Bu, harici kütüphaneler olmadan seri duruma getirme güvenlik açıklarına karşı koruma sağlar." +whyModernWins: +- icon: "🛡️" + title: "Güvenlik" + desc: "Beklenmedik/kötü niyetli sınıfların seri durumdan çıkarılmasını önleyin." +- icon: "📐" + title: "İnce taneli" + desc: "Derinlik, dizi boyutu, referanslar ve sınıf örüntülerini kontrol edin." +- icon: "🏗️" + title: "JVM genelinde" + desc: "JVM'deki tüm seri duruma getirme işlemleri için global filtre belirleyin." +support: + description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017) diff --git a/translations/content/tr/io/file-memory-mapping.yaml b/translations/content/tr/io/file-memory-mapping.yaml new file mode 100644 index 0000000..3dd7993 --- /dev/null +++ b/translations/content/tr/io/file-memory-mapping.yaml @@ -0,0 +1,18 @@ +--- +title: Dosya bellek eşleme +oldApproach: MappedByteBuffer +modernApproach: Arena ile MemorySegment +summary: "MemorySegment kullanarak 2 GB'tan büyük dosyaları belirleyici temizlemeyle eşleyin." +explanation: "Foreign Function & Memory API (JEP 454), güvenli ve verimli bellek erişimi için MemorySegment'i tanıtır. MappedByteBuffer'dan farklı olarak MemorySegment, 2 GB'tan (Integer.MAX_VALUE) büyük dosyaları destekler, Arena aracılığıyla belirleyici temizleme sağlar ve modern donanımla daha iyi performans sunar." +whyModernWins: +- icon: "📏" + title: "Boyut sınırı yok" + desc: "Geçici çözümler olmadan 2 GB'tan büyük dosyaları eşleyin." +- icon: "🔒" + title: "Belirleyici temizleme" + desc: "Arena, belleğin GC zamanında değil kapsam çıkışında serbest bırakılmasını sağlar." +- icon: "⚡" + title: "Daha iyi performans" + desc: "Modern bellek modelleri ve donanımla uyumlu." +support: + description: JDK 22'den itibaren kullanılabilir (Mart 2024) diff --git a/translations/content/tr/io/files-mismatch.yaml b/translations/content/tr/io/files-mismatch.yaml new file mode 100644 index 0000000..a856203 --- /dev/null +++ b/translations/content/tr/io/files-mismatch.yaml @@ -0,0 +1,18 @@ +--- +title: Files.mismatch() +oldApproach: Manuel Bayt Karşılaştırma +modernApproach: Files.mismatch() +summary: "İki dosyayı belleğe yüklemeden verimli biçimde karşılaştırın." +explanation: "Files.mismatch(), farklılık gösteren ilk baytın konumunu döndürür veya dosyalar özdeşse -1 döndürür. Tembel okur ve ilk farklılıkta kısa devre yapar." +whyModernWins: +- icon: "⚡" + title: "Bellek verimli" + desc: "Dosyaların tamamını bayt dizilerine yüklemez." +- icon: "🎯" + title: "Farkı tam olarak bulur" + desc: "İlk uyumsuzluğun tam bayt konumunu döndürür." +- icon: "📏" + title: "Tek çağrı" + desc: "Manuel bayt dizisi karşılaştırma mantığına gerek yoktur." +support: + description: JDK 12'den itibaren geniş çapta kullanılabilir (Mart 2019) diff --git a/translations/content/tr/io/http-client.yaml b/translations/content/tr/io/http-client.yaml new file mode 100644 index 0000000..edfb4aa --- /dev/null +++ b/translations/content/tr/io/http-client.yaml @@ -0,0 +1,18 @@ +--- +title: Modern HTTP istemcisi +oldApproach: HttpURLConnection +modernApproach: HttpClient +summary: "Temiz, modern HTTP istekleri için yerleşik HttpClient'ı kullanın." +explanation: "HttpClient, HTTP/1.1 ve HTTP/2, asenkron istekler, WebSocket, özel executor'lar ve bağlantı havuzlamayı destekler. Artık URLConnection cast etmeye veya InputStream'leri manuel olarak okumaya gerek yoktur." +whyModernWins: +- icon: "📐" + title: "Builder API" + desc: "İstekler, başlıklar ve zaman aşımları için akıcı builder." +- icon: "🔄" + title: "HTTP/2 desteği" + desc: "Çoklama ve sunucu push ile yerleşik HTTP/2." +- icon: "⚡" + title: "Asenkrona hazır" + desc: "sendAsync(), CompletableFuture döndürür." +support: + description: JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018) diff --git a/translations/content/tr/io/inputstream-transferto.yaml b/translations/content/tr/io/inputstream-transferto.yaml new file mode 100644 index 0000000..9138644 --- /dev/null +++ b/translations/content/tr/io/inputstream-transferto.yaml @@ -0,0 +1,18 @@ +--- +title: InputStream.transferTo() +oldApproach: Manuel Kopyalama Döngüsü +modernApproach: transferTo() +summary: "Bir InputStream'i tek çağrıyla OutputStream'e kopyalayın." +explanation: "transferTo(), giriş akışındaki tüm baytları okur ve çıkış akışına yazar. Tampon yönetimi veya döngü gerekmez. Optimize edilmiş bir iç tampon kullanır." +whyModernWins: +- icon: "📏" + title: "Tek satır" + desc: "Tüm okuma/yazma döngüsünü tek bir metod çağrısıyla değiştirin." +- icon: "⚡" + title: "Optimize edilmiş" + desc: "İç tampon boyutu performans için ayarlanmıştır." +- icon: "🛡️" + title: "Hata yok" + desc: "Tampon yönetiminde tek tek kayma hatası yoktur." +support: + description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017) diff --git a/translations/content/tr/io/io-class-console-io.yaml b/translations/content/tr/io/io-class-console-io.yaml new file mode 100644 index 0000000..4579a46 --- /dev/null +++ b/translations/content/tr/io/io-class-console-io.yaml @@ -0,0 +1,18 @@ +--- +title: Konsol G/Ç için IO sınıfı +oldApproach: System.out / Scanner +modernApproach: IO sınıfı +summary: "Yeni IO sınıfı, konsol girişi ve çıkışı için basit ve özlü metodlar sağlar." +explanation: "Java 25, örtük olarak tanımlanan sınıflar özelliğinin bir parçası olarak IO sınıfını (java.io.IO) tanıtır. println(), print(), readln() ve read() gibi statik metodlar sağlayarak System.out ile Scanner'ın ayrıntılı kombinasyonunun yerini alır. IO.readln(prompt), tek bir çağrıda hem istem vermeyi hem de okumayı gerçekleştirir. Sınıf, kompakt kaynak dosyalarında otomatik olarak kullanılabilir ve geleneksel sınıflarda import ile kullanılabilir." +whyModernWins: +- icon: "✨" + title: "Çok daha basit" + desc: "İki metod, Scanner kurulumu, istem verme, okuma ve temizlemenin yedi satırının yerini alır." +- icon: "🔒" + title: "Kaynak sızıntısı yok" + desc: "Kapatılacak Scanner yok — IO metodları kaynak yönetimini dahili olarak halleder." +- icon: "🎓" + title: "Başlangıç dostu" + desc: "Yeni geliştiriciler Scanner, System.out veya import ifadelerini öğrenmeden konsol G/Ç yapabilir." +support: + description: "JDK 25'te örtük olarak tanımlanan sınıfların bir parçası olarak önizleme (JEP 495)" diff --git a/translations/content/tr/io/path-of.yaml b/translations/content/tr/io/path-of.yaml new file mode 100644 index 0000000..29c2efc --- /dev/null +++ b/translations/content/tr/io/path-of.yaml @@ -0,0 +1,18 @@ +--- +title: Path.of() fabrika metodu +oldApproach: Paths.get() +modernApproach: Path.of() +summary: "Path arayüzündeki modern fabrika metodu olan Path.of()'u kullanın." +explanation: "Path.of(), ayrı Paths yardımcı sınıfının yerini alarak doğrudan Path arayüzüne eklenmiş bir fabrika metodudur. Daha keşfedilebilir ve List.of(), Map.of() vb. ile tutarlıdır." +whyModernWins: +- icon: "📐" + title: "Tutarlı API" + desc: "List.of(), Set.of() gibi .of() fabrika örüntüsünü izler." +- icon: "📖" + title: "Keşfedilebilir" + desc: "Ayrı bir Paths sınıfı değil, Path türünün kendisinde bulunur." +- icon: "🧹" + title: "Bir sınıf daha az" + desc: "Paths yardımcı sınıfını import etmeye gerek yoktur." +support: + description: JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018) diff --git a/translations/content/tr/io/reading-files.yaml b/translations/content/tr/io/reading-files.yaml new file mode 100644 index 0000000..32ef718 --- /dev/null +++ b/translations/content/tr/io/reading-files.yaml @@ -0,0 +1,18 @@ +--- +title: Dosya okuma +oldApproach: BufferedReader +modernApproach: Files.readString() +summary: "Bir dosyanın tamamını tek satırla String'e okuyun." +explanation: "Files.readString(), bir dosyanın tüm içeriğini String'e okur. Kodlamayı (varsayılan olarak UTF-8) ve kaynak temizliğini halleder. Büyük dosyalar için tembel akış amacıyla Files.lines() kullanın." +whyModernWins: +- icon: "📏" + title: "Tek satır" + desc: "8 satırlık BufferedReader şablon kodunun yerini alır." +- icon: "🧹" + title: "Otomatik temizleme" + desc: "Dosya tanıtıcısı otomatik olarak kapatılır." +- icon: "🌐" + title: "Varsayılan UTF-8" + desc: "Varsayılan olarak doğru kodlama — karakter kümesi karışıklığı yok." +support: + description: JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018) diff --git a/translations/content/tr/io/try-with-resources-effectively-final.yaml b/translations/content/tr/io/try-with-resources-effectively-final.yaml new file mode 100644 index 0000000..b20d6d7 --- /dev/null +++ b/translations/content/tr/io/try-with-resources-effectively-final.yaml @@ -0,0 +1,18 @@ +--- +title: Try-with-resources iyileştirmesi +oldApproach: Değişkeni Yeniden Tanımla +modernApproach: Fiilen Final +summary: "Fiilen final olan mevcut değişkenleri doğrudan try-with-resources içinde kullanın." +explanation: "Java 9, fiilen final olan değişkenlerin yeniden tanımlanmadan doğrudan try-with-resources içinde kullanılmasına olanak tanır. Kaynak try bloğunun dışında oluşturulduğunda bu daha temiz bir çözümdür." +whyModernWins: +- icon: "🧹" + title: "Yeniden tanımlama yok" + desc: "Mevcut değişken adını doğrudan kullanın." +- icon: "📖" + title: "Daha az karışıklık" + desc: "Try bloğu içinde ayrı değişken adı gerekmez." +- icon: "📏" + title: "Özlü" + desc: "Daha az satır, aynı kaynak güvenliği." +support: + description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017) diff --git a/translations/content/tr/io/writing-files.yaml b/translations/content/tr/io/writing-files.yaml new file mode 100644 index 0000000..54fc63c --- /dev/null +++ b/translations/content/tr/io/writing-files.yaml @@ -0,0 +1,18 @@ +--- +title: Dosya yazma +oldApproach: FileWriter + BufferedWriter +modernApproach: Files.writeString() +summary: "Bir String'i tek satırla dosyaya yazın." +explanation: "Files.writeString(), içeriği varsayılan olarak UTF-8 kodlamasıyla dosyaya yazar. Ekleme, oluşturma vb. için seçenekler geçirilebilir." +whyModernWins: +- icon: "📏" + title: "Tek satır" + desc: "Writer sarmalama veya try-with-resources gerekmez." +- icon: "🛡️" + title: "Güvenli varsayılanlar" + desc: "UTF-8 kodlama, uygun dosya tanıtıcısı temizliği." +- icon: "🔧" + title: "Seçenekler" + desc: "Ekleme, oluşturma vb. için OpenOption bayrakları geçirin." +support: + description: JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018) diff --git a/translations/content/tr/security/key-derivation-functions.yaml b/translations/content/tr/security/key-derivation-functions.yaml new file mode 100644 index 0000000..7f56103 --- /dev/null +++ b/translations/content/tr/security/key-derivation-functions.yaml @@ -0,0 +1,18 @@ +--- +title: Anahtar Türetme Fonksiyonları +oldApproach: Manuel PBKDF2 +modernApproach: KDF API +summary: "Standart KDF API'sini kullanarak kriptografik anahtarlar türetin." +explanation: "KDF API, HKDF dahil anahtar türetme fonksiyonları için standart bir arayüz sağlar. Garip SecretKeyFactory + PBEKeySpec örüntüsünü temiz bir builder API'si ile değiştirir." +whyModernWins: +- icon: "📐" + title: "Temiz API" + desc: "Garip KeySpec yapıcıları yerine builder örüntüsü." +- icon: "🔧" + title: "HKDF desteği" + desc: "PBKDF2'nin yanında modern HKDF algoritması." +- icon: "🛡️" + title: "Standart" + desc: "Tüm anahtar türetme algoritmaları için birleşik API." +support: + description: "JDK 25 LTS'de sonuçlandırıldı (JEP 510, Eylül 2025)." diff --git a/translations/content/tr/security/pem-encoding.yaml b/translations/content/tr/security/pem-encoding.yaml new file mode 100644 index 0000000..8d4a77e --- /dev/null +++ b/translations/content/tr/security/pem-encoding.yaml @@ -0,0 +1,18 @@ +--- +title: PEM kodlama/çözme +oldApproach: Manuel Base64 + Başlıklar +modernApproach: PEM API +summary: "Kriptografik nesneleri yerel olarak PEM formatında kodlayın ve çözün." +explanation: "PEM API, sertifikalar, anahtarlar ve diğer kriptografik nesneler için PEM formatında standart kodlama/çözme sağlar. Artık BEGIN/END başlıklarıyla manuel Base64 sarmalamaya gerek yoktur." +whyModernWins: +- icon: "🧹" + title: "Manuel Base64 yok" + desc: "PEM başlıkları, satır sarmalama ve Base64 otomatik olarak işlenir." +- icon: "🔄" + title: "İki yönlü" + desc: "Tek bir API ile PEM'e kodlama ve PEM'den çözme." +- icon: "🛡️" + title: "Standart format" + desc: "RFC 7468 uyumlu PEM çıktısı üretir." +support: + description: "JDK 25'te önizleme (JEP 470). --enable-preview gerektirir." diff --git a/translations/content/tr/security/random-generator.yaml b/translations/content/tr/security/random-generator.yaml new file mode 100644 index 0000000..b807dbf --- /dev/null +++ b/translations/content/tr/security/random-generator.yaml @@ -0,0 +1,18 @@ +--- +title: RandomGenerator arayüzü +oldApproach: new Random() / ThreadLocalRandom +modernApproach: RandomGenerator fabrikası +summary: "Belirli bir sınıfa bağlı kalmadan rastgele sayı algoritmalarını ada göre seçmek için RandomGenerator arayüzünü kullanın." +explanation: "JDK 17, tüm RNG uygulamaları için ortak arayüz olarak RandomGenerator'ı tanıttı. new Random() veya ThreadLocalRandom'ı sabit kodlamak yerine, farklı kullanım durumları için optimize edilmiş algoritmalar arasında kolayca geçiş yapmayı sağlayan bir fabrika aracılığıyla ada göre algoritma seçebilirsiniz (hız, istatistiksel kalite, bölünebilirlik)." +whyModernWins: +- icon: "🔧" + title: "Algoritmadan bağımsız" + desc: "Kod yapısını değiştirmeden en iyi RNG algoritmasını ada göre seçin." +- icon: "⚡" + title: "Daha iyi algoritmalar" + desc: "Üstün istatistiksel özelliklere sahip modern LXM üreticilerine erişim." +- icon: "🔗" + title: "Birleşik API" + desc: "Tek arayüz; Random, ThreadLocalRandom, SplittableRandom ve daha fazlasını kapsar." +support: + description: "JDK 17'den itibaren kullanılabilir (Eylül 2021, JEP 356)." diff --git a/translations/content/tr/security/strong-random.yaml b/translations/content/tr/security/strong-random.yaml new file mode 100644 index 0000000..a5889e0 --- /dev/null +++ b/translations/content/tr/security/strong-random.yaml @@ -0,0 +1,18 @@ +--- +title: Güçlü rastgele üretim +oldApproach: new SecureRandom() +modernApproach: getInstanceStrong() +summary: "Platformun en güçlü SecureRandom uygulamasını edinin." +explanation: "getInstanceStrong(), platformda en güçlü olarak yapılandırılan SecureRandom uygulamasını döndürür. Bu, securerandom.strongAlgorithms güvenlik özelliği tarafından kontrol edilir." +whyModernWins: +- icon: "🛡️" + title: "Mevcut en güçlüsü" + desc: "Platform için en iyi algoritmayı otomatik olarak seçer." +- icon: "📖" + title: "Açık niyet" + desc: "Güçlü rastgeleliğin gerekli olduğunu açıkça belirtir." +- icon: "🔧" + title: "Yapılandırılabilir" + desc: "Yöneticiler güvenlik özellikleri aracılığıyla güçlü algoritmayı değiştirebilir." +support: + description: JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017) diff --git a/translations/content/tr/security/tls-default.yaml b/translations/content/tr/security/tls-default.yaml new file mode 100644 index 0000000..a3913c8 --- /dev/null +++ b/translations/content/tr/security/tls-default.yaml @@ -0,0 +1,18 @@ +--- +title: Varsayılan olarak TLS 1.3 +oldApproach: Manuel TLS Yapılandırması +modernApproach: Varsayılan TLS 1.3 +summary: "TLS 1.3 varsayılan olarak etkindir — açık protokol yapılandırmasına gerek yoktur." +explanation: "Java 11, TLS 1.3 desteğini ekledi ve onu tercih edilen protokol yaptı. HttpClient bunu otomatik olarak kullanır. Güvenli bağlantılar için artık protokol sürümlerini manuel olarak belirtmeye gerek yoktur." +whyModernWins: +- icon: "🛡️" + title: "Daha güvenli" + desc: "TLS 1.3, eski şifre paketlerini ve el sıkışma örüntülerini kaldırır." +- icon: "⚡" + title: "Daha hızlı el sıkışma" + desc: "TLS 1.3, iki yerine tek bir gidip gelişte tamamlanır." +- icon: "🆓" + title: "Sıfır yapılandırma" + desc: "Varsayılan olarak güvenli — açık protokol seçimine gerek yoktur." +support: + description: JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018) From 706e75ac6e020ccd5f4517dc72311ac9030de42b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:43:04 +0000 Subject: [PATCH 5/6] Add Turkish (tr) translations for language category (22 files) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../compact-canonical-constructor.yaml | 18 ++++++++++++++++++ .../tr/language/compact-source-files.yaml | 18 ++++++++++++++++++ .../tr/language/default-interface-methods.yaml | 18 ++++++++++++++++++ .../content/tr/language/diamond-operator.yaml | 18 ++++++++++++++++++ .../content/tr/language/exhaustive-switch.yaml | 18 ++++++++++++++++++ .../language/flexible-constructor-bodies.yaml | 18 ++++++++++++++++++ .../content/tr/language/guarded-patterns.yaml | 18 ++++++++++++++++++ .../tr/language/markdown-javadoc-comments.yaml | 18 ++++++++++++++++++ .../language/module-import-declarations.yaml | 18 ++++++++++++++++++ .../language/pattern-matching-instanceof.yaml | 18 ++++++++++++++++++ .../tr/language/pattern-matching-switch.yaml | 18 ++++++++++++++++++ .../language/primitive-types-in-patterns.yaml | 18 ++++++++++++++++++ .../tr/language/private-interface-methods.yaml | 18 ++++++++++++++++++ .../content/tr/language/record-patterns.yaml | 18 ++++++++++++++++++ .../tr/language/records-for-data-classes.yaml | 18 ++++++++++++++++++ .../content/tr/language/sealed-classes.yaml | 18 ++++++++++++++++++ .../static-members-in-inner-classes.yaml | 18 ++++++++++++++++++ .../language/static-methods-in-interfaces.yaml | 18 ++++++++++++++++++ .../tr/language/switch-expressions.yaml | 18 ++++++++++++++++++ .../text-blocks-for-multiline-strings.yaml | 18 ++++++++++++++++++ .../tr/language/type-inference-with-var.yaml | 18 ++++++++++++++++++ .../content/tr/language/unnamed-variables.yaml | 18 ++++++++++++++++++ 22 files changed, 396 insertions(+) create mode 100644 translations/content/tr/language/compact-canonical-constructor.yaml create mode 100644 translations/content/tr/language/compact-source-files.yaml create mode 100644 translations/content/tr/language/default-interface-methods.yaml create mode 100644 translations/content/tr/language/diamond-operator.yaml create mode 100644 translations/content/tr/language/exhaustive-switch.yaml create mode 100644 translations/content/tr/language/flexible-constructor-bodies.yaml create mode 100644 translations/content/tr/language/guarded-patterns.yaml create mode 100644 translations/content/tr/language/markdown-javadoc-comments.yaml create mode 100644 translations/content/tr/language/module-import-declarations.yaml create mode 100644 translations/content/tr/language/pattern-matching-instanceof.yaml create mode 100644 translations/content/tr/language/pattern-matching-switch.yaml create mode 100644 translations/content/tr/language/primitive-types-in-patterns.yaml create mode 100644 translations/content/tr/language/private-interface-methods.yaml create mode 100644 translations/content/tr/language/record-patterns.yaml create mode 100644 translations/content/tr/language/records-for-data-classes.yaml create mode 100644 translations/content/tr/language/sealed-classes.yaml create mode 100644 translations/content/tr/language/static-members-in-inner-classes.yaml create mode 100644 translations/content/tr/language/static-methods-in-interfaces.yaml create mode 100644 translations/content/tr/language/switch-expressions.yaml create mode 100644 translations/content/tr/language/text-blocks-for-multiline-strings.yaml create mode 100644 translations/content/tr/language/type-inference-with-var.yaml create mode 100644 translations/content/tr/language/unnamed-variables.yaml diff --git a/translations/content/tr/language/compact-canonical-constructor.yaml b/translations/content/tr/language/compact-canonical-constructor.yaml new file mode 100644 index 0000000..f2f4a5d --- /dev/null +++ b/translations/content/tr/language/compact-canonical-constructor.yaml @@ -0,0 +1,18 @@ +--- +title: Kompakt kanonik constructor +oldApproach: Açık constructor doğrulaması +modernApproach: Kompakt constructor +summary: "Record alanlarını parametre listelerini tekrar etmeden doğrulayın ve normalleştirin." +explanation: "Record'lar, parametre listesini ve alan atamalarını atlayan kompakt kanonik constructor tanımlayabilir. Derleyici, doğrulama mantığınız çalıştıktan sonra parametreleri alanlara otomatik olarak atar. Bu, ön koşul kontrolleri, savunmacı kopyalar ve normalleştirme için idealdir." +whyModernWins: +- icon: "✂️" + title: Daha az tekrar + desc: "Parametre listesini tekrar etmeye veya her alanı elle atamaya gerek yoktur." +- icon: "🛡️" + title: Doğrulama + desc: "Null kontrolleri, aralık doğrulaması ve savunmacı kopyalar için mükemmeldir." +- icon: "📖" + title: Daha net niyet + desc: "Kompakt sözdizimi, şablon kodları değil doğrulamayı ön plana çıkarır." +support: + description: JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021) diff --git a/translations/content/tr/language/compact-source-files.yaml b/translations/content/tr/language/compact-source-files.yaml new file mode 100644 index 0000000..51e8106 --- /dev/null +++ b/translations/content/tr/language/compact-source-files.yaml @@ -0,0 +1,18 @@ +--- +title: Kompakt kaynak dosyaları +oldApproach: Ana Sınıf Tören Kodu +modernApproach: void main() +summary: "Sınıf bildirimi veya public static void main olmadan eksiksiz bir program yazın." +explanation: "Kompakt kaynak dosyaları, basit programlar için sınıf bildirimleri ve main metot imzasının törenini ortadan kaldırır. java.io.IO'nun örtük içe aktarımıyla birlikte println bile doğrudan kullanılabilir." +whyModernWins: +- icon: "🚀" + title: Sıfır tören + desc: "Sınıf yok, public static void main yok, String[] args yok." +- icon: "🎓" + title: Yeni başlayanlar için uygun + desc: "Yeni programcılar 1. satırdan itibaren kullanışlı kod yazabilir." +- icon: "📝" + title: Betik benzeri + desc: "Hızlı prototipler, betikler ve örnekler için mükemmeldir." +support: + description: "JDK 25 LTS'de tamamlandı (JEP 512, Eylül 2025)." diff --git a/translations/content/tr/language/default-interface-methods.yaml b/translations/content/tr/language/default-interface-methods.yaml new file mode 100644 index 0000000..c16632c --- /dev/null +++ b/translations/content/tr/language/default-interface-methods.yaml @@ -0,0 +1,18 @@ +--- +title: Varsayılan interface metotları +oldApproach: Paylaşılan davranış için soyut sınıflar +modernApproach: Interface'lerde varsayılan metotlar +summary: "Metot implementasyonlarını doğrudan interface'lere ekleyin ve çoklu davranış kalıtımını etkinleştirin." +explanation: "Java 8'den önce, ilgisiz sınıflar arasında davranış paylaşmak soyut sınıflar gerektiriyordu ve bu da sizi tek kalıtımla sınırlıyordu. Varsayılan metotlar, interface'lerin metot implementasyonları sağlamasına izin verir, böylece sınıflar birden fazla interface'den davranış kalıtımı alabilir. Bu, mevcut implementasyonları bozmadan Koleksiyonlar API'sini (örn. List.forEach, Map.getOrDefault) geliştirmek için gerekliydi." +whyModernWins: +- icon: "🔀" + title: Çoklu kalıtım + desc: "Sınıflar, tek soyut sınıf kalıtımının aksine, varsayılan metotlara sahip birçok interface'i uygulayabilir." +- icon: "📦" + title: API evrimi + desc: "Mevcut implementasyonları bozmadan interface'lere yeni metotlar ekleyin." +- icon: "🧩" + title: Birleştirilebilir davranış + desc: "Birden fazla interface'den yetenekleri özgürce karıştırın ve eşleştirin." +support: + description: "JDK 8'den itibaren kullanılabilir (Mart 2014)." diff --git a/translations/content/tr/language/diamond-operator.yaml b/translations/content/tr/language/diamond-operator.yaml new file mode 100644 index 0000000..6f67eb6 --- /dev/null +++ b/translations/content/tr/language/diamond-operator.yaml @@ -0,0 +1,18 @@ +--- +title: Anonim sınıflarla elmas operatörü +oldApproach: Tür Argümanlarını Tekrarlayın +modernApproach: "Elmas <>" +summary: "Elmas operatörü artık anonim sınıflarla da çalışır." +explanation: "Java 7, <> operatörünü tanıttı ancak anonim iç sınıflarla çalışmıyordu. Java 9 bunu düzeltti, böylece sağ tarafta tür argümanlarını asla tekrar etmeniz gerekmez." +whyModernWins: +- icon: "📏" + title: Tutarlı kurallar + desc: "Elmas her yerde çalışır — hem constructor'larda hem anonim sınıflarda." +- icon: "🧹" + title: Daha az tekrar + desc: "Tür argümanları solda bir kez belirtilir, asla tekrarlanmaz." +- icon: "🔧" + title: DRY ilkesi + desc: "Derleyici türü zaten biliyor — neden iki kez yazasınız ki?" +support: + description: "Anonim sınıflarla elmas operatörü JDK 9'dan itibaren kullanılabilir (Eylül 2017)." diff --git a/translations/content/tr/language/exhaustive-switch.yaml b/translations/content/tr/language/exhaustive-switch.yaml new file mode 100644 index 0000000..d1c2328 --- /dev/null +++ b/translations/content/tr/language/exhaustive-switch.yaml @@ -0,0 +1,18 @@ +--- +title: Varsayılan olmadan kapsamlı switch +oldApproach: Zorunlu default +modernApproach: sealed Kapsamlılığı +summary: "Derleyici tüm sealed alt türlerin kapsandığını doğrular — default gerekmez." +explanation: "Sealed bir türde switch kullandığınızda, derleyici tüm olası alt türleri bilir ve her durumun işlendiğini doğrular. Yeni bir alt tür eklerseniz, derleyici artık eksik olan her switch'i işaretler." +whyModernWins: +- icon: "✅" + title: Derleme zamanı güvenliği + desc: "Yeni bir alt tür ekleyin ve derleyici güncellenecek her yeri gösterir." +- icon: "🚫" + title: Ölü kod yok + desc: "Hataları gizleyen erişilemeyen varsayılan dal yoktur." +- icon: "📐" + title: Cebirsel türler + desc: "sealed + record'lar + kapsamlı switch = Java'da uygun ADT'ler." +support: + description: "JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)" diff --git a/translations/content/tr/language/flexible-constructor-bodies.yaml b/translations/content/tr/language/flexible-constructor-bodies.yaml new file mode 100644 index 0000000..3975f10 --- /dev/null +++ b/translations/content/tr/language/flexible-constructor-bodies.yaml @@ -0,0 +1,18 @@ +--- +title: Esnek constructor gövdeleri +oldApproach: "super()'dan Sonra Doğrula" +modernApproach: "super()'dan Önce Kod" +summary: "super() veya this() çağırmadan önce değerleri doğrulayın ve hesaplayın." +explanation: "Java 25, super()'ın ilk deyim olması zorunluluğunu kaldırır. Artık üst sınıf constructor'ına devretmeden önce argümanları doğrulayabilir, türetilmiş değerler hesaplayabilir ve durumu ayarlayabilirsiniz." +whyModernWins: +- icon: "🛡️" + title: Hızla başarısız ol + desc: "super() constructor çalışmadan önce argümanları doğrulayın." +- icon: "🧮" + title: Önce hesapla + desc: "super() çağırmadan önce değerleri türetin ve verileri hazırlayın." +- icon: "🧹" + title: Geçici çözüm yok + desc: "Kısıtlamayı aşmak için artık statik yardımcı metotlar veya fabrika kalıpları gerekmiyor." +support: + description: "JDK 25 LTS'de tamamlandı (JEP 513, Eylül 2025)." diff --git a/translations/content/tr/language/guarded-patterns.yaml b/translations/content/tr/language/guarded-patterns.yaml new file mode 100644 index 0000000..4419887 --- /dev/null +++ b/translations/content/tr/language/guarded-patterns.yaml @@ -0,0 +1,18 @@ +--- +title: when ile korumalı kalıplar +oldApproach: İç içe if +modernApproach: when Cümlesi +summary: "when koruyucularını kullanarak kalıp durumlarına koşullar ekleyin." +explanation: "Korumalı kalıplar, bir tür eşleşmesini ek bir boolean koşuluyla rafine etmenizi sağlar. Bu, durumların içinde if deyimlerini iç içe koymak yerine tüm dallanma mantığını switch içinde tutar." +whyModernWins: +- icon: "🎯" + title: Hassas eşleştirme + desc: "Tek bir case etiketinde tür + koşulu birleştirin." +- icon: "📐" + title: Düz yapı + desc: "switch durumları içinde iç içe if/else yoktur." +- icon: "📖" + title: Okunabilir niyet + desc: "when cümlesi doğal dil gibi okunur." +support: + description: "JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)" diff --git a/translations/content/tr/language/markdown-javadoc-comments.yaml b/translations/content/tr/language/markdown-javadoc-comments.yaml new file mode 100644 index 0000000..f19f4c8 --- /dev/null +++ b/translations/content/tr/language/markdown-javadoc-comments.yaml @@ -0,0 +1,18 @@ +--- +title: Javadoc yorumlarında Markdown +oldApproach: HTML tabanlı Javadoc +modernApproach: Markdown Javadoc +summary: "Daha iyi okunabilirlik için Javadoc yorumlarını HTML yerine Markdown ile yazın." +explanation: "Java 23, geleneksel /** */ HTML tabanlı biçime alternatif olarak /// Markdown stilinde Javadoc yorumlarını tanıtır. Markdown sözdizimi yazmak ve okumak için daha doğaldır; kod blokları, vurgu, listeler ve bağlantılar için destek sunar. Derleyici, javadoc çıktısı için Markdown'ı HTML'ye dönüştürür." +whyModernWins: +- icon: "📖" + title: Doğal sözdizimi + desc: "HTML etiketleri yerine satır içi kod için backtick ve bloklar için ``` kullanın." +- icon: "✍️" + title: Yazmak daha kolay + desc: "{@code},
, 

etiketlerine gerek yok — sadece Markdown yazın." +- icon: "👁" + title: Editörlerde daha iyi + desc: "Markdown, modern IDE'lerde ve metin editörlerinde güzel bir şekilde görüntülenir." +support: + description: "JDK 23'ten itibaren kullanılabilir (Eylül 2024)" diff --git a/translations/content/tr/language/module-import-declarations.yaml b/translations/content/tr/language/module-import-declarations.yaml new file mode 100644 index 0000000..8d9fdcf --- /dev/null +++ b/translations/content/tr/language/module-import-declarations.yaml @@ -0,0 +1,18 @@ +--- +title: Modül içe aktarım bildirimleri +oldApproach: Çok Sayıda İçe Aktarım +modernApproach: import module +summary: "Bir modülün dışa aktardığı tüm paketleri tek bir bildirimle içe aktarın." +explanation: "Modül içe aktarım bildirimleri, bir modülün dışa aktardığı her şeyi tek bir satırla içe aktarmanıza izin verir. Bu, özellikle koleksiyonları, G/Ç'yi, akışları ve daha fazlasını kapsayan java.base için kullanışlıdır." +whyModernWins: +- icon: "🧹" + title: Tek satır + desc: "Uzun içe aktarım listesini tek bir modül içe aktarımıyla değiştirin." +- icon: "📦" + title: Modüle duyarlı + desc: "Tutarlı paket kümelerini içe aktarmak için modül sistemini kullanır." +- icon: "🚀" + title: Hızlı başlangıç + desc: "İçe aktarım listelerinin sıkıcı olduğu betikler ve prototipler için mükemmeldir." +support: + description: "JDK 25 LTS'de tamamlandı (JEP 511, Eylül 2025)." diff --git a/translations/content/tr/language/pattern-matching-instanceof.yaml b/translations/content/tr/language/pattern-matching-instanceof.yaml new file mode 100644 index 0000000..c840043 --- /dev/null +++ b/translations/content/tr/language/pattern-matching-instanceof.yaml @@ -0,0 +1,18 @@ +--- +title: instanceof için kalıp eşleştirme +oldApproach: instanceof + Tür Dönüşümü +modernApproach: Kalıp Değişkeni +summary: "Tür kontrolü ve tür dönüşümünü kalıp eşleştirme ile tek adımda birleştirin." +explanation: "instanceof için kalıp eşleştirme, tür kontrolünden sonra gereksiz tür dönüşümünü ortadan kaldırır. Değişken, kalıbın eşleştiği yerle otomatik olarak kapsamlandırılır; bu da kodu daha güvenli ve kısa yapar." +whyModernWins: +- icon: "🔄" + title: Gereksiz tür dönüşümü yok + desc: "Tür kontrolü ve değişken bağlama tek bir ifadede gerçekleşir." +- icon: "📏" + title: Daha az satır + desc: "İki satır yerine bir satır — tür dönüşümü satırı tamamen ortadan kalkar." +- icon: "🛡️" + title: Kapsam güvenliği + desc: "Kalıp değişkeni yalnızca türün garanti edildiği yerde kapsamdadır." +support: + description: "JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)" diff --git a/translations/content/tr/language/pattern-matching-switch.yaml b/translations/content/tr/language/pattern-matching-switch.yaml new file mode 100644 index 0000000..3544a7b --- /dev/null +++ b/translations/content/tr/language/pattern-matching-switch.yaml @@ -0,0 +1,18 @@ +--- +title: switch'te kalıp eşleştirme +oldApproach: if-else Zinciri +modernApproach: Tür Kalıpları +summary: "if-else instanceof zincirlerini temiz switch tür kalıplarıyla değiştirin." +explanation: "switch'te kalıp eşleştirme, tür testini, tür dönüşümünü ve bağlamayı tek ve özlü bir case etiketinde birleştirerek türlere doğrudan eşleştirmenizi sağlar. Derleyici tamamlığı denetler." +whyModernWins: +- icon: "📐" + title: Yapılandırılmış dağıtım + desc: "switch, dallanma yapısını açık ve taranabilir hale getirir." +- icon: "🎯" + title: İfade biçimi + desc: "Doğrudan bir değer döndürür — değiştirilebilir değişkene gerek yoktur." +- icon: "✅" + title: Kapsamlılık + desc: "Derleyici tüm türlerin işlendiğini sağlar." +support: + description: "JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)" diff --git a/translations/content/tr/language/primitive-types-in-patterns.yaml b/translations/content/tr/language/primitive-types-in-patterns.yaml new file mode 100644 index 0000000..95ad6c0 --- /dev/null +++ b/translations/content/tr/language/primitive-types-in-patterns.yaml @@ -0,0 +1,18 @@ +--- +title: Kalıplarda temel türler +oldApproach: Manuel Aralık Kontrolleri +modernApproach: Temel Tür Kalıpları +summary: "Kalıp eşleştirme artık yalnızca nesnelerle değil, temel türlerle de çalışır." +explanation: "Java 25, kalıp eşleştirmeyi temel türlere genişletir. int, long, double vb. türleri when koruyucularıyla switch kalıplarında kullanabilirsiniz; bu, kutulama veya manuel aralık kontrollerine olan ihtiyacı ortadan kaldırır." +whyModernWins: +- icon: "📦" + title: Kutulama yok + desc: "Temel türleri doğrudan eşleştirin — Integer sarmalayıcısına gerek yoktur." +- icon: "🎯" + title: Kalıp tutarlılığı + desc: "Nesneler ve temel türler için aynı kalıp sözdizimi." +- icon: "⚡" + title: Daha iyi performans + desc: "Kalıp eşleştirmede otomatik kutulama yükünü önleyin." +support: + description: "JDK 25'te önizleme (üçüncü önizleme, JEP 507). --enable-preview gerektirir." diff --git a/translations/content/tr/language/private-interface-methods.yaml b/translations/content/tr/language/private-interface-methods.yaml new file mode 100644 index 0000000..05ccc6d --- /dev/null +++ b/translations/content/tr/language/private-interface-methods.yaml @@ -0,0 +1,18 @@ +--- +title: Özel interface metotları +oldApproach: Çoğaltılmış Mantık +modernApproach: Özel Metotlar +summary: "Özel metotlar kullanarak interface'lerdeki paylaşılan mantığı çıkarın." +explanation: "Java 9, interface'lerde özel metotlara izin vererek uygulama ayrıntılarını uygulayan sınıflara göstermeden varsayılan metotlar arasında kod paylaşmanıza olanak tanır." +whyModernWins: +- icon: "🧩" + title: Kod yeniden kullanımı + desc: "Tekrar etmeden varsayılan metotlar arasında mantığı paylaşın." +- icon: "🔐" + title: Kapsülleme + desc: "Uygulama ayrıntıları uygulayan sınıflardan gizli kalır." +- icon: "🧹" + title: DRY interface'ler + desc: "Varsayılan metotlar arasında artık kopyala-yapıştır yok." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/language/record-patterns.yaml b/translations/content/tr/language/record-patterns.yaml new file mode 100644 index 0000000..9bb26e0 --- /dev/null +++ b/translations/content/tr/language/record-patterns.yaml @@ -0,0 +1,18 @@ +--- +title: "Record kalıpları (parçalama)" +oldApproach: Manuel Erişim +modernApproach: Parçalama +summary: "Record'ları doğrudan kalıplarda parçalayın — alanları tek adımda çıkarın." +explanation: "Record kalıpları, bir record'un bileşenlerini doğrudan instanceof ve switch içinde ayrıştırmanıza olanak tanır. İç içe kalıplar da desteklenir; bu, ara değişkenler olmadan derin eşleştirmeyi mümkün kılar." +whyModernWins: +- icon: "🎯" + title: Doğrudan çıkarma + desc: "Erişimcileri elle çağırmadan record bileşenlerine erişin." +- icon: "🪆" + title: İç içe geçirilebilir + desc: "Kalıplar iç içe geçirilebilir — tek bir ifadede iç record'larla eşleştirin." +- icon: "📏" + title: Kompakt kod + desc: "Beş satır ikiye dönüşür — daha az tören, aynı netlik." +support: + description: "JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)" diff --git a/translations/content/tr/language/records-for-data-classes.yaml b/translations/content/tr/language/records-for-data-classes.yaml new file mode 100644 index 0000000..b346807 --- /dev/null +++ b/translations/content/tr/language/records-for-data-classes.yaml @@ -0,0 +1,18 @@ +--- +title: Veri sınıfları için record'lar +oldApproach: Ayrıntılı POJO +modernApproach: record +summary: "Bir satır, değişmez veri taşıyıcılar için 30'dan fazla satır şablon kodunun yerini alır." +explanation: "Record'lar constructor'ı, erişimcileri (x(), y()), equals(), hashCode() ve toString() metodlarını otomatik olarak oluşturur. Tasarım gereği değişmezdirler ve DTO'lar, değer nesneleri ve kalıp eşleştirme için idealdir." +whyModernWins: +- icon: "⚡" + title: Tek satır tanım + desc: "Tek satır constructor, getter'lar, equals, hashCode, toString'in yerini alır." +- icon: "🔒" + title: Varsayılan olarak değişmez + desc: "Tüm alanlar final'dır — setter tuzağı yoktur." +- icon: "🧩" + title: Kalıp dostu + desc: "Record'lar switch ve instanceof'ta parçalama kalıplarıyla çalışır." +support: + description: "JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)" diff --git a/translations/content/tr/language/sealed-classes.yaml b/translations/content/tr/language/sealed-classes.yaml new file mode 100644 index 0000000..9384f7a --- /dev/null +++ b/translations/content/tr/language/sealed-classes.yaml @@ -0,0 +1,18 @@ +--- +title: Tür hiyerarşileri için sealed sınıflar +oldApproach: Açık Hiyerarşi +modernApproach: sealed permits +summary: "Hangi sınıfların bir türü genişletebileceğini kısıtlayın — kapsamlı switch'leri etkinleştirin." +explanation: "Sealed sınıflar, kapalı bir alt tür kümesi tanımlar. Derleyici tüm olası durumları bilir ve varsayılan bir dal olmadan kapsamlı kalıp eşleştirmeyi etkinleştirir. Record'larla birleştirildiğinde cebirsel veri türlerini modeller." +whyModernWins: +- icon: "🔐" + title: Kontrollü hiyerarşi + desc: "Yalnızca izin verilen alt türler genişletebilir — sürpriz alt sınıf yok." +- icon: "✅" + title: Kapsamlı eşleştirme + desc: "Derleyici switch'in tüm durumları kapsadığını doğrular, default gerekmez." +- icon: "📐" + title: Cebirsel veri türleri + desc: "Sum türlerini doğal olarak modelleyin — sealed + record'lar = Java'da ADT'ler." +support: + description: "JDK 17 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2021)" diff --git a/translations/content/tr/language/static-members-in-inner-classes.yaml b/translations/content/tr/language/static-members-in-inner-classes.yaml new file mode 100644 index 0000000..59ec5a5 --- /dev/null +++ b/translations/content/tr/language/static-members-in-inner-classes.yaml @@ -0,0 +1,18 @@ +--- +title: İç sınıflardaki statik üyeler +oldApproach: Statik iç içe sınıf kullanılmalı +modernApproach: İç sınıflarda statik üyeler +summary: "Statik iç içe sınıflar gerektirmeden iç sınıflarda statik üyeler tanımlayın." +explanation: "Java 16'dan önce, yalnızca statik iç içe sınıflar statik üyeler içerebiliyordu. İç (statik olmayan) sınıflar, bir çevreleyen örnek gerektirdiğinden statik üyelere sahip olamazdı. Java 16, bu kısıtlamayı gevşeterek iç sınıflarda statik alanlar, metotlar ve hatta iç içe türlere izin verir." +whyModernWins: +- icon: "🔓" + title: Daha fazla esneklik + desc: "İç sınıflar artık gerektiğinde statik üyelere sahip olabilir." +- icon: "🧩" + title: Paylaşılan durum + desc: "Bir iç sınıfın örnekleri arasında paylaşılan durumu takip edin." +- icon: "📐" + title: Tasarım özgürlüğü + desc: "Yalnızca bir statik alan için statik iç içe sınıfa geçmeye gerek yok." +support: + description: "JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)" diff --git a/translations/content/tr/language/static-methods-in-interfaces.yaml b/translations/content/tr/language/static-methods-in-interfaces.yaml new file mode 100644 index 0000000..2934e08 --- /dev/null +++ b/translations/content/tr/language/static-methods-in-interfaces.yaml @@ -0,0 +1,18 @@ +--- +title: Interface'lerde statik metotlar +oldApproach: Yardımcı sınıflar +modernApproach: Interface statik metotları +summary: "Ayrı yardımcı sınıflar yerine statik yardımcı metotları doğrudan interface'lere ekleyin." +explanation: "Java 8'den önce, bir interface ile ilgili yardımcı metotlar ayrı bir sınıfta (örn. Collection için Collections) yaşamak zorundaydı. Interface'lerdeki statik metotlar, ilgili yardımcı araçları bir arada tutmanızı sağlar. Comparator.comparing(), Stream.of() ve List.of() gibi modern API'lerde yaygındır." +whyModernWins: +- icon: "📦" + title: Daha iyi organizasyon + desc: "İlgili yardımcı araçları ayrı bir sınıfta değil, interface ile birlikte tutun." +- icon: "🔍" + title: Keşfedilebilirlik + desc: "Fabrika ve yardımcı metotlar, onları beklediğiniz yerde bulunur." +- icon: "🧩" + title: API uyumu + desc: "Ayrı *Utils veya *Helper sınıflarına gerek yoktur." +support: + description: "JDK 8'den itibaren kullanılabilir (Mart 2014)" diff --git a/translations/content/tr/language/switch-expressions.yaml b/translations/content/tr/language/switch-expressions.yaml new file mode 100644 index 0000000..0c0340c --- /dev/null +++ b/translations/content/tr/language/switch-expressions.yaml @@ -0,0 +1,18 @@ +--- +title: Switch ifadeleri +oldApproach: Switch Deyimi +modernApproach: Switch İfadesi +summary: "Değer döndüren switch ifadesi — break yok, düşme geçişi yok." +explanation: "Switch ifadeleri doğrudan bir değer döndürür, düşme geçişi hatalarını önlemek için ok sözdizimini kullanır ve derleyici kapsamlılığı doğrular. Bu, hataya açık deyim biçiminin yerini alır." +whyModernWins: +- icon: "🎯" + title: Değer döndürür + desc: "Switch sonucunu doğrudan atayın — geçici değişkene gerek yoktur." +- icon: "🛡️" + title: Düşme geçişi yok + desc: "Ok sözdizimi, eksik break nedeniyle oluşan yanlışlıkla düşme geçişi hatalarını ortadan kaldırır." +- icon: "✅" + title: Kapsamlılık kontrolü + desc: "Derleyici tüm durumların kapsandığını sağlar." +support: + description: "JDK 14'ten itibaren geniş çapta kullanılabilir (Mart 2020)" diff --git a/translations/content/tr/language/text-blocks-for-multiline-strings.yaml b/translations/content/tr/language/text-blocks-for-multiline-strings.yaml new file mode 100644 index 0000000..d70e6ac --- /dev/null +++ b/translations/content/tr/language/text-blocks-for-multiline-strings.yaml @@ -0,0 +1,18 @@ +--- +title: Çok satırlı dizeler için metin blokları +oldApproach: String Birleştirme +modernApproach: Metin Blokları +summary: "Üçlü tırnak metin blokları ile çok satırlı dizeleri doğal olarak yazın." +explanation: "Metin blokları, çok satırlı dizeleri tam olarak göründükleri gibi yazmanıza olanak tanır. Artık tırnak işaretlerini kaçırmak veya \\n eklemek gerekmez. Derleyici, gereksiz girintiyi otomatik olarak kaldırır." +whyModernWins: +- icon: "📖" + title: Olduğu gibi okunabilir + desc: "JSON, SQL ve HTML, kaynak kodunuzda gerçek JSON, SQL ve HTML gibi görünür." +- icon: "🚫" + title: Kaçış cehennemi yok + desc: "Gömülü tırnak işaretleri ters eğik çizgi ile kaçırılmaya gerek yoktur." +- icon: "📐" + title: Akıllı girinti + desc: "Başlangıç boşluğu, kapanış sınırlayıcı konumuna göre otomatik olarak kırpılır." +support: + description: "JDK 15'ten itibaren geniş çapta kullanılabilir (Eylül 2020)" diff --git a/translations/content/tr/language/type-inference-with-var.yaml b/translations/content/tr/language/type-inference-with-var.yaml new file mode 100644 index 0000000..fdb6e85 --- /dev/null +++ b/translations/content/tr/language/type-inference-with-var.yaml @@ -0,0 +1,18 @@ +--- +title: var ile tür çıkarımı +oldApproach: Açık Türler +modernApproach: var anahtar kelimesi +summary: "Yerel değişken tür çıkarımı için var kullanın — daha az gürültü, aynı güvenlik." +explanation: "Java 10'dan itibaren, derleyici yerel değişken türlerini sağ taraftan çıkarır. Bu, tür güvenliğinden ödün vermeden görsel gürültüyü azaltır. Türün bağlamdan açık olduğu durumlarda var kullanın." +whyModernWins: +- icon: "⚡" + title: Daha az şablon kod + desc: "Atamanın her iki tarafında karmaşık genel türleri tekrar etmeye gerek yoktur." +- icon: "👁" + title: Daha iyi okunabilirlik + desc: "Tür bildirimlerine değil, değişken adlarına ve değerlere odaklanın." +- icon: "🔒" + title: Hâlâ tür güvenli + desc: "Derleyici, derleme zamanında tam türü çıkarır ve uygular." +support: + description: "JDK 10'dan itibaren geniş çapta kullanılabilir (Mart 2018)" diff --git a/translations/content/tr/language/unnamed-variables.yaml b/translations/content/tr/language/unnamed-variables.yaml new file mode 100644 index 0000000..063fcd9 --- /dev/null +++ b/translations/content/tr/language/unnamed-variables.yaml @@ -0,0 +1,18 @@ +--- +title: _ ile isimsiz değişkenler +oldApproach: Kullanılmayan Değişken +modernApproach: _ Yer Tutucu +summary: "Bir değişkenin kasıtlı olarak kullanılmadığını belirtmek için _ kullanın." +explanation: "İsimsiz değişkenler, okuyuculara ve araçlara bir değerin kasıtlı olarak görmezden gelindiğini iletir. Artık 'ignored' veya 'unused' adlandırma kurallarına, artık IDE uyarılarına gerek yoktur." +whyModernWins: +- icon: "📢" + title: Net niyet + desc: "_ açıkça 'bu değere burada ihtiyaç yok' der." +- icon: "🔇" + title: Uyarı yok + desc: "IDE'ler ve lint araçları kasıtlı olarak kullanılmayan değişkenleri işaretlemez." +- icon: "🧹" + title: Daha temiz lambda'lar + desc: "Çok parametreli lambda'lar yalnızca bazı parametrelere ihtiyaç duyduğunuzda daha temizdir." +support: + description: "JDK 22'de tamamlandı (JEP 456, Mart 2024)." From df8f4a8a6bb0249006898b9870974d2264835004 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 14:46:56 +0000 Subject: [PATCH 6/6] Add Turkish (tr) translations for streams, strings, and tooling patterns - 11 streams files: collectors-flatmapping, optional-ifpresentorelse, optional-or, predicate-not, stream-gatherers, stream-iterate-predicate, stream-mapmulti, stream-of-nullable, stream-takewhile-dropwhile, stream-tolist, virtual-thread-executor - 7 strings files: string-chars-stream, string-formatted, string-indent-transform, string-isblank, string-lines, string-repeat, string-strip - 8 tooling files: aot-class-preloading, built-in-http-server, compact-object-headers, jfr-profiling, jshell-prototyping, junit6-with-jspecify, multi-file-source, single-file-execution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../tr/streams/collectors-flatmapping.yaml | 18 ++++++++++++++++++ .../tr/streams/optional-ifpresentorelse.yaml | 18 ++++++++++++++++++ .../content/tr/streams/optional-or.yaml | 18 ++++++++++++++++++ .../content/tr/streams/predicate-not.yaml | 18 ++++++++++++++++++ .../content/tr/streams/stream-gatherers.yaml | 18 ++++++++++++++++++ .../tr/streams/stream-iterate-predicate.yaml | 18 ++++++++++++++++++ .../content/tr/streams/stream-mapmulti.yaml | 18 ++++++++++++++++++ .../content/tr/streams/stream-of-nullable.yaml | 18 ++++++++++++++++++ .../tr/streams/stream-takewhile-dropwhile.yaml | 18 ++++++++++++++++++ .../content/tr/streams/stream-tolist.yaml | 18 ++++++++++++++++++ .../tr/streams/virtual-thread-executor.yaml | 18 ++++++++++++++++++ .../tr/strings/string-chars-stream.yaml | 18 ++++++++++++++++++ .../content/tr/strings/string-formatted.yaml | 18 ++++++++++++++++++ .../tr/strings/string-indent-transform.yaml | 18 ++++++++++++++++++ .../content/tr/strings/string-isblank.yaml | 18 ++++++++++++++++++ .../content/tr/strings/string-lines.yaml | 18 ++++++++++++++++++ .../content/tr/strings/string-repeat.yaml | 18 ++++++++++++++++++ .../content/tr/strings/string-strip.yaml | 18 ++++++++++++++++++ .../tr/tooling/aot-class-preloading.yaml | 18 ++++++++++++++++++ .../tr/tooling/built-in-http-server.yaml | 18 ++++++++++++++++++ .../tr/tooling/compact-object-headers.yaml | 18 ++++++++++++++++++ .../content/tr/tooling/jfr-profiling.yaml | 18 ++++++++++++++++++ .../content/tr/tooling/jshell-prototyping.yaml | 18 ++++++++++++++++++ .../tr/tooling/junit6-with-jspecify.yaml | 18 ++++++++++++++++++ .../content/tr/tooling/multi-file-source.yaml | 18 ++++++++++++++++++ .../tr/tooling/single-file-execution.yaml | 18 ++++++++++++++++++ 26 files changed, 468 insertions(+) create mode 100644 translations/content/tr/streams/collectors-flatmapping.yaml create mode 100644 translations/content/tr/streams/optional-ifpresentorelse.yaml create mode 100644 translations/content/tr/streams/optional-or.yaml create mode 100644 translations/content/tr/streams/predicate-not.yaml create mode 100644 translations/content/tr/streams/stream-gatherers.yaml create mode 100644 translations/content/tr/streams/stream-iterate-predicate.yaml create mode 100644 translations/content/tr/streams/stream-mapmulti.yaml create mode 100644 translations/content/tr/streams/stream-of-nullable.yaml create mode 100644 translations/content/tr/streams/stream-takewhile-dropwhile.yaml create mode 100644 translations/content/tr/streams/stream-tolist.yaml create mode 100644 translations/content/tr/streams/virtual-thread-executor.yaml create mode 100644 translations/content/tr/strings/string-chars-stream.yaml create mode 100644 translations/content/tr/strings/string-formatted.yaml create mode 100644 translations/content/tr/strings/string-indent-transform.yaml create mode 100644 translations/content/tr/strings/string-isblank.yaml create mode 100644 translations/content/tr/strings/string-lines.yaml create mode 100644 translations/content/tr/strings/string-repeat.yaml create mode 100644 translations/content/tr/strings/string-strip.yaml create mode 100644 translations/content/tr/tooling/aot-class-preloading.yaml create mode 100644 translations/content/tr/tooling/built-in-http-server.yaml create mode 100644 translations/content/tr/tooling/compact-object-headers.yaml create mode 100644 translations/content/tr/tooling/jfr-profiling.yaml create mode 100644 translations/content/tr/tooling/jshell-prototyping.yaml create mode 100644 translations/content/tr/tooling/junit6-with-jspecify.yaml create mode 100644 translations/content/tr/tooling/multi-file-source.yaml create mode 100644 translations/content/tr/tooling/single-file-execution.yaml diff --git a/translations/content/tr/streams/collectors-flatmapping.yaml b/translations/content/tr/streams/collectors-flatmapping.yaml new file mode 100644 index 0000000..3a1f70a --- /dev/null +++ b/translations/content/tr/streams/collectors-flatmapping.yaml @@ -0,0 +1,18 @@ +--- +title: "Collectors.flatMapping()" +oldApproach: İç içe flatMap +modernApproach: "flatMapping()" +summary: "Gruplama toplayıcısının içinde düzleştirme yapmak için flatMapping() kullanın." +explanation: "Collectors.flatMapping(), bir bire-çok eşlemeyi aşağı akış toplayıcısı olarak uygular. Stream.flatMap() işlevinin toplayıcı karşılığıdır — groupingBy veya partitioningBy içinde kullanışlıdır." +whyModernWins: +- icon: "🧩" + title: Birleştirilebilir + desc: "groupingBy içinde aşağı akış toplayıcısı olarak çalışır." +- icon: "📐" + title: Tek geçiş + desc: "Tek bir akış geçişinde düzleştirme ve gruplama yapılır." +- icon: "🔗" + title: İç içe kullanılabilir + desc: "Diğer aşağı akış toplayıcılarıyla birleştirilebilir." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/streams/optional-ifpresentorelse.yaml b/translations/content/tr/streams/optional-ifpresentorelse.yaml new file mode 100644 index 0000000..4b4e12d --- /dev/null +++ b/translations/content/tr/streams/optional-ifpresentorelse.yaml @@ -0,0 +1,18 @@ +--- +title: "Optional.ifPresentOrElse()" +oldApproach: Optional üzerinde if/else +modernApproach: "ifPresentOrElse()" +summary: "Optional'ın hem mevcut hem de boş durumlarını tek bir çağrıda işleyin." +explanation: "ifPresentOrElse(), mevcut durum için bir Consumer ve boş durum için bir Runnable alır. isPresent/get anti-deseninden kaçınılmasını sağlar." +whyModernWins: +- icon: "📏" + title: Tek ifade + desc: "Her iki durum tek bir metot çağrısında işlenir." +- icon: "🚫" + title: "get() yok" + desc: "Tehlikeli isPresent() + get() desenini ortadan kaldırır." +- icon: "🔗" + title: Akıcı + desc: "findUser() veya Optional döndüren herhangi bir metodun ardından doğal olarak zincirlenir." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/streams/optional-or.yaml b/translations/content/tr/streams/optional-or.yaml new file mode 100644 index 0000000..e730365 --- /dev/null +++ b/translations/content/tr/streams/optional-or.yaml @@ -0,0 +1,18 @@ +--- +title: "Optional.or() ile yedekleme" +oldApproach: İç içe yedekleme +modernApproach: ".or() zinciri" +summary: "İç içe kontroller olmadan Optional yedeklerini zincirleyin." +explanation: "Optional.or(), orijinal Optional'ın bir değeri varsa onu döndürür; yoksa alternatif bir Optional elde etmek için tedarikçiyi değerlendirir. Tedarikçiler gecikmeli çalışır — yalnızca gerektiğinde çağrılır." +whyModernWins: +- icon: "🔗" + title: Zincirlenebilir + desc: "Okunabilir bir boru hattında yedekler arka arkaya eklenir." +- icon: "⚡" + title: Gecikmeli değerlendirme + desc: "Yedek tedarikçiler yalnızca gerekli olduğunda çalışır." +- icon: "📖" + title: Bildirimsel + desc: "'önce birincili dene, yoksa ikincili, yoksa varsayılanı' şeklinde okunur." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/streams/predicate-not.yaml b/translations/content/tr/streams/predicate-not.yaml new file mode 100644 index 0000000..2e95db8 --- /dev/null +++ b/translations/content/tr/streams/predicate-not.yaml @@ -0,0 +1,18 @@ +--- +title: "Predicate.not() ile olumsuzlama" +oldApproach: Lambda olumsuzlama +modernApproach: "Predicate.not()" +summary: "Lambda sarmalayıcılar yazmak yerine metot referanslarını temiz biçimde olumsuzlamak için Predicate.not() kullanın." +explanation: "Java 11'den önce bir metot referansını olumsuzlamak için onu bir lambda içine sarmak gerekiyordu. Predicate.not(), herhangi bir koşulu doğrudan olumsuzlamanıza olanak tanır; bu sayede kod okunabilirliği korunur ve akış hattı boyunca metot referansı stiliyle tutarlılık sağlanır." +whyModernWins: +- icon: "👁" + title: Daha temiz olumsuzlama + desc: "Metot referanslarını olumsuzlamak için lambda içine sarmaya gerek kalmaz." +- icon: "🔗" + title: Birleştirilebilir + desc: "Her Predicate ile çalışır; temiz koşul zincirleri oluşturmayı sağlar." +- icon: "📖" + title: Doğal okunur + desc: "Predicate.not(String::isBlank) İngilizce gibi okunur." +support: + description: "JDK 11'den itibaren kullanılabilir (Eylül 2018)." diff --git a/translations/content/tr/streams/stream-gatherers.yaml b/translations/content/tr/streams/stream-gatherers.yaml new file mode 100644 index 0000000..8dd8bbe --- /dev/null +++ b/translations/content/tr/streams/stream-gatherers.yaml @@ -0,0 +1,18 @@ +--- +title: Stream toplayıcıları +oldApproach: Özel Collector +modernApproach: "gather()" +summary: "Özel ara akış işlemleri için toplayıcılar kullanın." +explanation: "Toplayıcılar (Gatherers), kayan pencereler, sabit boyutlu gruplar ve standart akış işlemleriyle mümkün olmayan tarama işlemleri gibi karmaşık dönüşümleri ifade edebilen yeni bir ara akış işlemidir." +whyModernWins: +- icon: "🧩" + title: Birleştirilebilir + desc: "Toplayıcılar diğer akış işlemleriyle birleştirilebilir." +- icon: "📦" + title: Yerleşik işlemler + desc: "windowFixed, windowSliding, fold ve scan kullanıma hazır gelir." +- icon: "🔧" + title: Genişletilebilir + desc: "Herhangi bir ara dönüşüm için özel toplayıcılar yazılabilir." +support: + description: "JDK 24'te tamamlandı (JEP 485, Mart 2025)." diff --git a/translations/content/tr/streams/stream-iterate-predicate.yaml b/translations/content/tr/streams/stream-iterate-predicate.yaml new file mode 100644 index 0000000..023eaf0 --- /dev/null +++ b/translations/content/tr/streams/stream-iterate-predicate.yaml @@ -0,0 +1,18 @@ +--- +title: "Koşullu Stream.iterate()" +oldApproach: iterate + limit +modernApproach: "iterate(seed, pred, op)" +summary: "Akış biçiminde bir döngü gibi yinelemeyi durdurmak için koşul kullanın." +explanation: "Üç argümanlı Stream.iterate(seed, hasNext, next), bir for döngüsü gibi çalışır: seed başlangıç değeri, hasNext ne zaman duracağını belirler ve next sonraki değeri üretir." +whyModernWins: +- icon: "🎯" + title: Doğal sonlandırma + desc: "Keyfi bir sınır değil, bir koşula göre durun." +- icon: "📐" + title: "for döngüsü karşılığı" + desc: "for(seed; hasNext; next) ile aynı anlambilim." +- icon: "🛡️" + title: Sonsuz akış riski yok + desc: "Koşul, sonlandırmayı garanti eder." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/streams/stream-mapmulti.yaml b/translations/content/tr/streams/stream-mapmulti.yaml new file mode 100644 index 0000000..fc89d78 --- /dev/null +++ b/translations/content/tr/streams/stream-mapmulti.yaml @@ -0,0 +1,18 @@ +--- +title: "Stream.mapMulti()" +oldApproach: "flatMap + List" +modernApproach: "mapMulti()" +summary: "Ara akışlar oluşturmadan her giriş için sıfır veya daha fazla öğe yayın." +explanation: "mapMulti(), her öğe için ara Stream nesneleri oluşturmaktan kaçınan, flatMap'e alternatif bir zorunlu yöntemdir. Eşlemenin az sayıda öğe ürettiği durumlarda daha verimlidir." +whyModernWins: +- icon: "⚡" + title: Daha az bellek kullanımı + desc: "Her öğe için ara Stream oluşturulmaz." +- icon: "🎯" + title: Zorunlu stil + desc: "Döngüler ve koşullar doğrudan kullanılabilir." +- icon: "📐" + title: Esnek + desc: "Tam denetimle sıfır, bir veya çok sayıda öğe yayılabilir." +support: + description: "JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)" diff --git a/translations/content/tr/streams/stream-of-nullable.yaml b/translations/content/tr/streams/stream-of-nullable.yaml new file mode 100644 index 0000000..289f1ae --- /dev/null +++ b/translations/content/tr/streams/stream-of-nullable.yaml @@ -0,0 +1,18 @@ +--- +title: "Stream.ofNullable()" +oldApproach: Null Kontrolü +modernApproach: "ofNullable()" +summary: "Null olabilecek bir değerden sıfır veya bir öğeli akış oluşturun." +explanation: "Stream.ofNullable(), değer null değilse tek öğeli, null ise boş bir akış döndürür. Üçlü null kontrol desenini ortadan kaldırır." +whyModernWins: +- icon: "📏" + title: Özlü + desc: "Tek bir çağrı üçlü koşulun yerini alır." +- icon: "🔗" + title: "flatMap uyumlu" + desc: "flatMap içinde null değerleri atlamak için mükemmeldir." +- icon: "🛡️" + title: Null-güvenli + desc: "NPE riski yok — null boş akışa dönüşür." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/streams/stream-takewhile-dropwhile.yaml b/translations/content/tr/streams/stream-takewhile-dropwhile.yaml new file mode 100644 index 0000000..c899e0e --- /dev/null +++ b/translations/content/tr/streams/stream-takewhile-dropwhile.yaml @@ -0,0 +1,18 @@ +--- +title: "Stream takeWhile / dropWhile" +oldApproach: Manuel Döngü +modernApproach: takeWhile/dropWhile +summary: "Bir koşula göre akıştan öğeleri alın veya atlayın." +explanation: "takeWhile(), koşul doğru olduğu sürece öğeleri döndürür ve ilk yanlışta durur. dropWhile() ise koşul doğru olduğu sürece öğeleri atlar ve kalanları döndürür. Her ikisi de sıralı akışlarda en iyi çalışır." +whyModernWins: +- icon: "🎯" + title: Kısa devre + desc: "Koşul başarısız olduğunda işlemi durur." +- icon: "🔗" + title: Boru hattı uyumlu + desc: "Diğer akış işlemleriyle doğal biçimde zincirlenir." +- icon: "📖" + title: Bildirimsel + desc: "takeWhile 'koşul sağlandığı sürece al' şeklinde okunur." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/streams/stream-tolist.yaml b/translations/content/tr/streams/stream-tolist.yaml new file mode 100644 index 0000000..b4a82d7 --- /dev/null +++ b/translations/content/tr/streams/stream-tolist.yaml @@ -0,0 +1,18 @@ +--- +title: "Stream.toList()" +oldApproach: "Collectors.toList()" +modernApproach: ".toList()" +summary: "Terminal toList(), ayrıntılı collect(Collectors.toList()) çağrısının yerini alır." +explanation: "Stream.toList(), değiştirilemez bir liste döndürür. .collect(Collectors.toUnmodifiableList()) ile eşdeğerdir ancak çok daha kısadır. Not: Collectors.toList()'in aksine sonuç sabittir." +whyModernWins: +- icon: "📏" + title: "7 karakter, 24 değil" + desc: ".toList(), .collect(Collectors.toList()) ifadesinin yerini alır." +- icon: "🔒" + title: Değiştirilemez + desc: "Sonuç liste değiştirilemez." +- icon: "📖" + title: Akıcı + desc: "Boru hattının sonunda doğal biçimde okunur." +support: + description: "JDK 16'dan itibaren geniş çapta kullanılabilir (Mart 2021)" diff --git a/translations/content/tr/streams/virtual-thread-executor.yaml b/translations/content/tr/streams/virtual-thread-executor.yaml new file mode 100644 index 0000000..e8ee19b --- /dev/null +++ b/translations/content/tr/streams/virtual-thread-executor.yaml @@ -0,0 +1,18 @@ +--- +title: Sanal iş parçacığı yürütücüsü +oldApproach: Sabit İş Parçacığı Havuzu +modernApproach: Sanal İş Parçacığı Yürütücüsü +summary: "Sınırsız hafif eşzamanlılık için sanal iş parçacığı yürütücülerini kullanın." +explanation: "Sanal iş parçacığı yürütücüsü her görev için yeni bir sanal iş parçacığı oluşturur. Havuz boyutlandırması gerekmez — sanal iş parçacıkları milyonlarca oluşturulabilecek kadar ucuzdur." +whyModernWins: +- icon: "♾️" + title: Boyutlandırma yok + desc: "Ayarlanacak havuz boyutu yok — gerektiği kadar iş parçacığı oluşturulabilir." +- icon: "⚡" + title: Hafif + desc: "Sanal iş parçacıkları MB değil, KB bellek kullanır." +- icon: "🧹" + title: Otomatik kapatma + desc: "try-with-resources kapatmayı otomatik olarak yönetir." +support: + description: "JDK 21 LTS'den itibaren geniş çapta kullanılabilir (Eylül 2023)" diff --git a/translations/content/tr/strings/string-chars-stream.yaml b/translations/content/tr/strings/string-chars-stream.yaml new file mode 100644 index 0000000..b0e7cca --- /dev/null +++ b/translations/content/tr/strings/string-chars-stream.yaml @@ -0,0 +1,18 @@ +--- +title: Karakter akışı olarak String +oldApproach: Manuel Döngü +modernApproach: "chars() Stream" +summary: "Metin karakterlerini bir akış hattı olarak işleyin." +explanation: "String.chars(), karakter değerlerinden oluşan bir IntStream döndürerek işlevsel işlemeye olanak tanır. Unicode desteği için codePoints(), ek karakterleri doğru biçimde işler." +whyModernWins: +- icon: "🔗" + title: Zincirlenebilir + desc: "Karakter akışları üzerinde filter, map ve collect kullanılabilir." +- icon: "📐" + title: Bildirimsel + desc: "Nasıl döngü kurulacağını değil, ne yapılacağını tanımlayın." +- icon: "🌐" + title: "Unicode'a hazır" + desc: "codePoints(), emoji ve ek karakterleri doğru şekilde işler." +support: + description: "JDK 8+'dan itibaren kullanılabilir (9+'da geliştirildi)" diff --git a/translations/content/tr/strings/string-formatted.yaml b/translations/content/tr/strings/string-formatted.yaml new file mode 100644 index 0000000..fa793bc --- /dev/null +++ b/translations/content/tr/strings/string-formatted.yaml @@ -0,0 +1,18 @@ +--- +title: "String.formatted()" +oldApproach: "String.format()" +modernApproach: "formatted()" +summary: "formatted() metodunu şablon dizesinin kendisi üzerinde çağırın." +explanation: "String.formatted(), String.format() ile eşdeğer bir örnek metodudur; ancak biçim dizesi üzerinde çağrılır. Soldan sağa bir akışta daha doğal okunur." +whyModernWins: +- icon: "📖" + title: Doğal okunur + desc: "Template.formatted(args), String.format(template, args)'tan daha akıcı akar." +- icon: "🔗" + title: Zincirlenebilir + desc: "Diğer String metodlarıyla zincirlenebilir." +- icon: "📏" + title: Daha az ayrıntılı + desc: "Gereksiz String.format() statik çağrısını kaldırır." +support: + description: "JDK 15'ten itibaren geniş çapta kullanılabilir (Eylül 2020)" diff --git a/translations/content/tr/strings/string-indent-transform.yaml b/translations/content/tr/strings/string-indent-transform.yaml new file mode 100644 index 0000000..6767324 --- /dev/null +++ b/translations/content/tr/strings/string-indent-transform.yaml @@ -0,0 +1,18 @@ +--- +title: "String.indent() ve transform()" +oldApproach: Manuel Girintileme +modernApproach: "indent() / transform()" +summary: "Metni girintileyin ve dize dönüşümlerini akıcı biçimde zincirleyin." +explanation: "indent(n), her satıra n boşluk ekler. transform(fn) herhangi bir işlev uygular ve sonucu döndürerek dize işlemlerinin akıcı biçimde zincir oluşturmasını sağlar." +whyModernWins: +- icon: "📏" + title: Yerleşik + desc: "Girintileme yaygın bir işlemdir — artık tek bir çağrıdır." +- icon: "🔗" + title: Zincirlenebilir + desc: "transform(), dizeler üzerinde akıcı boru hatları sağlar." +- icon: "🧹" + title: Temiz kod + desc: "Manuel satır bölme ve StringBuilder döngülerine gerek kalmaz." +support: + description: "JDK 12'den itibaren geniş çapta kullanılabilir (Mart 2019)" diff --git a/translations/content/tr/strings/string-isblank.yaml b/translations/content/tr/strings/string-isblank.yaml new file mode 100644 index 0000000..22b5c01 --- /dev/null +++ b/translations/content/tr/strings/string-isblank.yaml @@ -0,0 +1,18 @@ +--- +title: "String.isBlank()" +oldApproach: "trim().isEmpty()" +modernApproach: "isBlank()" +summary: "Tek bir metot çağrısıyla boş dizeleri kontrol edin." +explanation: "isBlank(), dize boşsa veya yalnızca trim()'in kaçırdığı Unicode boşluk karakterleri de dahil olmak üzere boşluk içeriyorsa true döndürür." +whyModernWins: +- icon: "📖" + title: Kendi kendini belgeler + desc: "isBlank(), neyi kontrol ettiğini tam olarak ifade eder." +- icon: "🌐" + title: "Unicode-bilinçli" + desc: "Yalnızca ASCII değil, tüm Unicode boşluklarını işler." +- icon: "⚡" + title: Bellek tahsisi yok + desc: "Ara kırpılmış dize oluşturulmaz." +support: + description: "JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018)" diff --git a/translations/content/tr/strings/string-lines.yaml b/translations/content/tr/strings/string-lines.yaml new file mode 100644 index 0000000..666d3bc --- /dev/null +++ b/translations/content/tr/strings/string-lines.yaml @@ -0,0 +1,18 @@ +--- +title: "String.lines() ile satır bölme" +oldApproach: "split(\"\\\\n\")" +modernApproach: "lines()" +summary: "Regex yükü olmadan metni satırlara bölmek için String.lines() kullanın." +explanation: "String.lines(), \\n, \\r veya \\r\\n ile bölünmüş satırlardan oluşan bir Stream döndürür. split()'ten daha tembel ve verimlidir; regex derlenmesinden kaçınır ve daha ileri işleme için Stream API ile doğal biçimde entegre olur." +whyModernWins: +- icon: "⚡" + title: Tembel akış + desc: "Satırlar, split() gibi hepsi bir anda değil, isteğe bağlı olarak üretilir." +- icon: "🔧" + title: Evrensel satır sonları + desc: "\\n, \\r ve \\r\\n otomatik olarak regex olmadan işlenir." +- icon: "🔗" + title: Stream entegrasyonu + desc: "filter, map ve collect ile doğrudan kullanım için Stream döndürür." +support: + description: "JDK 11'den itibaren kullanılabilir (Eylül 2018)." diff --git a/translations/content/tr/strings/string-repeat.yaml b/translations/content/tr/strings/string-repeat.yaml new file mode 100644 index 0000000..2ba88e7 --- /dev/null +++ b/translations/content/tr/strings/string-repeat.yaml @@ -0,0 +1,18 @@ +--- +title: "String.repeat()" +oldApproach: StringBuilder Döngüsü +modernApproach: "repeat()" +summary: "Bir dizeyi döngü kullanmadan n kez tekrarlayın." +explanation: "String.repeat(int), dizeyi kendisiyle n kez birleştirerek döndürür. Sınır durumlarını işler: repeat(0) boş dize, repeat(1) aynı dizeyi döndürür." +whyModernWins: +- icon: "📏" + title: Tek satır + desc: "5 satır StringBuilder kodunu tek bir çağrıyla değiştirin." +- icon: "⚡" + title: Optimize edilmiş + desc: "Dahili uygulama büyük tekrarlar için optimize edilmiştir." +- icon: "📖" + title: Net amaç + desc: "repeat(3) amacı hemen ortaya koyar." +support: + description: "JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018)" diff --git a/translations/content/tr/strings/string-strip.yaml b/translations/content/tr/strings/string-strip.yaml new file mode 100644 index 0000000..c2e12fa --- /dev/null +++ b/translations/content/tr/strings/string-strip.yaml @@ -0,0 +1,18 @@ +--- +title: "String.strip() ve trim() karşılaştırması" +oldApproach: "trim()" +modernApproach: "strip()" +summary: "strip(), stripLeading() ve stripTrailing() ile Unicode'a duyarlı boşluk temizleme kullanın." +explanation: "trim(), yalnızca U+0020 ve altındaki karakterleri (ASCII kontrol karakterleri ve boşluk) kaldırır. strip(), bölünemez boşluk ve ideografik boşluk gibi Unicode boşluklarını da işleyen Character.isWhitespace() kullanır." +whyModernWins: +- icon: "🌐" + title: "Unicode-doğru" + desc: "Her dilden tüm boşluk karakterlerini işler." +- icon: "🎯" + title: Yönlü + desc: "stripLeading() ve stripTrailing(), tek taraflı kırpma sağlar." +- icon: "🛡️" + title: Daha az hata + desc: "Uluslararası metinlerde geride kalan sürpriz boşluk kalmaz." +support: + description: "JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018)" diff --git a/translations/content/tr/tooling/aot-class-preloading.yaml b/translations/content/tr/tooling/aot-class-preloading.yaml new file mode 100644 index 0000000..4209f90 --- /dev/null +++ b/translations/content/tr/tooling/aot-class-preloading.yaml @@ -0,0 +1,18 @@ +--- +title: AOT sınıf ön yükleme +oldApproach: Her Seferinde Soğuk Başlangıç +modernApproach: AOT Önbelleği +summary: "Anında başlangıç için sınıf yükleme ve derlemeyi önbelleğe alın." +explanation: "AOT sınıf ön yükleme, eğitim çalışmasından yüklenen ve bağlanan sınıfları önbelleğe alır. Sonraki başlangıçlarda sınıflar önbellekten yüklenerek doğrulama ve bağlama adımları atlanır. AOT derlemesiyle birleştirildiğinde başlangıç süresi önemli ölçüde azalır." +whyModernWins: +- icon: "⚡" + title: Daha hızlı başlangıç + desc: "Sınıf yükleme, doğrulama ve bağlama adımları atlanır." +- icon: "📦" + title: Önbelleğe alınmış durum + desc: "Eğitim çalışması ideal sınıf durumunu yakalar." +- icon: "🔧" + title: Kod değişikliği gerekmez + desc: "Mevcut uygulamalarla çalışır — yalnızca JVM bayrakları eklenir." +support: + description: "JDK 25 LTS'de standart özellik olarak kullanılabilir (JEP 514/515, Eylül 2025)." diff --git a/translations/content/tr/tooling/built-in-http-server.yaml b/translations/content/tr/tooling/built-in-http-server.yaml new file mode 100644 index 0000000..37c3984 --- /dev/null +++ b/translations/content/tr/tooling/built-in-http-server.yaml @@ -0,0 +1,18 @@ +--- +title: Yerleşik HTTP sunucusu +oldApproach: Harici Sunucu / Çerçeve +modernApproach: jwebserver CLI +summary: "Java 18, prototipleme ve dosya sunumu için yerleşik minimal bir HTTP sunucusu içerir." +explanation: "JDK 18, jwebserver komut satırı aracı veya SimpleFileServer API aracılığıyla erişilebilen basit, sıfır bağımlılıklı bir HTTP dosya sunucusu ekledi. Belirli bir dizindeki statik dosyaları yapılandırma gerekmeksizin sunar. CLI aracı hızlı prototipleme, test etme ve geçici dosya paylaşımı için idealdir — harici bağımlılık veya çerçeve gerekmez. API, özelleştirilebilir işleyiciler ve çıktı seviyeleriyle programlı kullanıma olanak tanır." +whyModernWins: +- icon: "🚀" + title: Sıfır kurulum + desc: "Herhangi bir dizinde jwebserver komutunu çalıştırın — kurulum, yapılandırma veya bağımlılık gerekmez." +- icon: "📦" + title: JDK'ya dahil + desc: "Her JDK 18+ kurulumunda gelir; Java yüklü her makinede kullanılabilir." +- icon: "🧪" + title: Prototipleme için harika + desc: "HTML, API veya ön uç geliştirmeyi test etmek için statik dosyaları anında sunun." +support: + description: "JDK 18'den itibaren kullanılabilir (Mart 2022)" diff --git a/translations/content/tr/tooling/compact-object-headers.yaml b/translations/content/tr/tooling/compact-object-headers.yaml new file mode 100644 index 0000000..1a9f8a2 --- /dev/null +++ b/translations/content/tr/tooling/compact-object-headers.yaml @@ -0,0 +1,18 @@ +--- +title: Kompakt nesne başlıkları +oldApproach: 128 bit Başlıklar +modernApproach: 64 bit Başlıklar +summary: "Daha iyi bellek yoğunluğu ve önbellek kullanımı için nesne başlık boyutunu yarıya indirin." +explanation: "Kompakt nesne başlıkları, 64 bit platformlarda nesne başına ek yükü 128 bitten 64 bite düşürür. Bu durum belleği tasarruf eder ve özellikle çok sayıda küçük nesne içeren uygulamalarda önbellek kullanımını iyileştirir." +whyModernWins: +- icon: "📦" + title: "%50 daha küçük başlıklar" + desc: "Nesne başına 16 yerine 8 bayt." +- icon: "⚡" + title: Daha iyi önbellek kullanımı + desc: "CPU önbellek satırlarına daha fazla nesne sığar." +- icon: "📊" + title: Daha yüksek yoğunluk + desc: "Aynı heap boyutuna daha fazla nesne yerleştirin." +support: + description: "JDK 25 LTS'de tamamlandı (JEP 519, Eylül 2025)." diff --git a/translations/content/tr/tooling/jfr-profiling.yaml b/translations/content/tr/tooling/jfr-profiling.yaml new file mode 100644 index 0000000..be72259 --- /dev/null +++ b/translations/content/tr/tooling/jfr-profiling.yaml @@ -0,0 +1,18 @@ +--- +title: Profilleme için JFR +oldApproach: Harici Profil Aracı +modernApproach: Java Flight Recorder +summary: "Herhangi bir Java uygulamasını yerleşik Flight Recorder ile profilleyin — harici araç gerekmez." +explanation: "Java Flight Recorder (JFR), JVM'e yerleşik düşük ek yüklü bir profilleme aracıdır. CPU, bellek, GC, G/Ç, iş parçacıkları ve özel olaylar için minimal performans etkisiyle (~%1) olayları yakalar." +whyModernWins: +- icon: "🆓" + title: Yerleşik + desc: "Kurulacak veya lisanslanacak harici profil aracı yok." +- icon: "⚡" + title: Düşük ek yük + desc: "~%1 performans etkisi — üretimde kullanıma güvenli." +- icon: "📊" + title: Zengin olaylar + desc: "CPU, bellek, GC, iş parçacıkları, G/Ç, kilitler ve özel olaylar." +support: + description: "JDK 9/11'den itibaren geniş çapta kullanılabilir (11'de açık kaynak yapıldı)" diff --git a/translations/content/tr/tooling/jshell-prototyping.yaml b/translations/content/tr/tooling/jshell-prototyping.yaml new file mode 100644 index 0000000..ca288ce --- /dev/null +++ b/translations/content/tr/tooling/jshell-prototyping.yaml @@ -0,0 +1,18 @@ +--- +title: Prototipleme için JShell +oldApproach: "Dosya Oluştur + Derle + Çalıştır" +modernApproach: jshell REPL +summary: "Dosya oluşturmadan Java ifadelerini etkileşimli olarak deneyin." +explanation: "JShell, Java için bir Oku-Değerlendir-Yazdır Döngüsüdür. Dosya oluşturmak, derlemek veya main metodu yazmak zorunda kalmadan ifadeleri test edin, API'leri deneyin ve kod prototipleri oluşturun. Sekme tamamlama ve satır içi belgeler dahildir." +whyModernWins: +- icon: "⚡" + title: Anında geri bildirim + desc: "Bir ifade yazın, sonucu hemen görün." +- icon: "📝" + title: Dosya gerekmez + desc: ".java dosyası veya derleme adımı gerekmez." +- icon: "🔍" + title: API keşfi + desc: "Sekme tamamlama, metot ve parametreleri keşfetmeye yardımcı olur." +support: + description: "JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)" diff --git a/translations/content/tr/tooling/junit6-with-jspecify.yaml b/translations/content/tr/tooling/junit6-with-jspecify.yaml new file mode 100644 index 0000000..e0188ec --- /dev/null +++ b/translations/content/tr/tooling/junit6-with-jspecify.yaml @@ -0,0 +1,18 @@ +--- +title: "JSpecify null güvenliği ile JUnit 6" +oldApproach: Açıklamasız API +modernApproach: "@NullMarked API" +summary: "JUnit 6, JSpecify @NullMarked'ı benimseyerek null sözleşmelerini doğrulama API'si genelinde açık hale getirir." +explanation: "JUnit 5, standartlaştırılmış null olabilirlik açıklamaları olmadan geldi; bu durum geliştiricilerin doğrulama parametrelerinin veya dönüş değerlerinin null olup olmayacağını tahmin etmesine neden oldu. JUnit 6, tüm modülü genelinde JSpecify'ı benimser: @NullMarked açıklaması varsayılan olarak tüm açıklamasız türleri null olmayan yapar ve @Nullable istisnaları işaretler. Assertions sınıfı, assertNull(@Nullable Object actual) ve fail(@Nullable String message) gibi parametreleri açıkça açıklar; böylece IDE'ler ve NullAway ile Error Prone gibi statik analizörler çalışma zamanı yerine derleme zamanında null kötüye kullanımını yakalayabilir." +whyModernWins: +- icon: "📜" + title: Açık sözleşmeler + desc: "JUnit 6 modülündeki @NullMarked, null anlambilimini doğrudan API'de belgeler — kaynak okumaya gerek kalmaz." +- icon: "🛡️" + title: Derleme zamanı güvenliği + desc: "IDE'ler ve analizörler, null olmayan beklenirken null geçildiğinde uyarır; testler çalıştırılmadan önce hatalar yakalanır." +- icon: "🌐" + title: Ekosistem standardı + desc: "JSpecify, Spring, Guava ve diğerleri tarafından benimsendi — tüm yığınınızda tutarlı null anlambilimi." +support: + description: "JUnit 6.0'dan itibaren kullanılabilir (Ekim 2025, Java 17+ gerektirir)" diff --git a/translations/content/tr/tooling/multi-file-source.yaml b/translations/content/tr/tooling/multi-file-source.yaml new file mode 100644 index 0000000..ea4ac91 --- /dev/null +++ b/translations/content/tr/tooling/multi-file-source.yaml @@ -0,0 +1,18 @@ +--- +title: Çok dosyalı kaynak başlatıcı +oldApproach: Önce Hepsini Derle +modernApproach: Kaynak Başlatıcı +summary: "Açık derleme adımı olmadan çok dosyalı programları başlatın." +explanation: "Java 22+, .java dosyasından başlatıldığında başvurulan kaynak dosyaları otomatik olarak derleyebilir. Bu durum, Maven veya Gradle gerektirmeden küçük çok dosyalı programların betikler kadar kolay çalıştırılmasını sağlar." +whyModernWins: +- icon: "🚀" + title: Sıfır kurulum + desc: "Küçük çok dosyalı programlar için derleme aracı gerekmez." +- icon: "🔗" + title: Otomatik çözümleme + desc: "Başvurulan sınıflar otomatik olarak bulunur ve derlenir." +- icon: "📝" + title: Betik benzeri + desc: "Çok dosyalı programları betikler gibi çalıştırın." +support: + description: "JDK 22'den itibaren kullanılabilir (Mart 2024)" diff --git a/translations/content/tr/tooling/single-file-execution.yaml b/translations/content/tr/tooling/single-file-execution.yaml new file mode 100644 index 0000000..5d6f702 --- /dev/null +++ b/translations/content/tr/tooling/single-file-execution.yaml @@ -0,0 +1,18 @@ +--- +title: Tek dosya çalıştırma +oldApproach: İki Adımlı Derleme +modernApproach: Doğrudan Başlatma +summary: "Tek dosyalı Java programlarını javac olmadan doğrudan çalıştırın." +explanation: "Java başlatıcısı, tek bir kaynak dosyayı tek komutla derleyip çalıştırabilir. Unix'te shebang desteğiyle Java dosyaları betik olarak çalışabilir. Ayrı bir derleme adımına gerek kalmaz." +whyModernWins: +- icon: "⚡" + title: Tek komut + desc: "java File.java tek adımda derler ve çalıştırır." +- icon: "📝" + title: Betik benzeri + desc: ".java dosyalarını çalıştırılabilir betik yapmak için shebang satırı ekleyin." +- icon: "🎓" + title: Öğrenmeye uygun + desc: "Yeni başlayanlar, derleme araçlarını öğrenmeden kodu hemen çalıştırabilir." +support: + description: "JDK 11'den itibaren geniş çapta kullanılabilir (Eylül 2018)"