01 Jul 2025

feedDZone Java Zone

A Keycloak Example: Building My First MCP Server Tools With Quarkus

Recently, I explored how the Model Context Protocol (MCP) is gaining traction in the Java ecosystem, with frameworks like Spring AI, Quarkus, and LangChain4j starting to adopt it for integrating language models via standardized interfaces. It was also time to start experimenting with writing an MCP Server myself (well maybe not the first time). Certainly, I don't want to be left out of all the cool things being demonstrated by the community. The goal for me is to learn, and creating perhaps a more practical example.

In this post I am going to choose Keycloak, and write an experimental MCP server implementation for Keycloak. The post is also to spark interest around this topic: Will it be useful to have an MCP server for Keycloak?

01 Jul 2025 7:00pm GMT

Spring Cloud LoadBalancer vs Netflix Ribbon

The Spring Cloud ecosystem has been evolving significantly over the years. At first, it was mainly based on the Netflix stack, then it started shifting towards its own solutions. One of the components that has been substituted is Netflix Ribbon. Ribbon is a client-side load balancer and has been replaced by Spring Cloud LoadBalancer.

Spring Cloud LoadBalancer is a more modern and maintainable solution. In this article, you will learn the differences between the two, their designs, and practical examples in Java.

01 Jul 2025 6:00pm GMT

Squid Game: The Clean Code Trials — A Java Developer's Survival Story

"In the world of code, there are only two outcomes: evolve or perish."

Episode 1: The Red Light of Rigid Code

Scene: A vast ODC filled with desks, whiteboards, and terminals. The chairs are marked with red and green stickers. Software contestants sitting, trembling, gazing at a giant robot doll that watches them intently.

01 Jul 2025 4:00pm GMT

Jakarta EE 11 and the Road Ahead With Jakarta EE 12

Jakarta EE 11 is now available, and it's more than just a version update. It's the beginning of a new era in enterprise Java-one that aligns with modern Java standards, simplifies the platform, and positions it for the future of cloud-native development. But it doesn't stop there. Jakarta EE 12 is already shaping up to push the platform even further.

Let's explore what Jakarta EE 11 delivers and how Jakarta EE 12 is preparing us for a more powerful and modern Java ecosystem.

01 Jul 2025 11:00am GMT

25 Jun 2025

feedDZone Java Zone

Essential JVM Tools for Garbage Collection Debugging

Java garbage collection is a boon to programmers, but it can cause headaches in production. Poorly-tuned GC is extremely resource-hungry.

Tuning and troubleshooting GC is therefore an important skill. How do you obtain information on how GC is performing? What tools can you use to identify bottlenecks and inefficiencies?

25 Jun 2025 3:00pm GMT

24 Jun 2025

feedDZone Java Zone

Advanced Java Garbage Collection Concepts: Weak References, Finalization, and Memory Leaks

The WeakReference() class in Java is often touted as being the answer to memory leaks. However, weak references on their own are not necessarily the answer.

Memory leaks are one of the hardest issues to diagnose. This article looks at a scenario where using weak references in conjunction with an object's finalize() method can result in a memory leak.

24 Jun 2025 5:00pm GMT

Distributed Rate Limiting in Java: A Deep Dive into Bucket4j + PostgreSQL

Important note: There are implementation details for the integration between PostgreSQL and the bucket4j library, specifically for version 8.14.0. The post's author is not responsible for future changes, but I'm 90% sure that it will be accurate for a long time.

Hey everyone!

24 Jun 2025 1:00pm GMT

How to Test Multi-Threaded and Concurrent Java

Testing multi-threaded, concurrent Java code is difficult because each test run only captures one possible thread interleaving, and those interleavings are non-deterministic.

To address this, I created the open-source tool VMLens. VMLens allows you to test concurrent Java code in a deterministic and reproducible way by executing all possible thread interleavings.

24 Jun 2025 12:00pm GMT

23 Jun 2025

feedDZone Java Zone

From Java 8 to Java 21: How the Evolution Changed My Developer Workflow

As a Java developer who spent years working with Java 8, I was comfortable with the stability and functionality it provided - lambda expressions, Streams and the java.time API felt like revolutionary improvements when they first arrived. But like many others, I stuck with Java 8 for years, not seeing the need to move on. That was, until I had the chance to work with Java 17 and eventually Java 21. In this post, I reflect on the features that truly changed the way I code and why it's worth upgrading from Java 8 to Java 21.

Why I Stuck With Java 8 for So Long

