Wersja podstawowa
- Wstęp do programowania
- Czym jest program, co to znaczy programować?
- Java i inne popularne języki
- Narzędzia, biblioteki, frameworki
- Konfiguracja środowiska pracy
- Instalacja i konfiguracja platformy Java
- Podstawy pracy w wierszu poleceń
- Interaktywny interpreter jshell
- Instalacja i konfiguracja wybranego środowiska deweloperskiego (IDE)
- Pierwsze kroki w Javie
- Uproszczona składnia Java 25
- Komunikacja z użytkownikiem za pomocą klasy IO
- Pierwsze programy ze zmiennymi i obliczeniami
- Tradycyjna pełna składnia języka Java – pakiety, klasy, metody
- Konwencje dot. nazw i formatowania kodu
- Podstawowe techniki programistyczne
- Zmienne i typy
- Liczby i wyrażenia arytmetyczne
- Instrukcje sterujące języka Java
- Instrukcja warunkowa if
- Warunki i spójniki logiczne
- Instrukcja switch i jej nowe możliwości
- Pętle while, do-while, for
- Tworzenie sparametryzowanych funkcji (metod statycznych)
- Tablice
- Pisanie prostych algorytmów
- Programowanie obiektowe w Javie
- Obiekty, klasy, pola, metody
- Dziedziczenie i interfejsy
- Rozszerzanie klas i nadpisywanie metod
- Polimorfizm, zasada podstawiania
- Interfejsy i klasy abstrakcyjne
- Enkapsulacja (hermetyzacja)
- Modyfikatory widoczności
- Techniki i korzyści z enkapsulacji
- Typy wyliczeniowe
- Rekordy
- Wyjątki i ich obsługa
- Najważniejsze klasy platformy Java
- Napisy
- Klasa String: możliwości i ograniczenia
- Budowanie napisów
- Przetwarzanie tekstu, w tym podstawy wyrażeń regularnych
- Kolekcje: listy, zbiory, słowniki; Java Collections Framework
- Wykorzystanie w algorytmach i schematach przetwarzania danych
- Wpływ właściwego doboru struktur danych na wydajność aplikacji
- Funkcyjne techniki programowania:
- Wyrażenia lambda i referencje do metod
- Strumienie: zasada działania, operacje pośrednie i terminalne
- Filtrowanie, mapowanie, redukcja, kolektory
- Obsługa daty i czasu
- Obsługa plików
- Pliki binarne i tekstowe, bajty i znaki, kodowania znaków, strumienie wejścia/wyjścia
- Praktyczne przykłady pracy z plikami tekstowymi
- Klasa Files – operowanie na całych plikach i katalogach
- Sztuczna inteligencja w pracy programisty
- Zadania, które można realizować za pomocą AI:
- Uzupełnianie kodu podczas pisania, sygnalizacja błędów, refaktoryzacja
- Generowanie całych klas i metod, rozwiązywanie zadań za pomocą modeli językowych
- Generowanie testów i kontrola jakości
- Automatyzacja powtarzalnych czynności
- Generowanie kodu HTML i SQL (kurs XL)
- Przegląd dostępnych narzędzi i wykorzystanie niektórych z nich
- Wtyczki i narzędzia wyspecjalizowane w kodowaniu: Cursor, CLine, GitHub Copilot
- Ogólne modele LLM z dobrym wsparciem dla programowania: Claude, Gemini, ChatGPT
- Jak weryfikować kod generowany przez AI — poprawność, bezpieczeństwo, pułapki
- Dostęp przez REST API do usług LLM (na przykładzie ChatGPT lub analogicznej usługi)
- Praktyczne zastosowania Javy Standard Edition
- Dołączanie zewnętrznych bibliotek za pomocą Maven lub Gradle
- Testy jednostkowe, biblioteka JUnit
- Wysyłanie zapytań HTTP, pobieranie danych z sieci, dostęp do zdalnych usług przez Web API
- Obsługa formatów CSV, XML, JSON
- Przetwarzanie i analiza danych
- Aplikacje z graficznym interfejsem użytkownika (Swing lub Java FX)
Wersja XL - dodatkowe tematy
- Java – elementy zaawansowane
- Model pamięci JVM – stos, sterta, obiekty i referencje
- Wątki i synchronizacja
- Elementy wielowątkowości wbudowane w język Java
- Klasy biblioteki standardowej wspierające wielowątkowość, w tym pule wątków
- Strumienie sekwencyjne i równoległe
- Dobre i złe praktyki pod względem wydajności
- Dodatkowe narzędzia w projektach Java – używamy ich przy okazji rozwijania naszych przykładów
- Budowanie projektów
- Maven – klasyka konfiguracji i budowania projektów Java
- Gradle – młodszy i bardziej zwinny konkurent
- Zależności do własnych modułów oraz bibliotek programistycznych
- Możliwości automatycznego budowania na serwerze: Jenkins, GitLab Pipelines, GitHub Actions
- Koncepcja CI/CD
- Git i kontrola wersji kodu
- Testy i kontrola jakości
- Wykorzystanie narzędzi AI do generowania kodu
- Obsługa baz danych w Javie
- Wprowadzenie do baz danych i SQL – w razie potrzeby
- JDBC i bezpośrednie zadawanie zapytań SQL z aplikacji Java
- Parametry i zabezpieczanie aplikacji przed SQL Injection
- Modyfikacja danych i praca z transakcjami
- Techniki zaawansowane
- Zalety i wady bezpośredniego dostępu do baz danych
- Wzorzec DAO
- Obiektowy dostęp do baz danych (ORM) w technologii JPA/Hibernate
- Klasy encji; tworzenie od zera oraz generowanie na podstawie tabel
- Operacje odczytu i modyfikacji danych
- Mapowanie kluczy obcych na świat obiektowy – różne podejścia
- Zadawanie własnych zapytań JPQL oraz natywnych
- Tworzenie aplikacji webowych na platformie Java
- Czym jest “Jakarta EE” (dawniej “Java Enterprise Edition”)?
- Specyfikacje, implementacje, serwery aplikacji
- Zasada działania aplikacji webowej strony serwera
- Podstawy technologii serwletów w Javie
- Obsługa żądań i generowanie odpowiedzi
- Parametry zapytań i obsługa formularzy
- Utrzymywanie sesji i atrybuty w różnych zakresach
- Wprowadzenie do technologii Java Server Pages (JSP)
- Różne podejścia do podziału odpowiedzialności między JSP a Javę
- Usługi sieciowe („web services”)
- Koncepcja SOA i rodzaje usług sieciowych
- Usługi sieciowe typu SOAP
- Technologia JAX-WS i tworzenie serwera SOAP w ramach Jakarta EE
- Generowanie i rola WSDL
- JAXB i automatyczne mapowanie Java↔XML
- Tworzenie klienta i architektura klient/serwer
- Usługi typu REST
- Zasoby, URL-e i metody HTTP
- Technologia JAX-RS i tworzenie serwera REST w ramach Jakarta EE
- Parametry, nagłówki, odnośniki i przekierowania
- Rozszerzanie JAX-RS o własne typy zawartości na przykładzie generowania PDF
- Dostęp do usług REST od strony klienta
- Aplikacja typu Enterprise jako wielomodułowy projekt Mavena
- Framework aplikacyjny Spring
- Tworzenie i uruchamianie projektu w oparciu o Spring Boot
- Aplikacja webowa w technologii Spring MVC
- Kontroler: rola, zasada działania, mapowanie URL-i i wybór metody na podstawie zapytania
- Obsługa parametrów i nagłówków
- Warstwa widoku i technologie szablonowe (JSP / Thymeleaf)
- Model: przekazywanie danych z aplikacji do widoku
- Obsługa formularzy
- Usługi REST w technologii Spring
- Automatyczne tłumaczenie obiektów Java na formaty JSON i XML
- Moduły automatycznie generujące proste „CRUDowe” usługi REST
- Zasada działania aplikacji Spring
- Warstwy typowego projektu
- Adnotacje i wstrzykiwanie zależności; rola interfejsów w projektach Spring
- Różne sposoby inicjalizacji i wstrzykiwania komponentów („beanów”)
- Dostęp do baz danych z aplikacji Spring
- Warstwa danych („repository”) w aplikacji Spring
- Automatyczne instancjonowanie interfejsu przez technologię Spring Data
- Zabezpieczanie aplikacji – podstawy Spring Security