Looking Back
A look at the talks, workshops, and meetups we've hosted with the EuregJUG community.
Ted M. Young
You finally have a Domain Model that represents the business and supports the functionality of the system. Then the hard part: how do you persist that model to a database? Maybe you're a purist (like me), mapping domain objects to separate database entities. or you directly annotate your domain objects, but have to compromise the domain model to fit the way databases store information. Event sourcing avoids this problem while providing flexible transactional (consistency) boundaries. Instead of mapping object state to tables, you store a sequence of events that led up to the current state: "Concert Scheduled", "Tickets Purchased", etc. Each event is added to an append-only log, making writes almost trivial, with "projections" making custom-fit views straightforward. However, event sourcing requires a mind-shift from the well-known CRUD and DDD Tactical Patterns (Aggregates and Repositories), but the benefits are more flexible systems, with a less "leaky" way to externalize the state of your domain model that is easier to apply across the domain. In this talk, you'll learn how event-sourcing works at the code level without event-sourcing libraries getting in the way of deeper understanding. We'll walk through a codebase for a Concert Ticketing system and see how straightforward the implementation can be. We start with "Event Modeling" the system, defining the commands (user actions) that generate them, the aggregates that make business decisions (and how to move to "deciders"), and the projections used to generate the user interface. We'll see how event-sourcing makes testing easier to write and understand. We'll end by touching on the challenges to using event-sourcing, such as performance and schema evolution.
Vadym Kazulkin
Amazon Bedrock AgentCore enables us to deploy and operate highly capable AI agents securely, at scale. It offers infrastructure purpose-built for dynamic agent workloads, powerful tools to enhance agents, and essential controls for real-world deployment. In this talk, we'll dive deep into various aspects of how to implement an AI Agent in Java using Spring AI, including using the MCP Streamable HTTP Client to talk to the MCP Server with exposed tools. Then, we'll look at the Embabel framework for authoring agentic flows on the JVM that supports intelligent path finding towards goals and cover its benefits. We'll host our agent on Amazon Bedrock AgentCore Runtime and look at other AgentCore features like Observability (in standardized OpenTelemetry compatible format), Gateway (to securely connect to MCP-compatible tools), short and long-term Memory, and Identity. Finally, we'll look at the spring-ai-agentcore project, which provides various integrations between Spring AI and Bedrock AgentCore.
Bruno Souza
You worked hard, learned a lot of technologies, and built your experience with challenging projects. You reached an enviable position in your company and team. Congrats, you are an accomplished Senior Java Dev! Now what? What are the next steps? Many companies often pressure developers to take on management roles. It could be a path, if this is what you want. But there are alternatives! This talk will discuss the 5 paths for developers to grow beyond senior levels. Specially for devs like you that want to keep focusing on the tech side. What are your opportunities, and what are the challenges you will face? Come see how it is possible to focus on the technical side! Learn to build a fulfilling career and grow to the highest levels in your career. All while you keep loving your work!
Sandra Parsick
Du hast Schwierigkeiten, Edge Cases in deinem Maven-Build zu implementieren, z. B. weil dir der Maven-Lebenszyklus zu streng ist oder du eine Build-Logik benötigen, die von den vorhandenen Maven-Plugins und -Erweiterungen nicht abgedeckt wird. Dieser Vortrag zeigt, welche Möglichkeiten du in Maven außerhalb des Happy Path hast. Er erläutert, wie externe Anwendungen und Skripte ausgeführt werden können und diskutiert, wann es sinnvoll ist, ein eigenes Maven-Plugin zu schreiben, und was dabei zu beachten ist. Außerdem zeigt er, wie du den Maven-Lebenszyklus mit Maven-Extension anpassen kannst.
Kai Ito
Tired of the massive mountain of complexity that React, Vue, and Angular force you to climb? Join me in rediscovering the powerful innovations browser vendors have been quietly building while we've been busy learning framework after framework. This is a (re)introduction to the standard browser features you've either forgotten about or never knew existed. Capabilities that have been hiding in plain sight while SPA frameworks took over frontend development. I'm here to show you that none of that complexity is necessary to build responsive, user-friendly, and incredible websites. Let's return to the web's roots and build better, faster, simpler sites. Improve both your users' experience, but also your own developer experience.
Leon Zimmermann
Long‑running tests are a common pain point in large codebases, draining developer focus, slowing feedback loops, and hindering rapid learning. While many established strategies exist to cut test times in small projects, they rarely suffice for enterprise‑grade Spring Boot applications. This talk will first revisit the fundamentals of test‑runtime optimization to set a shared baseline, then dive into advanced, predictive test‑execution techniques that scale. We’ll explore three key approaches—git‑diff‑based, dependency‑graph‑based, and machine‑learning‑based execution—to identify only the tests that need running. Participants will learn how to evaluate existing tools, weigh their trade‑offs, and decide which strategy fits their workflow. Practical guidance will cover integration into local development and CI pipelines, enabling teams to dramatically reduce test times and elevate developer productivity and satisfaction.