Praktyczne programowanie w Javie
Blog o Javie, backendzie i narzędziach programisty. Znajdziesz tu praktyczne
przykłady, konfiguracje, notatki z codziennej pracy i konkretne rozwiązania problemów.
Wybierz swoją ścieżkę
Jeśli jesteś pierwszy raz na blogu, zacznij od jednego z głównych obszarów.
Każda ścieżka prowadzi do praktycznych wpisów, przykładów i notatek z codziennej pracy programisty.
Java od podstaw
Składnia, klasy, obiekty, kolekcje, wyjątki, Stream API i najważniejsze mechanizmy języka Java.
Backend i Spring
REST API, Spring Boot, konfiguracja aplikacji, dobre praktyki i przykłady z pracy backend developera.
Narzędzia developera
Maven, Git, Linux, Redis, SQL i narzędzia, które realnie przydają się w codziennym programowaniu.
Najnowsze artykuły z bloga
Świeże wpisy o Javie, backendzie, narzędziach programisty, Linuksie, SQL i praktycznych problemach z codziennej pracy.
Kolejki w Java i mikroserwisach – ActiveMQ, RabbitMQ, SQS i SNS
Jak działają kolejki w Java i mikroserwisach? Poznaj Queue, ActiveMQ, RabbitMQ, Amazon SQS i SNS oraz sprawdź, kiedy warto stosować komunikację asynchroniczną.
Spock Framework w Javie – testy jednostkowe i integracyjne krok po kroku
Czym jest Spock Framework? Czym jest Spock Framework? Spock Framework to alternatywna dla JUnit biblioteka służąca do tworzenia testów jednostkowych. Jest on szczególnie popularny w projektach opartych o…
Java 21 LTS – najważniejsze zmiany od Java 18 do Java 21
Co nowego w Java 21 LTS? Java 21 to kolejna wersja Long-Term Support (LTS), która zastępuje Java 17 jako główne wydanie rekomendowane do zastosowań produkcyjnych. Oprócz poprawek wydajności…
Java 17 LTS – najważniejsze zmiany od Java 13 do Java 17
Dlaczego warto poznać zmiany w Java 17? Java 17 to jedna z najważniejszych wersji języka wydanych w ostatnich latach. Jest to wydanie Long-Term Support (LTS), które przez długi…
Wszystkie wpisy
Przeglądaj artykuły o Javie, backendzie, SQL, Linuksie, Redisie, Mavenie i narzędziach programisty.
Java #53: wątki – przetwarzanie wielowątkowe
Wątki w Javie Jednym z powodów, dla którego język Java stał tak popularny w latach 90-tych była prostota z jaką programista mógł zaprojektować środowisko wielowątkowe. W tamtym okresie nie było zbyt wiele technologii, które…
Java #52: własne wyjątki biznesowe
Własne wyjątki biznesowe, chodź brzmią bardzo skomplikowanie, są po prostu klasami, które rozszerzają wyjątki istniejące już w Twoim kodzie. Będą to przeważnie wyjątki znajdujące się w standardzie Javy, ale biznesowym wyjątkiem może być też…
Java #51: JDBC – połączenie z bazą danych
Aby zrozumieć dzisiejszą lekcję, musisz znać podstawy baz danych. Jeśli nie masz pojęcia czym są i do czego służą, proponuję wpierw poznać lub powtórzyć wiedzę o tym jak dokonywać prostych zapytań SQL do relacyjnych…
Java #50: własne adnotacje – zastosowanie
Znasz już kilka adnotacji (np. @Override). Język Java umożliwia tworzenie ich dowolnie dużej ilości tzw. customowych (od ang. custom) adnotacji. Jednak zanim zaprojektujesz własne adnotacje, czas przyjrzeć im się z bliska. Nazwy adnotacji zaczynają…
Java #49: mechanizm refleksji
Programowanie generyczne pozwala na ujednolicenie Twojego kodu w wielu obszarach. Podobnie działa mechanizm refleksji. Tak tak jak w matematyce, aby się nie powtarzać możesz skorzystać z wielu symboli i wyrażeń*, tak samo w programowaniu…
Java #48: własny iterator (interfejs Iterable)
Własny iterator Skoro znasz zarówno typy generyczne jak i struktury danych, to możesz napisać swój własny iterator, który będzie przechodził po kolekcji, zgodnie z Twoją intencją. Wpierw należy zaimplementować interfejs Iterator, który zawiera dwie…
Java #47: typ wieloznaczny (wildcard)
Ostatnim tematem związanym z typami generycznymi, jest używanie tak zwanego typu wieloznacznego (ang. wildcard). Oznacza się go za pomocą znaku zapytania (czyli np. ArrayList<?>). Powszechnym wykorzystaniem tego mechanizmu jest sytuacja, gdy wiedza o tym,…
Java #46: ograniczenia typów generycznych
Ponieważ każda klasa w Javie. która nie jest finalna, może być dziedziczona lubi sama dziedziczyć. To pojawia się problem, w jaki sposób taka klasa miałaby być typem generycznym. Wiesz ze wcześniejszych lekcji, że polimorfizm…
Java #45: typy generyczne (generics)
Klasa generyczna i typy generyczne Używając kolekcji bardzo często korzystałem z magicznych ostrych nawiasów, w obrębie których wpisywałem nazwę klasy, której typu miały być jej elementy. Za przykład może posłużyć ArrayList<String>, która jest strukturą…
Java #44: klasy zagnieżdżone (nested classes)
Ostatnim tematem na poziomie średnio-zaawansowanym, o którym opowiem, są klasy zagnieżdżone. Wiem, że brzmi to dość enigmatycznie, ponieważ, dotąd pokazywałem jedynie kod zawarty tylko w jednej klasie. Jednak język Java daje dużo większe możliwości,…