Our Sessions

Sessions

* Click speaker name for bio

Image

Secrets of Performance Tuning Java on Kubernetes

Speaker: Bruno Borges

Initially, getting Java to run on Kubernetes may seem complicated, but after a few lines of YAML and a bit of work with Docker, you will wonder what all that fuss was. It is easy! Then you start looking at the performance of your Java app in one core, one GB of memory container, and this is when it all very quickly gets murky. Ops, SREs, and Java developers need to be aware of the JVM's inner works when deciding on how to resource their applications. Without this knowledge, it isn't easy to know whether it is best to scale vertically or horizontally for performance and costs. This talk will explore JVM ergonomics, CPU throttling, Garbage Collectors, and how using this knowledge can help you increase performance while reducing costs in the cloud.

Follow Bruno —

Image

Cómo a John empezó a gustarle TDD (en lugar de odiarlo)

Speaker: Nacho Cougil

Permíteme compartir una historia acerca de cómo John -un desarrollador como otro cualquiera- empezó a entender (y a disfrutar) con eso de escribir Tests antes del código de Producción.
Todos hemos sentido un cierto "tedio" a la hora de escribir tests, ¿no es cierto? Que si es aburrido, que si es complicado, que si no es necesario... ¿verdad? John también lo pensaba, y de hecho, por más que había escuchado acerca de escribir los tests antes del código de producción, nunca había conseguido llevarlo a la práctica e incluso cuando lo había intentado, se había frustrado aún más, al no haber conseguido entender el cómo llevarlo a la práctica fuera de algunas katas de ejemplo 🤷‍♂️
Escucha esta historia en la que explicaré como John pasó de no entender Test Driven Development (TDD) a ser un apasionado del tema... tanto es así, ¡que ahora no quiere trabajar de otro modo 😅! Algunos beneficios se habrá encontrado a la hora de practicarlo, ¿no? Él dice que así encuentra que tiene más ventajas que al trabajar de otro modo: por ejemplo, que detectarás antes errores en tu código, tendrás un circuito de retroalimentación (feedback loop) más rápido o que será más fácil de refactorizarlo, pero mejor os lo explico en la sesión, ¿no?
PS: Piensa en John como una persona cualquiera, ¡como si incluso fuera el ponente de esta charla 😉!

Follow Nacho —

Image

Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets

Speaker: Holly Cummins

What makes a platform efficient? Is it how quickly code executes, or is it how quickly developers can use it to solve problems? Quarkus makes both people and hardware more efficient. That’s cool, but how does it work? Usually, we expect to trade-off developer experience against runtime efficiency. In this session, Holly will dive into some of the technical underpinnings of Quarkus’s efficiency. She’ll give advice for those using or considering Quarkus - should you be doing reactive programming? Do native binaries run fastest? She’ll also share general principles and transferrable discoveries from the engineering team, such as knowing what you’re optimising for, avoiding cache pollution, and how to be static-but-dynamic.

Follow Holly —

Image

Six Jewels from Six Javas

Speaker: Ian Darwin

In this talk, Java Cookbook author Ian Darwin will highlight and illustrate six of his favorite enhancements over the last six or eight releases of Java. Tune in to find out which features these are, and how using them can help you become a better Java Developer!

P.S. Ian reserves the right to complain about how one or two features have been handled.

Follow Ian —

Image

Test-Driven Development: It's easier than you think!

Speaker: Eric Deandrea

Everyone loves writing tests, don’t they? How do you write good tests? What tools are available for you to write good tests?
In this session, I will dive into the many features of Quarkus that help developers write good tests. I will highlight some of the features of Quarkus, Dev Services and Continuous Testing, which help make testing easier. Additionally, I will live code some tests for common use cases developers encounter, including unit, integration, and “black box” testing of imperative and reactive RESTful and event-driven applications that use common services, such as databases and Kafka brokers. I will discuss techniques such as mocking, spying, and interaction-based testing/verification.
I'll even spend some time showing how IDE-based AI assistants can help!
Once you see how easy TDD really can be there isn't a reason to not do it!

Follow Eric —

Image

Cracking Tricky Java Code Challenges From Java 8 to Java 24

Speaker: Rafael del Nero

Mastering Java fundamentals is necessary to create maintainable, bug-proof, high-quality code and advance your Java career.

I've seen many experienced developers write meaningless Java code because they lack knowledge of the Java core features. They reinvent the wheel and write more complicated, confusing, and difficult-to-maintain code.

