SALA B
Pełna agenda dnia
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!