SALA B

Pełna agenda dnia

9:20

Otwarcie konferencji

10:00

Archetypes - your secret superpower

Imagine jumping into a new project. In a very short time you start asking meaningful questions, understand the business, and model it correctly. Somehow you just feel what’s right. You manage to solve some of the problems the team was facing for months. You suggest improvements that can benefit  your clients tremendously. All within the first few weeks. Some team members may admire you, while others might make accusations that you are cheating or faking your abilities, or that you possess some special superpowers. Sounds like a fairy tale? During this presentation I’m going to show you how you can utilize archetypes to immediately recognize the business patterns, make right modeling decisions and astonish your fellow team members.

 

Mike Wojtyna

Java Rockstar

11:00

Przerwa

11:30

Jedna aplikacja, wielu tenantów - notatki z praktyki

Multitenancy wydaje się proste, dopóki nie zderzy się z realnymi wdrożeniami i compliance. Pokażę dwa sprawdzone podejścia z produkcji: schema-per-tenant w relacyjnej bazie oraz database-per-tenant w bazie dokumentowej z routingiem po tenant_id. Dopełnię obraz o app-per-tenant i separację na poziomie wiersza. Porównamy izolację, koszty i złożoność oraz przejdziemy przez praktyczne wzorce provisioningu, routingu i migracji w Javie.

Kamil Banach

Java Rockstar

12:30

Przerwa

13:00

Virtual Threads: 101

Programiści Java pracujący nad aplikacjami serwerowymi stoją przed wieloma wyzwaniami. Nie tylko muszą dbać o jej stabilność i bezpieczeństwo, ale także skalowalność. Gdy aplikacja cieszy się zainteresowaniem i liczba użytkowników rośnie, przygotowują się na większy ruch i m.in. dorzucają więcej wątków aby równolegle móc obsługiwać więcej żądań. Niestety, ten sposób skalowania ma swoje ograniczenia - procesory mają limity wątków, które są w stanie obsługiwać jednocześnie, więc w zależności od architektury serwera (np. Tomcat) zwiększenie ich ilości ponad liczbę rdzeni nie przyniesie wymiernych korzyści, a wręcz może spowolnić aplikację (częsty context-switching).
Jak w takich warunkach poradzić sobie ze skalowaniem? Dołożyć kolejne instancje usługi? Migrować na inny serwer? Przejść na programowanie reaktywne? A może wykorzystać wirtualne wątki?
Ten (nie całkiem nowy) koncept został wprowadzony w Javie 21 - w mojej prezentacji wyjaśnimy czym one są, w jaki sposób różnią się od platformowych wątków oraz jak je zastosować, aby aplikacja mogła wykorzystać potencjał potencjał procesora i zapewnić odpowiednią wydajność bez drastycznych zmian codebase.

Paweł Kowalski

Java Rockstar

14:00

Przerwa

14:30

Methods for Consistency across Distributed Systems

Modern data processing systems don't exist in a vacuum. Whether the data is stored in a traditional relational database, key value store or a document db, sooner or later it needs to be exported. This may mean a copy of the entire dataset or merely notifying that records were persisted in the source system. This is when we face challanges related to making sure that the original dataset and its derived dataset remain consistent. In this talk we will elaborate on the consistency problem and provide few patterns for dealing with it. As we'll see, none of them is a silver bullet, but they all come with a trade-off that a system architect needs to be aware of.

Paweł Łoziński

Java Rockstar

15:30

Przerwa

16:00

GenAI i Java oczami architekta - Spring AI oraz LangChain4j w praktyce

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!

Piotr Łaskawiec

Java Rockstar