Join me in this talk so you can prepare for Java interviews and Java certification using the latest Java features in your applications. You will also be well-equipped to create flexible and maintainable code, making you a reference for code quality from your co-workers.

Let's solve the Java code challenges together so you can best use the latest Java features to create high-quality software.

Follow Rafael —

Image

Looking at Music, an experiment with Kotlin, JavaFX, MIDI, and Virtual Threads

Speaker: Frank Delporte


When a nerdy dad and music-playing son join forces and start experimenting with music and code, some nice things can happen. Did you ever present your music piece in a business dashboard with charts? Did you know that the FXGL game library can be used to generate a piano with fireworks? Let's look at music with the MelodyMatrix application (https://melodymatrix.rocks/) and guide you through the process of how a small experiment turned into a full-blown project.

This talk is not just about code but also features a live piano performance by a 14-year-old musician-coder. Let's have a battle between humans and machines! Who is the best piano player? The musician or a few thousand Virtual Threads? And how far can we push the app's performance to send ByteArrays to an LED strip to react to the music?

Topics in this talk: Java, Kotlin, JavaFX, Gradle, FXGL, MIDI, Vaadin, GitHub Actions, JDeploy,…

Follow Frank —

Image

It Takes Two to Tango – Designing Module Interactions in Modulithic Spring Applications

Speaker: Oliver Drotbohm

According to Russell Ackoff “A system is not the sum of the behaviors of its parts, but the product of their interactions”. That’s why the design of those interactions is of the uttermost importance. In a Spring application, the primary means to establish relationships between application components is dependency injection (DI). With higher-level structuring approaches like Spring Modulith’s application modules in place, should the interaction of those be implemented by DI as well?

The talk presents different approaches to designing application module interactions and compares them regarding their applicability, effect on testability, consistency, error scenarios and how they affect the modularity of the system overall.

Follow Oliver —

Image       Image

Serverless Java in Action: Cloud Agnostic Design Patterns and Tips

Speaker: Kevin Dubois
Speaker: Daniel Oh

You've probably seen how to create a Function-as-a-Service with one of the cloud providers, but if this is all you know about Serverless, prepare to have your mind blown!
In this session we'll show you how to create a production-grade, cloud-agnostic, event-driven serverless solution with Quarkus, a Java stack optimized for fast startup and small footprint; and Knative, an open source community project for deploying, running and managing serverless applications on Kubernetes. Say goodbye to vendor lock-in and hello to Supersonic Subatomic Java-based Serverless bliss!

Follow Kevin —

Image

Java's Concurrency Journey Continues! Exploring Structured Concurrency and Scoped Values

Speaker: Hanno Embregts

Java's concurrency journey has been a long and winding one. We departed from the 'classic threads' station and traveled through Runnables, ExecutorServices, CompletableFutures and ForkJoinPools, before finally arriving at 'virtual threads'. But does 'finally' mean that we've arrived at our final destination, or is it a transfer at best?

Now that virtual threads are available, our Java programs will likely use an abundance of threads. This increase in thread count will immediately make thread coordination, observability and isolation more difficult. Two new Java features are currently in development that might make things a bit easier: Structured Concurrency and Scoped Values.

In this talk, we'll introduce and demonstrate these new features, and how they can help address the challenges that have emerged since the introduction of virtual threads. We'll also discuss how the availability of these features will impact your day-to-day programming life and whether Java's concurrency journey is actually over now that these features have become available or if there are still more stops to come.

Follow Hanno —

Image

How my views on teaching Java have changed.

Speaker: Kenneth Fogel

During my years teaching students how to program, I focused on the specific language, such as Java, in my courses. I felt that this was necessary due to the complexity of the language, just as I felt when I taught Pascal, C, and C++. I frequently complained about many of the aspects of Java that either had to be taught on day one or that I had to tell my students to ignore. Two changes in the language have led me to reflect on my approach to teaching. JEP 477: Implicitly Declared Classes and Instance Main and JEP 458: Launch Multi-File Source-Code Programs each have contributed to the simplification of the language and by extension the simplification of teaching the language. If you are teaching programming or are considering teaching Java, then join me as I discuss how my thoughts on teaching Java have changed.

Follow Kenneth —

Image

Machine Learning + Symbolic Reasoning: a Quarkus story on Artificial Intelligence

