- Projekt grupowy: od 3 do 6 osób (brak odstępstw)
- Tematyka realizowanego projektu: dowolna
- Elementy, które powinny znaleźć się końcowym projekcie i podlegają ocenie:
-
Współpraca z repozytorium Git (dowolnie wybrany darmowy hosting według upodobań, na przykład: Github, Gitlab lub Bitbucket)
-
Aktywność w realizacji projektu:
- pull requesty wraz z code review wewnątrz zespołu
- githubowy pulse lub inne narzędzie pokazujące ciągłość pracy podczas semestru
- podział zadań przy implementacji funkcjonalności projektu poprzez board projektowy (Jira, Trello,...)
-
Praktyczna implementacja i wdrożenie rozwiązań, tematów, narzędzi prezentowanych podczas zajęć (nie muszą być wszystkie, 60-80% jest ok)
- Aplikacja oparta o Spring (Boot) Framework
- Integracja z zewnętrznym zasobem po REST z wykorzystaniem publicznego API ( np.: https://github.com/public-apis/public-apis) wraz z wykorzystaniem (przetworzeniem) otrzymanych danych
- Zaprojektowanie własnego API z wykorzystaniem biblioteki OpenAPI wraz z drugą aplikacją, która konsumuje udostępnione API. Klient będzie wykonywał zapytania HTTP do serwisu i analizował otrzymane dane.
- Architektura mikroserwisowa z wykorzystaniem Spring Cloud Eureka, umożliwiająca rejestrację i wykrywanie usług. Aplikacja będzie składała się z minimum dwóch mikroserwisów, które będą się wzajemnie komunikowały przy użyciu Spring Eureka jako serwera rejestracji usług.
- Wykorzystanie Spring Cloud Config Server, który centralizuje zarządzanie konfiguracją dla wielu mikroserwisów. Dzięki temu wszystkie serwisy w systemie mogą korzystać z jednej wspólnej konfiguracji, przechowywanej w centralnym miejscu (np. w plikach YAML na oddzielnym repozytorium Git), a zmiany w konfiguracji są natychmiastowo propagowane do aplikacji.
- Wykorzystanie Keycloak lub Spring Authorization Server (lub inny nieprezentowany podczas zajęć) jako systemu zarządzającego autoryzacją i autentykacją użytkowników oraz/i serwisów.
- Aplikacja powinna być zaprojektowana w taki sposób, aby jej komponenty zostały odpowiednio przetestowane przy użyciu różnych typów testów, np. jednostkowych (unit tests), integracyjnych (integration tests) oraz testów BDD (Behavior Driven Development). Celem jest zapewnienie wysokiej jakości kodu, wykrywanie błędów na wczesnym etapie oraz zapewnienie, że aplikacja działa zgodnie z oczekiwaniami użytkowników końcowych. Użycie Cucumber – napisanie kilku testów z wykorzystaniem różnych konstrukcji Gherkina i dodanie testów realizowanych przez AssertJ
- Statyczna analiza kodu – lokalne postawienie SonarQube, utworzenie projektu, dodanie skanera, analiza wyników, dbanie o utrzymanie długu technicznego na akceptowalnym poziomie
- Aplikacja wykorzystująca ostatnie nowości w JDK (np. Local-Variable Type Inference, Text Blocks, Sealed Classes, Pattern Matching dla instanceof, Virtual Threads, Records)
- Obsługa LLM / AI w Javie – skorzystanie z API do zadania przetwarzania tekstu lub np. predykcja/klasyfikacja własnym modelem
-
UI oraz UX nie mają znaczenia, podczas prezentacji można użyć narzędzi typu Swagger albo Postman
-
Unikanie typowych aplikacji Create-Read-Update-Delete (CRUD)
-
| Prowadzący | Temat |
|---|---|
| ŁCh | - Cucumber (BDD) + AssertJ - Spring: Podstawowe zagadnienia, MVC, RestController, HttpClient, JPA - LLM |
| MD | - Wprowadzenie + IntelliJ - Testy Mutacyjne - From Java to Go |
| MK | - Logi + Observability (JMX+Spring Atuators/Endpoints) - Spring AOP - Refleksja, Classloader, Annotation Processing |
| ZN | - JDK Updates (od wersji 9 do wersji 25) - Mikroserwisy 101: praktyczne podstawy budowy systemu z wykorzystaniem REST i Spring Cloud Eureka - Mikroserwisy 102 (+ Spring Security): zaawansowane tematy związane z wykorzystaniem narzędzi do zarządzania autoryzacją i autentykacją |
| Lp | Data | Temat | Uwagi |
|---|---|---|---|
| 1 | 2.03 | Wprowadzenie + IntelliJ | Materiały na zajęcia |
| 2 | 9.03 | Spring: Podstawowe zagadnienia, MVC, RestController, HttpClient, JPA | |
| 3 | 16.03 | Mikroserwisy 101: praktyczne podstawy budowy systemu z wykorzystaniem REST i Spring Cloud Eureka | Scenariusz zajęć |
| 4 | 23.03 | Przedstawienie pomysłu na projekt | [Link do zapisów -> kanał Teams] |
| 5 | 30.03 (22.04) | Mikroserwisy 102 (+ Spring Security): zaawansowane tematy związane z wykorzystaniem narzędzi do zarządzania autoryzacją i autentykacją | Scenariusz zajęć |
| 6 | 13.04 | Cucumber (BDD) + AssertJ | |
| 7 | 20.04 | Testy Mutacyjne | |
| 8 | 4.05 | Logi + Observability | |
| 9 | 11.05 | Spring AOP | |
| 10 | 18.05 | From Java to Go | Materiały na zajęcia |
| 11 | 25.05 | Sprawdzanie postępu realizacji projektu | |
| 12 | 1.06 | JDK Updates (od wersji 9 do wersji 25) | |
| 13 | 8.06 | LLM | |
| 14 | 15.06 | Refleksja, Classloader, Annotation Processing | |
| 15 | 22.06 | Finalne przedstawienie zrealizowanego projektu |
- Ankieta Wejściowa: Oczekiwania — wypełnij teraz, abyśmy mogli lepiej dostosować zajęcia do Twoich potrzeb i oczekiwań!
- Ankieta Wyjściowa: Ocena zajęć i wnioski — wypełnij po zakończeniu zajęć, aby podzielić się swoimi doświadczeniami i pomóc nam w przyszłości!