I stuck with Java 8 for a long time because it just worked. It was stable, widely adopted and most importantly, it met the needs of enterprise projects. Newer versions came out, but transitioning wasn't always worth the effort - until my personal project pushed me to try something different. As I joined a team using Java 17+ and started working with Java 21 in real-world projects, I began to see just how much had changed.

23 Jun 2025 4:00pm GMT

20 Jun 2025

feedDZone Java Zone

How to Marry MDC With Spring Integration

In modern enterprise applications, effective logging and traceability are critical for debugging and monitoring business processes. Mapped Diagnostic Context (MDC) provides a mechanism to enrich logging statements with contextual information, making it easier to trace requests across different components.

This article explores the challenges of MDC propagation in Spring integration and presents strategies to ensure that the diagnostic context remains intact as messages traverse these channels.

Let's start with a very brief overview of both technologies. If you are already familiar with them, you can go straight to the 'Marry Spring Integration with MDC' section.

20 Jun 2025 11:00am GMT

18 Jun 2025

feedDZone Java Zone

Top Trends for Data Streaming With Apache Kafka and Flink

The evolution of data streaming has transformed modern business infrastructure, establishing real-time data processing as a critical asset across industries. At the forefront of this transformation, Apache Kafka and Apache Flink stand out as leading open-source frameworks that serve as the foundation for cloud services, enabling organizations to unlock the potential of real-time data. Over recent years, trends have shifted from batch-based data processing to real-time analytics, scalable cloud-native architectures, and improved data governance powered by these technologies. Looking ahead, the data streaming ecosystem is set to undergo even greater changes. Here are the top trends shaping the future of data streaming for businesses.

The Top Data Streaming Trends

I recently explored the past, present, and future of data streaming tools and strategies from the past decades. Data streaming is becoming more and more mature and standardized, but also innovative.

18 Jun 2025 8:00pm GMT

17 Jun 2025

feedDZone Java Zone

Effective Exception Handling in Java and Spring Boot Applications

When you're building Java applications, especially with frameworks like Spring Boot, it's easy to overlook proper exception handling. However, poorly managed exceptions can make your application harder to debug, more difficult to maintain, and a nightmare for anyone dealing with production issues.

In this post, we'll explore how to handle exceptions effectively by avoiding generic catch blocks, using custom exceptions, and centralizing exception handling with Spring Boot's @ControllerAdvice.

17 Jun 2025 8:00pm GMT

Kung Fu Commands: Shifu Teaches Po the Command Pattern with Java Functional Interfaces

Po was supposed to be practicing the Dragon Scrolls. Instead, he was… well, eating.

Shifu (arms crossed): "Po! Again? Training time, not dumpling time."

17 Jun 2025 2:00pm GMT

Driving Streaming Intelligence On-Premises: Real-Time ML With Apache Kafka and Flink

Lately, companies, in their efforts to engage in real-time decision-making by exploiting big data, have been inclined to find a suitable architecture for this data as quickly as possible. With many companies, including SaaS users, choosing to deploy their own infrastructures entirely on their own, the combination of Apache Flink and Kafka offers low-latency data pipelines that are built for complete reliability.

Particularly due to the financial and technical constraints it brings, small and medium-sized enterprises often have a number of challenges to overcome when using cloud service providers. One major issue is the complexity of cloud pricing models, which can lead to unexpected costs and budget overruns. This article explores how to design, build, and deploy a predictive machine learning (ML) model using Flink and Kafka in an on-premises environment to power real-time analytics.

17 Jun 2025 11:00am GMT

16 Jun 2025

feedDZone Java Zone

How to Use Testcontainers With ScyllaDB

Setting up a full database environment for every round of integration testing can be time-consuming and complex. This post walks through how to use the Testcontainers library to spin up lightweight, throwaway ScyllaDB instances for testing purposes. We'll explore a practical example that covers initializing the database and running tests against it.

Testcontainers: A Tool for Integration Testing

You automatically unit test your code and (hopefully) integration test your system…but what about your database? To ensure that the application works as expected, you need to extend beyond unit testing. You also need to automatically test how the units interact with one another and how they interact with external services and systems (message brokers, data stores, and so on). But running those integration tests requires the infrastructure to be configured correctly, with all the components set to the proper state. You also need to confirm that the tests are isolated and don't produce any side effects or "test pollution." How do you reduce the pain…and get it all running in your CI/CD process?

16 Jun 2025 5:00pm GMT

Code of Shadows: Master Shifu and Po Use Functional Java to Solve the Decorator Pattern Mystery

It was a cold, misty morning at the Jade Palace. The silence was broken not by combat… but by a mysterious glitch in the logs.

Po (rushing in): "Shifu! The logs… they're missing timestamps!"

16 Jun 2025 12:00pm GMT