Speaker: Mario Fusco

What AI can do nowadays is simply mind-blowing. I must admit that I cannot stop being surprised and sometimes literally jumping from my seat thinking: "I didn't imagine that AI could ALSO do this!". What is a bit misleading here is that what we tend to identify with Artificial Intelligence is actually Machine Learning which is only a subset of all AI technologies available: ML is a fraction of the whole AI-story, while Symbolic Artificial Intelligence enables experts to encode their knowledge of a specific domain through a set of human-readable and transparent rules.

In fact there are many situations where being surprised is the last thing that you may want. You don't want to jump from your seat when your bank refuses your mortgage without any human understandable reason, but only because AI said no. And even the bank may want to grant their mortgages only to applicants who are considered viable under their strict and well-defined business rules.

Given these premises why not mixing 2 very different and complementary AI branches like Machine Learning and Symbolic Reasoning? During this talk we will demonstrate with practical examples why this could be a winning architectural choice in many common situations and how Quarkus through its langchain4j and drools extensions makes the development of applications integrating those technologies straightforward.

Follow Mario —

Image

Best Practices to Secure Web Applications

Speaker: Loiane Groner

While strong authentication and authorization lay the foundation, achieving robust web application security demands a multi-layered approach. At first glance, the field of web application security can seem daunting, but by understanding and implementing core principles, you can dramatically strengthen your defenses against cyber threats.

In this presentation, we'll delve into the essential, yet often neglected, aspects of securing your applications. We'll cover best practices for secure coding, meticulous input validation techniques, the importance of strategic error handling and logging, how to manage file uploads safely, and much more.

Follow Loiane —

Image

Java for Small Coding Tasks

Speaker: Cay Horstmann

For small projects, we often reach for a scripting language, such as Python or Bash, because Java seems too heavy handed. In this interactive presentation, I want to convince you to give Java a try for those tasks. With the right tooling (and some innovative features in Java 21 and 22), Java can be a great choice for scripts, Jupyter notebooks, and even code in the browser. The benefit: compile-time typing, great IDEs, and a growth path when those small projects don't stay small.

Intended audience: Experienced Java programmers who also need to do scripting/exploratory programming.

Image

Translating a Cretan Book into English, German, Dutch, Chinese, etc. using Java and ChatGPT API

Speaker: Heinz Kabutz

"My Village Chorafakia Akrotiri - a book by Emmanouil Koutrakis son of Giorgos (www.chorafakia.com). Heinz held the book in his hand. It was written in flowery Greek. But not just any Greek. The local village dialect of Cretan spoken in the village of Chorafakia. The book was hundreds of pages long, with almost 500 photographs. Unfortunately, even though Heinz has lived on Crete for 18 years, Greek, and especially Cretan, was still opaque to him. "Would you mind if I translate this book into English?" Heinz asked Mr Manolis confidently. Shouldn't be too hard. Send a copy to Google Translate, and we're done. "With the greatest of pleasure, as long as it doesn't cost me anything extra." And with that, the journey began to try and translate a book about the history of our village Chorafakia into something that Heinz could understand. After several years of wrong starts, we finally managed to convert the entire book to AsciiDoc. We also wrote some Java code that would send each portion to the ChatGPT 4.0 API for translation.

During the talk, we will attempt to translate the entire book of over 500 pages into a new language, as well as show the code that drives everything. The logic for working with the files and for interacting with the ChatGPT API was mostly generated by the ChatGPT AI. We will also look at virtual threads and structured concurrency and show how that was used to accelerate the translation process. We will also demonstrate how the ChatGPT AI built in to IntelliJ can be used to simplify our coding tasks.

Follow Heinz —

Image

A Data-Oriented Programming Approach to REST APIs

Speaker: Kenneth Kousen

This session will use records, sealed interfaces, and pattern matching for switch to access RESTful web services. The approach takes advantage of concepts from Data-Oriented Programming like immutability, explicit data representations, and expressive behavior. At least one example will involve making text and vision requests to an AI service, and how to implement that effectively using Java 21+.

Follow Kenneth —

Image

Lessons learnt from founding my own company, and over 30 years hands on coding

Speaker: Peter Lawrey

How can a developer with around ten years of experience continue to grow while remaining hands-on?

In this talk, I share insights and lessons I've gained as a:
- Java Champion
- Founder of a self-funded company for 11 years
- Hands-on developer with over three decades of experience
- As an employer who has hired developers ranging from junior level to those with 30 years of expertise
- How AI is likely to transform the way we work as developers.

