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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Generated files (`site/category/*.html`, `site/{locale}/`, and `site/data/snippe

### Internationalization

The site supports 9 languages: English, Deutsch, Español, Português (Brasil), 中文 (简体), العربية, Français, 日本語, and 한국어. See [`specs/i18n/i18n-spec.md`](specs/i18n/i18n-spec.md) for the full specification.
The site supports 11 languages: English, Deutsch, Español, Português (Brasil), 中文 (简体), العربية, Français, 日本語, 한국어, Italian and Polski. See [`specs/i18n/i18n-spec.md`](specs/i18n/i18n-spec.md) for the full specification.

## Build & run locally

Expand Down
1 change: 1 addition & 0 deletions html-generators/locales.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ fr=🇫🇷 Français
ja=🇯🇵 日本語
ko=🇰🇷 한국어
it=🇮🇹 Italiano
pl=🇵🇱 Polski
17 changes: 17 additions & 0 deletions translations/content/pl/collections/collectors-teeing.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Collectors.teeing()
oldApproach: Dwa przebiegi
modernApproach: teeing()
summary: Oblicz dwa agregaty w jednym przebiegu strumienia.
explanation: Collectors.teeing() przekazuje każdy element do dwóch kolektorów downstream i scala wyniki. Dzięki temu nie trzeba przetwarzać danych dwa razy ani używać mutowalnego akumulatora.
whyModernWins:
- icon: ⚡
title: Jeden przebieg
desc: Przetwarzasz strumień raz zamiast dwa razy.
- icon: 🧩
title: Kompozycyjność
desc: Możesz połączyć dowolne dwa kolektory funkcją scalającą.
- icon: 🔒
title: Niemutowalny wynik
desc: Wynik można od razu scalić do rekordu lub obiektu wartości.
support:
description: Szeroko dostępne od JDK 12 (marzec 2019)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Łączenie CompletableFuture
oldApproach: Blokujące Future.get()
modernApproach: CompletableFuture
summary: Łącz operacje asynchroniczne bez blokowania, używając CompletableFuture.
explanation: CompletableFuture pozwala budować nieblokujące asynchroniczne potoki. Łącz kroki przez thenApply, thenCompose i thenAccept. Błędy obsługuj przez exceptionally(). Wiele future można łączyć przez allOf/anyOf.
whyModernWins:
- icon: 🔗
title: Umożliwia łączenie operacji
desc: Składasz kroki asynchroniczne w czytelny pipeline.
- icon: 🚫
title: Bez blokowania
desc: Żaden wątek nie czeka bezczynnie na wynik.
- icon: 🛡️
title: Obsługa błędów
desc: exceptionally() i handle() upraszczają odzyskiwanie po błędach.
support:
description: Szeroko dostępne od JDK 8 (marzec 2014)
17 changes: 17 additions & 0 deletions translations/content/pl/datetime/date-formatting.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Formatowanie dat
oldApproach: SimpleDateFormat
modernApproach: DateTimeFormatter
summary: Formatuj daty przez niezmienny i bezpieczny wątkowo DateTimeFormatter.
explanation: DateTimeFormatter jest niemutowalny i bezpieczny wątkowo, w przeciwieństwie do SimpleDateFormat. Możesz przechowywać go jako stałą i współdzielić. Dla typowych formatów dostępne są gotowe formattery, np. ISO_LOCAL_DATE.
whyModernWins:
- icon: 🛡️
title: Wątków bezpieczeństwo
desc: Możesz współdzielić formattery między wątkami bez synchronizacji.
- icon: 📋
title: Wbudowane formaty
desc: ISO_LOCAL_DATE, ISO_INSTANT i inne standardowe formaty.
- icon: 🔒
title: Niemutowalność
desc: Formatter można bezpiecznie trzymać jako static final.
support:
description: Szeroko dostępne od JDK 8 (marzec 2014)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: EJB Timer vs Jakarta Scheduler
oldApproach: EJB TimerService
modernApproach: ManagedScheduledExecutorService
summary: Zastąp ciężkie timery EJB prostszym harmonogramowaniem przez ManagedScheduledExecutorService z Jakarta Concurrency.
explanation: Timery EJB wymagają beana @Stateless lub @Singleton, callbacku @Timeout i wyrażeń harmonogramu w adnotacjach albo XML. Jakarta Concurrency udostępnia ManagedScheduledExecutorService z dobrze znanym API java.util.concurrent. To mniej boilerplate, łatwiejsze testy jednostkowe i brak zależności od kontenera EJB.
whyModernWins:
- icon: 🪶
title: Mniej boilerplate
desc: Bez callbacku @Timeout i ScheduleExpression, używasz standardowego API ScheduledExecutorService.
- icon: 🧪
title: Lepsza testowalność
desc: Zwykłe metody i mocki executora upraszczają testy bez kontenera EJB.
- icon: ☁️
title: Podejście cloud-native
desc: Managed executory integrują się z cyklem życia kontenera i działają w lekkich runtime'ach.
support:
description: Dostępne od Jakarta EE 10 / Concurrency 3.0
17 changes: 17 additions & 0 deletions translations/content/pl/errors/helpful-npe.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Pomocne NullPointerException
oldApproach: Nieczytelny NPE
modernApproach: Szczegółowy NPE
summary: JVM automatycznie wskazuje dokładnie, która zmienna miała wartość null.
explanation: Helpful NPE opisuje, które wyrażenie było null i jaka operacja się nie powiodła. Od Java 14 jest to domyślnie włączone, bez zmian w kodzie, wystarczy nowsze JDK.
whyModernWins:
- icon: 🔍
title: Dokładna zmienna
desc: Komunikat wskazuje konkretną zmienną null w łańcuchu wywołań.
- icon: ⚡
title: Szybsze debugowanie
desc: Koniec zgadywania, które z wielu wywołań zwróciło null.
- icon: 🆓
title: Darmowe usprawnienie
desc: Bez zmian w kodzie, po prostu uruchamiasz na JDK 14+.
support:
description: Szeroko dostępne od JDK 14 (marzec 2020)
17 changes: 17 additions & 0 deletions translations/content/pl/io/deserialization-filters.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Filtry deserializacji
oldApproach: Akceptuj wszystko
modernApproach: ObjectInputFilter
summary: Ograniczaj klasy, które można deserializować, aby zapobiegać atakom.
explanation: ObjectInputFilter pozwala tworzyć allowlisty i denylisty klas, ograniczać głębokość grafu obiektów, rozmiary tablic i liczbę referencji. Chroni to przed podatnościami deserializacji bez dodatkowych bibliotek.
whyModernWins:
- icon: 🛡️
title: Bezpieczeństwo
desc: Blokuje deserializację nieoczekiwanych lub złośliwych klas.
- icon: 📐
title: Precyzyjna kontrola
desc: Kontrolujesz głębokość, rozmiary tablic, referencje i wzorce klas.
- icon: 🏗️
title: Ochrona całego JVM
desc: Możesz ustawić globalny filtr dla całej deserializacji w JVM.
support:
description: Szeroko dostępne od JDK 9 (wrzesień 2017)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Zwarty konstruktor kanoniczny
oldApproach: Jawna walidacja w konstruktorze
modernApproach: Konstruktor zwarty
summary: Waliduj i normalizuj pola rekordów bez powtarzania listy parametrów.
explanation: Rekordy mogą definiować zwarty konstruktor kanoniczny bez listy parametrów i bez ręcznych przypisań pól. Kompilator automatycznie przypisze parametry do pól po wykonaniu logiki walidacji. To idealne miejsce na preconditions, defensywne kopie i normalizację.
whyModernWins:
- icon: ✂️
title: Mniej powtórzeń
desc: Nie musisz powtarzać parametrów ani ręcznie przypisywać każdego pola.
- icon: 🛡️
title: Walidacja
desc: Świetne miejsce na null checki, walidację zakresu i defensywne kopie.
- icon: 📖
title: Czytelniejsza intencja
desc: Zwarta składnia podkreśla walidację zamiast boilerplate.
support:
description: Szeroko dostępne od JDK 16 (marzec 2021)
17 changes: 17 additions & 0 deletions translations/content/pl/language/type-inference-with-var.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Inferencja typów z var
oldApproach: Jawne typy
modernApproach: Słowo kluczowe var
summary: Używaj var do inferencji typów zmiennych lokalnych, mniej szumu i to samo bezpieczeństwo typów.
explanation: Od Java 10 kompilator wywnioskuje typ zmiennej lokalnej na podstawie prawej strony przypisania. To ogranicza wizualny szum bez utraty bezpieczeństwa typów. Używaj var, gdy typ jest oczywisty z kontekstu.
whyModernWins:
- icon: ⚡
title: Mniej boilerplate
desc: Nie trzeba powtarzać złożonych typów generycznych po obu stronach przypisania.
- icon: 👁
title: Lepsza czytelność
desc: Skupiasz się na nazwach zmiennych i wartościach, a nie na deklaracjach typów.
- icon: 🔒
title: Nadal bezpieczne typowanie
desc: Kompilator wywnioskuje i egzekwuje dokładny typ już podczas kompilacji.
support:
description: Szeroko dostępne od JDK 10 (marzec 2018)
17 changes: 17 additions & 0 deletions translations/content/pl/security/key-derivation-functions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Funkcje wyprowadzania kluczy
oldApproach: Ręczne PBKDF2
modernApproach: API KDF
summary: Wyprowadzaj klucze kryptograficzne przez standardowe API KDF.
explanation: API KDF udostępnia standardowy interfejs do funkcji wyprowadzania kluczy, w tym HKDF. Zastępuje nieporęczny wzorzec SecretKeyFactory + PBEKeySpec czytelnym API opartym o builder.
whyModernWins:
- icon: 📐
title: Czyste API
desc: Wzorzec builder zamiast nieporęcznych konstruktorów KeySpec.
- icon: 🔧
title: Obsługa HKDF
desc: Nowoczesny HKDF obok PBKDF2.
- icon: 🛡️
title: Standard
desc: Jednolite API dla różnych algorytmów wyprowadzania kluczy.
support:
description: Ustabilizowane w JDK 25 LTS (JEP 510, wrzesień 2025)
17 changes: 17 additions & 0 deletions translations/content/pl/streams/collectors-flatmapping.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Collectors.flatMapping()
oldApproach: Zagnieżdżone flatMap
modernApproach: flatMapping()
summary: Użyj flatMapping() do spłaszczania wewnątrz kolektora grupującego.
explanation: Collectors.flatMapping() stosuje mapowanie one-to-many jako kolektor downstream. To odpowiednik Stream.flatMap() po stronie kolektorów, przydatny np. wewnątrz groupingBy lub partitioningBy.
whyModernWins:
- icon: 🧩
title: Kompozycyjność
desc: Działa jako kolektor downstream wewnątrz groupingBy.
- icon: 📐
title: Jeden przebieg
desc: Spłaszczanie i grupowanie wykonujesz w jednym przejściu strumienia.
- icon: 🔗
title: Zagnieżdżanie
desc: Łatwo łączysz z innymi kolektorami downstream.
support:
description: Szeroko dostępne od JDK 9 (wrzesień 2017)
17 changes: 17 additions & 0 deletions translations/content/pl/strings/string-chars-stream.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: Znaki String jako strumień
oldApproach: Ręczna pętla
modernApproach: chars() Stream
summary: Przetwarzaj znaki Stringa jako pipeline strumieniowy.
explanation: String.chars() zwraca IntStream wartości znaków i umożliwia funkcyjne przetwarzanie. Dla pełnego wsparcia Unicode użyj codePoints(), które poprawnie obsługuje znaki uzupełniające.
whyModernWins:
- icon: 🔗
title: Łańcuchowanie
desc: Możesz używać filter, map i collect na strumieniach znaków.
- icon: 📐
title: Deklaratywność
desc: Opisujesz co chcesz zrobić, a nie jak iterować.
- icon: 🌐
title: Gotowość na Unicode
desc: codePoints() poprawnie obsługuje emoji i znaki uzupełniające.
support:
description: Dostępne od JDK 8+ (ulepszone w 9+)
17 changes: 17 additions & 0 deletions translations/content/pl/tooling/aot-class-preloading.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: AOT preloading klas
oldApproach: Zimny start za każdym razem
modernApproach: AOT Cache
summary: Buforuj ładowanie klas i kompilację, aby uzyskać szybszy start aplikacji.
explanation: AOT class preloading buforuje załadowane i zlinkowane klasy z przebiegu treningowego. Przy kolejnych uruchomieniach klasy są ładowane z cache, z pominięciem weryfikacji i linkowania. W połączeniu z kompilacją AOT znacząco skraca to czas startu.
whyModernWins:
- icon: ⚡
title: Szybszy start
desc: Pomijasz ładowanie klas, weryfikację i linkowanie.
- icon: 📦
title: Stan w cache
desc: Przebieg treningowy zapisuje optymalny stan klas.
- icon: 🔧
title: Bez zmian w kodzie
desc: Działa z istniejącymi aplikacjami, wystarczy dodać flagi JVM.
support:
description: Dostępne jako standardowa funkcja w JDK 25 LTS (JEP 514/515, wrzesień 2025)
88 changes: 88 additions & 0 deletions translations/strings/pl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
site:
title: java.evolved
tagline: Java ewoluowała. Twój kod też może.
tagline_line1: Java ewoluowała.
tagline_line2: Twój kod też może.
description: Zbiór nowoczesnych snippetów Java. Każdy stary wzorzec Java obok jego czystego, nowoczesnego odpowiednika.
heroSnippetCount: ✦ {{snippetCount}} nowoczesnych wzorców · Java 8 → Java 25
heroOld: Stare
heroModern: Nowe
allComparisons: Wszystkie porównania
snippetsBadge: '{{snippetCount}} snippetów'
nav:
allPatterns: ← Wszystkie wzorce
toggleTheme: Przełącz motyw
viewOnGitHub: Zobacz na GitHub
selectLanguage: Wybierz język
breadcrumb:
home: Strona główna
sections:
codeComparison: Porównanie kodu
whyModernWins: Dlaczego nowoczesne podejście wygrywa
oldApproach: Stare podejście
modernApproach: Nowoczesne podejście
sinceJdk: Od JDK
difficulty: Poziom trudności
jdkSupport: Wsparcie JDK
howItWorks: Jak to działa
relatedDocs: Powiązana dokumentacja
relatedPatterns: Powiązane wzorce
filters:
show: 'Pokaż:'
all: Wszystkie
difficulty:
beginner: Początkujący
intermediate: Średniozaawansowany
advanced: Zaawansowany
search:
placeholder: Szukaj snippetów…
noResults: Brak wyników.
esc: ESC
searchTrigger: Szukaj…
navigate: nawiguj
open: otwórz
close: zamknij
cards:
old: Stare
modern: Nowe
hoverHint: najedź, aby zobaczyć nową wersję →
hoverHintRelated: Najedź, aby zobaczyć nową wersję ➜
touchHint: 👆 dotknij lub przesuń →
copy:
copy: Kopiuj
copied: Skopiowano!
share:
label: Udostępnij
view:
expandAll: Rozwiń wszystko
collapseAll: Zwiń wszystko
stats:
modernPatterns: Nowoczesne wzorce
jdkVersions: Obsługiwane wersje JDK
categories: Kategorie
linesOfPython: Wymagane linie Pythona
footer:
tagline: Java ewoluowała. Twój kod też może.
madeWith: Stworzone z ❤️ przez
and: i
inspiredBy: Inspiracja
viewOnGitHub: Zobacz na GitHub
copilot:
headline: Modernizuj swój kod Java z GitHub Copilot.
description: Pozwól Copilotowi automatycznie migrować stare wzorce do nowoczesnej Javy.
appModernization: Modernizacja aplikacji →
javaGuide: Przewodnik po Javie →
support:
available: Dostępne
preview: Preview
experimental: Eksperymentalne
contribute:
button: Współtwórz
codeIssue: Zgłoś problem w kodzie
translationIssue: Zgłoś problem z tłumaczeniem
suggestPattern: Zaproponuj nowy wzorzec
seeIssue: "Widzisz problem z tym kodem?"
reportIt: "Daj nam znać."
untranslated:
notice: Ta strona nie została jeszcze przetłumaczona na {{localeName}}.
viewInEnglish: Zobacz po angielsku