Tegoroczna agenda
- SALA A
- SALA B
10:00
Porządkowanie chaosu - Structured concurrency
Kiedy w naszym świecie panuje porządek jest nam łatwiej się w nim poruszać. Ten dosyć znany fakt jako programiści odkrywamy z radością co parę lat. W Javie 21 dostaliśmy nową zabawkę - wątki wirtualne.
Jednym z ich głównych haseł reklamowych jest "Stwórz, wystartuj, zapomnij" - kusi, do tego wszyscy zachęcają by jak najwięcej takich wątków tworzyć. A wszyscy wiemy co dzieje się w dziecięcych pokojach po urodzinach naszych pociech, po świeżej dostawie zabawek - chaos. Tym razem jednak twórcy Javy starają się uprzedzić fakty i dać nam do użytku całkiem nowe API - Structured Concurrency. Nie jest to odkrycie koła na nowo i wielka sensacja - ale raczej sprawdzony sposób na "ogarnięcie" współbieżności w naszych programach.
Podczas tej prezentacji postaram się Was wprowadzić w koncepcję Structured Concurrency, dlaczego ona działa i dlaczego powstała. Postaram się również zaprezentować ten kod w działaniu.
Konrad Szałkowski
Java Rockstar
11:00
Przerwa
11:30
Spring Framework bez tajemnic: gusła adnotacji
Wielu programistów piszących w Spring Framework'u opiera się na adnotacjach w celu szybkiego implementowania wymaganej logiki biznesowej. Musisz zapewnić spójność kilku operacji na bazie SQL? Proszę! Użyj @Transactional. Chcesz utworzyć nowy index TTL na danej kolekcji w MongoDB? Tada! Użyj @Indexed z odpowiednimi parametrami. Metryki? Żaden problem, @Timed i inne adnotacje są tuż pod ręką! Wszystko pięknie i kolorowo wygląda - aż do momentu, gdzie jakaś zmiana nagle psuje naszą funkcjonalność i musimy zdebugować nasz (i nie tylko nasz) kod. Sprawdźmy jakie czarnoksięstwa Spring odprawia by nasycić wspomniane runy mocami.
Paweł Kowalski
Java Rockstar
12:30
Przerwa
13:00
OpenTelemetry Tracing - To nie takie proste: Prawdziwe wyzwania w złożonych systemach
Na początku wszystko wygląda dobrze, automatyczna instrumentacja działa, trace'y są widoczne. Ale z czasem coś zaczyna się psuć: część danych znika, trace'y się urywają, a koszty monitoringu rosną.
W tej prezentacji pokażę z czym naprawdę mierzymy się przy wdrażaniu OpenTelemetry w złożonych architekturach. Dowiesz się:
- Jak działa tracing "pod maską"
- Dlaczego trace'y czasem się gubią i jak to naprawić w scenariuszach takich jak:
- wielowątkowość
- wzorce Outbox/Inbox (manualne i z Debezium)
- Kafka Streams i przetwarzanie wsadowe
- sagi
- Jak nie utonąć w danych i kosztach:
- head-based vs tail-based sampling
- konfiguracja OpenTelemetry Collector
- jak filtrować to, co naprawdę istotne
Pokażę konkretne przykłady z projektów produkcyjnych: kod, konfiguracje, pułapki i skuteczne strategie. Po tej prezentacji będziesz wiedzieć, jak tworzyć naprawdę użyteczny system monitorowania nawet w najbardziej złożonych środowiskach.
Sebastian Kozak
Java Rockstar
14:00
Przerwa
14:30
At least once delivery: Outbox i jakieś 14 innych wzorców
Nie klepiemy wszystkiego na jedną dechę. Outbox Pattern - czy pasuje czy nie - wdrażamy bo zawsze dawał radę. Nawet jeśli tak nie do końca potrzebujemy takiej implementacji. Są różne inne sposoby bazujące na podstawowej koncepcji - pokażę Ci jakie.
Implementacji może być kilkanaście, warto mieć ich świadomość. Każda optymalizuje inne drivery architektoniczne. Jest z czego wybierać - pokażę opcje wraz z wszystkim czego potrzebujesz aby ocenić które implementacje powinieneś wziąć pod uwagę. Pozwoli Ci to też ocenić efektywność implementacji które znajdujesz w odwiedzanych projektach.
Aby podjąć odpowiedzialne decyzje, warto wykazać się szeroką perspektywą przed zespołem i być liderem rozumiejącym potrzeby i konsekwencje. Pomogę Ci zbudować uznanie w zespole dając argumenty w dyskusjach, zrozumieć obecne decyzje pokazując kontekst i dać Ci jasne kryteria oceny jakości tego jak skutecznie jest zaimplementowana komunikacja sieciowa.
Jacek Milewski
Java Rockstar
15:30
Przerwa
16:00
Instrumenting Java Code
This talk is about the various ways of instrumenting Java code; we will explore several different methods, concentrating on code generation; dive deeper into ByteBuddy, create a simple javaagent, all with actual running code examples.
Mateusz Rzeszutek
Java Rockstar
10:00
Szybszy start - Projekt Leyden i kompilacja natywna z GraalVM
Długi czas uruchamiania i zwiększone zużycie zasobów to kluczowe wyzwania aplikacji Java, szczególnie istotne w kontekście środowisk chmurowych i konteneryzacji. Tradycyjny model JIT (Just-In-Time) kompilacji, choć elastyczny, nie zawsze spełnia wymagania nowoczesnych architektur. Prezentacja analizuje dwa podejścia do rozwiązania tych problemów: GraalVM Native Image - technologia umożliwiająca kompilację aplikacji Java do samodzielnych plików wykonywalnych Project Leyden - następca technologii CDS (Class Data Sharing) z rozszerzonymi możliwościami (Ahead-Of-Time warmup) Omówione zostaną zarówno podstawy teoretyczne obu rozwiązań, jak i praktyczne przykłady ich implementacji, ze szczególnym uwzględnieniem frameworka Spring. Obie technologie oferują znaczące usprawnienia w zakresie: Redukcji czasu startu aplikacji Optymalizacji zużycia pamięci Poprawy wydajności wykonania Jednocześnie każde z podejść ma swoje specyficzne przypadki użycia i ograniczenia, które zostaną szczegółowo przeanalizowane. Prezentacja dostarcza praktycznej wiedzy dla zespołów rozważających optymalizację swoich aplikacji Java.
Krzysztof Gonia
Java Rockstar
11:00
Przerwa
11:30
Event-Driven Architecture – how hard could it be?
The event notification pattern is a way for different parts of a system to stay connected when changes occur, without being tightly coupled. Essentially, one service tells another “Something happened over here”, so that another service (or many services) can react to that. This task was simple in the world of single-node systems. The distributed transaction protocol (XA) has been implemented by all popular database and messaging systems. Things changed for the worse when we entered the distributed technology land. Middleware vendors don’t take it on themselves to a standard that is equivalent to XA. The talk will be a walk through existing approaches to solving the problem in the application layer. Analysis of pros and cons will be conducted, together with some recommendations on which approaches work where, and where they are not necessarily applicable.
Paweł Łoziński
Java Rockstar
12:30
Przerwa
13:00
Is Spring still the king? Przegląd i porównanie nowoczesnych frameworków w świecie JVM
Technologia nieustannie się zmienia, a zachowanie statusu quo nie jest możliwe w nowoczesnej i dynamicznej branży IT. Zmusza nas to do ciągłego śledzenia dostępnych rozwiązań. Porównując i wybierając narzędzia musimy wziąć pod uwagę ogrom aspektów. Co więcej, kluczowe różnice pomiędzy konkurencyjnymi technologiami często nie są oczywiste, ukrywając się pod zasłoną marketingowego bełkotu.
Podczas tej prezentacji zweryfikujemy czy popularne, szeroko stosowane technologie backendowe o ugruntowanej pozycji (np. Spring) nadążają za nowszymi rozwiązaniami (np. Quarkus). Sprawdzimy również jak wybrać narzędzie dostosowane do problemu, unikając przy tym potencjalnych niebezpieczeństw, podstępnie czyhających na spragnionych nowości programistów.
Piotr Łaskawiec
Java Rockstar
14:00
Przerwa
14:30
Is Concurrency a Necessity?
In today’s world, applications run in increasingly complex and distributed environments. Growing data volumes and stringent performance requirements pose a challenge for developers—how do you scale, optimize speed, and still maintain code readability? In the presentation “Is Concurrency a Necessity?”, we’ll explore how Java, both in local applications and distributed systems, handles multithreading and asynchronous processing.
We’ll discuss Java’s built-in concurrency mechanisms (e.g., Thread, Executor, Future) along with popular libraries that facilitate multithreaded workloads (Reactor, Spring WebFlux, Quarkus). You’ll learn why the classic approach to multithreading may no longer suffice and how asynchronous programming shapes modern application design. We’ll also look at where code optimization ends and organizational challenges in distributed architectures begin—such as coordination, data consistency, and resilience against failures.
During the session, we’ll share best practices, design patterns, and lessons learned from years of working with multithreaded and distributed systems. By the end, we’ll answer the question: is concurrency truly a necessity in today’s projects, or rather a powerful tool to be used thoughtfully and with clear purpose?
Krystian Zybała
Java Rockstar
15:30
Przerwa
16:00
Thinking in Streams
In 2014, JDK 8 introduced the Stream API, bringing a taste of functional programming to Java. 11 years later, in 2025, with the release of JDK 24, the biggest change awaits us in the form of JEP 485 - Stream Gatherers. Do streams make sense (spoiler: yes!), what benefits do gatherers bring, when is it worth using parallel streams, and when can they get in our way - these and other questions will be answered!
Kamil Banach
Java Rockstar
Nasi sponsorzy
Sponsor Platynowy

Konrad Szałkowski
Java Rockstar

Paweł Kowalski
Java Rockstar

Sebastian Kozak
Java Rockstar

Jacek Milewski
Architekt

Mateusz Rzeszutek
Java Rockstar

Krystian Zybała
Java Rockstar

Krzysztof Gonia
Java Rockstar

Paweł Łoziński
Java Rockstar

Piotr Łaskawiec
Java Rockstar

Kamil Banach
Java Rockstar