Follow Peter —

Image

Bootiful Spring Boot: A DOGumentary

Speaker: Josh Long

Spring Boot 3.x and Java 21 have arrived, making it an exciting time to be a Java developer! Join me, Josh Long (@starbuxman), as we dive into the future of Spring Boot with Java 21. Discover how to scale your applications and codebases effortlessly. We'll explore the robust Spring Boot ecosystem, featuring AI, modularity, seamless data access, and cutting-edge production optimizations like Project Loom's virtual threads, GraalVM, AppCDS, and more. Let's explore the latest-and-greatest in Spring Boot to build faster, more scalable, more efficient, more modular, more secure, and more intelligent systems and services.

Follow Josh —

Image

Java, Code Coverage and their best friend - bytecode: scandals, intrigues, investigations

Do you know what is inside of your class files? Are you ready to bet? Let's have fun by diving into bytecode and exploring how Java compiler and its different versions, from the old ones up to the most recent, transform your source code.

Our dive will be based on details of the implementation of the most popular open-source code coverage tool for Java – JaCoCo (https://jacoco.org), which finds in bytecode and filters out various compiler generated artifacts, which otherwise require unnecessary and sometimes impossible tricks to have full code coverage.

Follow Evgeny —

Image

Say Goodbye to Microservices, Say Hello to Self-Contained Systems

Microservices are a popular approach to building modern software, offering scalability and flexibility. But for many teams, they come with challenges like increased complexity, difficult debugging, and managing too many small services.

In this talk, we'll introduce an alternative: Self-Contained Systems (SCS). Unlike microservices, SCS allows each part of your application to operate independently with its UI, logic, and database, simplifying both development and deployment.

You'll learn why SCS can be a better fit for many projects, how it reduces the complexity of distributed systems, and when it makes sense to use this approach over microservices. We'll also dive into real-world examples that show you how to build self-contained systems using Java and Vaadin.

If you're ready to rethink your architecture and say goodbye to microservice headaches, this talk will show you the way!
He owns Martinelli LLC and has worked as a software architect, developer, consultant, and trainer for three decades, especially in the Java Enterprise environment. In addition to his work, he is a lecturer at the Bern University of Applied Sciences BFH and the University of Applied Science Northwestern Switzerland FHNW on modern architecture and integrating distributed systems, persistence technologies, and DevOps.

Follow Simon —

Image

Your Cloud-Native Toolbox for Java

What does it mean to have cloud-native Java applications? What do you need to think about to be a good Cloud citizen?

It is not about the platform you run it on or the library/framework you want to use. It is about how you build scalable, observable, resilient applications while keeping in mind the application architecture, containers, builds, testing, automation, and standards.

Join us in exploring different tools for creating cloud-native Java apps. We will go through the whole life-cycle of an application – from the first lines of code to a fully operational and containerized application.

Follow Rustam —

Image

Managing Testing Data

Speaker: Elias Nogueira

Have you ever tried to troubleshoot an issue taking a looking at the log files? I bet you did! And it turns out the issue is related to data usage because, you know, users will use real data! Developers won't! A good thing about your recent troubleshooting is that you can understand the data. It's not a bunch of numbers or UUIDs in the name field. How about your development environment? Probably you use either hard-coded data or random strings. We must fix that!

This presentation will show you how to manage testing data in two different ways.

The first way is the creation of a Test Data Factory approach, where we will use the Factory Pattern to easily create any objects we want with understandable and reliable data. This approach will make you in control of your own data, so you can find any bug in the early stages of the SDLC and the DataFaker library will help us to generate good random data in every execution.

In a second way, we will learn and apply the Data-Driven Testing approach, where the same requirement can be applied to different sets of data, generating different results. This approach can reduce the amount of code and the execution time. With the support of JUnit 5 you will learn how to do it in 5 different ways: value source, internal method source, external method source, argument provider, and CVS source.

Follow Elias —

Image

Automatic Heap Sizing

Speaker: Kirk Pepperdine

Automatic heap sizing (AHS) is new feature being introduced in Z, G1, and Serial GC. Traditionally, left on its own, max Java heap size has been limited to 25% of available RAM. The Adaptive Size Policy was introduced into the Parallel, G1, and Z GC collectors to dynamically adjust the size of heap. With AHS all of this will change and this talk will dive into the how and why.

Follow Kirk —

Image       Image

Java + LLMs: A hands-on guide to building LLM Apps in Java with Jakarta

Speaker: Bazlur Rahman
Speaker: Syed Shaaf

AI is revolutionizing the software landscape. However, for many Java developers, integrating these powerful AI tools into existing enterprise applications or a new one can feel daunting. In this hands-on session, we'll demystify the process and show you how to build LLM-powered features directly into your Java codebase.

Using JakartaEE and the LangChain4j library, we'll dive deep into Retrieval Augmented Generation (RAG), a cutting-edge technique that combines the vast knowledge of LLMs with the precision of your own data. We'll explore how to create both few-shot and zero-shot RAG models, and then add practical features like summarization and similarity search, backed by an Embedding database.

Through a live coding demo, we’ll walk you through constructing an AI-powered online store backend and provide practical insights into the architecture and code.

Whether you're familiar with AI or just getting started, this session will give you the confidence and skills to harness the potential of LLMs in your Java projects.

Follow Bazlur —

Image

A Developer's Guide to Jakarta EE 11

Speaker: Michael Redlich

Since its introduction in 2018 as Jakarta EE, the platform has evolved from: Jakarta EE 8, an open-source version of Java EE 8; to Jakarta EE 9, the "big bang" release; to Jakarta EE 10 that introduced the Core Profile.

And now, Jakarta EE 11, released on { month}, { day }, 2024, focuses on productivity and innovation and delivers: updates to 16 specifications; introduces a new specification, Jakarta Data; and sets the baseline to Java 21, the latest LTS release.

This presentation will provide a brief history of JavaEE/Jakarta EE, what's new in Jakarta EE 11, and a review of new and updated specifications with working example applications.

Follow Michael —

Image

JTaccuino - A better Jupyter Experience for Java Developers

Speaker: Sven Reimers

This session shows a new tool for interactive computing for Java developers. Up to now a couple of tools already exist for interactive computing or doing interactive experiments with Java:

JShell - terminal
Jupyter with Java Kernel - Web based
JDoodle - web based


The main idea for creating a new tool was to provide a seamless interactive experience to write Java code, interact with the results using a full graphical interface and all this without the tedious process of compiling and running every time you make a small change achieving a lightweight rapid development cycle. JTaccuino is based on running embedded JShell tooling for executing the Java code and provides a library and some packaged default tooling (JTaccuino Pad, JTaccuino Studio) to allow for maximum flexibility and for direct use or integration in existing environments. For the graphical frontend JTaccuino uses JavaFX.

JTaccuino uses the the Jupyter notebook format (ipynb) for persistence to leverage the source code rendering support e.g. on GitHub.

The session will demo the use of JTaccuino and shows different examples of Jupyter like notebooks in Java.

During the demo a special interest will be to show how a tight integration of a library, e.g. JavaFX charting solutions, can be achieved. This will enhance the overall user experience by adding magic things to the running JShell environment like the automatic display of special variable content.

Image

Java Developer Career Masterplan: 15 steps to grow beyond senior developer

Speaker: Bruno Souza

What if you could devise a clear plan for your Java developer career, to reach senior levels and beyond? What if this plan could be built with the guidance and inspiration of some of the top players in the industry?
Search no more. The Developer Career Masterplan is a 15-step process to design your own masterplan. This is the exact plan used by Java Champions, Open Source developers, Developer Advocates, Distinguished Engineers, Community Managers and more to achieve success in their careers.
Join us in this interactive presentation, where we will work together on your plan. It is a unique opportunity to come away with clarity about your future and actionable steps to build the career you want.

Follow Bruno —

Image

Forking the Future: Embracing Microservices Evolution

Speaker: Mohamed Taman

This talk delves into the challenges faced by organizations burdened with monolithic software systems lacking modularity. Many realize their systems must be more decoupled, hindering the seamless transition to microservices. This talk introduces a groundbreaking solution: tactical forking. This innovative approach embraces the existing complexities, offering a unique strategy for transitioning to microservices. Join this session to explore the practical applications of tactical forking.

Gain insights into its profound impact on software design, team dynamics, and the broader realm of software development. Discover how this approach revolutionizes your transformation journey, turning obstacles into opportunities and ensuring a smooth evolution toward a microservices-based future.

Follow Mohamed —

Conference Sponsors
Image