Introduction 📝
Welcome to this month’s Top Picks, where we highlight the most exciting advancements and practical guides in the Java ecosystem.
From Rod Johnson’s groundbreaking Embabel framework that redefines AI agent development in Spring, to deep dives into Java’s latest language features and concurrency improvements, these curated articles bring you cutting-edge tools and insights.
Whether you’re looking to enhance your Spring Boot apps with custom health checks, streamline email processing with RabbitMQ, or supercharge your projects using AI and custom serializers, these selections offer valuable knowledge for every Java developer striving to stay ahead in 2025 and beyond.
Dive in and discover the innovations shaping the future of Java development.
Explore these insights in detail with the full articles linked below.
🚀 Java + Spring Boot + SQL Interview + Certification Prep 🚀
🎯 Perfect for aspiring developers, job switchers & interview prep warriors!🔥 What’s Inside (PDF format):
Grokking the Java Interview (Vol 1 & 2)
Grokking the Spring Boot Interview
Grokking the SQL Interview
Java SE 17 Developer Certification (1Z0-829) Guide
250+ Spring Framework Certification Practice Questions
Top Picks ⭐
Introducing Embabel: Advanced AI Agent Development for Java Applications
Embabel is a new JVM-based framework developed by Rod Johnson, the creator of the Spring Framework, designed to facilitate the development of AI agents within the Spring ecosystem.
It introduces a type-safe approach to building agentic flows, utilizing Goal-Oriented Action Planning (GOAP) to enable dynamic, multi-step decision-making processes. Embabel supports multiple execution modes—Focused, Closed, and Open—allowing for flexible agent behavior based on user intent and context.
The framework emphasizes testability, composability, and integration with Spring AI, providing developers with a robust platform for creating intelligent applications.
Key Java Language Updates From 2020 to 2025
Speaker reflects on Java's evolution over the past 5 years since its 25th birthday, highlighting 10 new language features finalized across 11 releases, with a focus on "data programming" - better support for plain old data through features like records (product types) and sealed classes (sum types) combined with pattern matching.
He discusses JDK 25's new "flexible constructor bodies" feature (JEP 513) that allows statements before constructor invocations, solving long-standing issues with constructor validation and object integrity.
The talk concludes with future predictions, including expanded pattern matching for regular classes, Project Valhalla features (value classes and non-null reference types), and hints at a reimagined string templates feature. It emphasizes the community contribution aspect, as this constructor feature was originally proposed by external contributor Archie Cobbs.
Adding Health Checks to Spring Boot with Custom Indicators
This article explains how to enhance Spring Boot applications by implementing custom health checks using Spring Boot Actuator.
While Actuator provides default health indicators for components like databases and disk space, many applications require monitoring of specific services.
The article shows how to create custom indicators by implementing the
HealthIndicator
interface or extendingAbstractHealthIndicator
, which integrates directly into the/actuator/health
endpoint.It also highlights error handling and how Spring Boot can execute health checks in parallel, making the approach both efficient and extensible for real-world applications.
Latest 🔥
Java’s Structured Concurrency: Finally Finding Its Footing
This article discusses the evolution and stabilization of Java's structured concurrency model, particularly in JDK 21.
Structured concurrency aims to simplify multithreaded programming by treating multiple tasks running in different threads as a single unit of work.
This approach streamlines error handling and cancellation, improves reliability, and enhances observability.
The introduction of the
StructuredTaskScope
class allows developers to define scopes with specific success policies, such asShutdownOnFailure
, which cancels all tasks if any fail.Additionally, the API offers improved cancellation handling, deadline management, and better integration with virtual threads. These advancements make structured concurrency a compelling choice for developers seeking to write cleaner, more maintainable concurrent code
Making a Simple Email Queue with Spring Boot and RabbitMQ
This article discusses how to offload email sending tasks from a Spring Boot application by utilizing RabbitMQ. Instead of directly sending emails during user interactions, the application places email requests into a RabbitMQ queue.
A separate listener service then processes these messages asynchronously, sending the emails without delaying the user's experience.
This approach enhances performance and reliability, allowing the application to handle email delivery failures gracefully and retry sending emails when necessary.
Obregon provides a comprehensive guide, including setting up RabbitMQ, configuring Spring Boot with necessary dependencies, and implementing the producer and consumer components for the email queue.
Writing Custom Jackson Serializers in Spring Boot
This article discusses how to create and register custom serializers in a Spring Boot application using Jackson. While Jackson provides default serialization for most Java objects, custom serializers offer greater control over how objects are converted to JSON, which is particularly useful for formatting dates, masking sensitive information, or serializing third-party classes that cannot be modified directly.
Obregon demonstrates this by implementing a custom serializer for a
Status
class, transforming its two fields into a single formatted string. He then shows how to apply this serializer to specific fields using the@JsonSerialize
annotation or globally to a class.Additionally, Obregon discusses how to register custom serializers with Spring Boot's
ObjectMapper
to ensure they are applied consistently across the application.
Supercharge Your Java Apps With AI: A Practical Tutorial
This article offers Java developers a hands-on guide to integrating artificial intelligence into their applications. The tutorial covers foundational AI concepts, including machine learning and deep learning, and demonstrates how to implement them using Java-compatible frameworks like TensorFlow, Deeplearning4j, and OpenAI's APIs.
Practical examples include building natural language processing (NLP) models, developing chatbots, and implementing image recognition features.
By providing both theoretical insights and code-centric examples, the article equips developers with the tools and knowledge to enhance their Java applications with advanced AI functionalities.
100+ Senior Java Developer Interview Questions and Answers – 2025 Edition
This article provides a comprehensive guide for preparing for senior Java developer roles.
It covers a wide range of topics, including core Java concepts, multithreading, collections, object-oriented programming principles, memory management, Java 8+ features, Spring microservices, and database design.
Each section presents common interview questions along with detailed answers, offering insights into the expectations for senior-level positions.
AI/ML Introduction for Java Developers
This presentation provides an introductory overview of AI and machine learning for Java developers, emphasizing the fundamental shift from deterministic enterprise systems (same input, same output) to non-deterministic, probabilistic AI systems.
The speaker explains that machine learning is essentially about pattern recognition - either predicting or generating based on learned patterns - and breaks down the AI hierarchy from general AI to machine learning to deep learning, with both predictive AI (which currently generates more revenue) and generative AI branches.
Key technical concepts covered include how Large Language Models work through probability distributions rather than data storage, the importance of context and prompt engineering techniques, and Retrieval Augmented Generation (RAG) systems that enhance prompts with relevant database context to reduce hallucinations.
AsyncAPI + Kafka Microservices 🔥 | SpringWolf Auto-Docs in Spring Boot (Zero Config)
This tutorial demonstrates how to use Spring Wolf to automatically generate documentation for asynchronous API communication in microservices architectures.
The content explains a common challenge developers face when working with event-driven systems using messaging channels like Kafka or RabbitMQ - it's difficult to trace which microservices are producers versus consumers and understand payload structures, especially since documentation is often outdated.
Using a loan processing system as an example, where a loan service and credit check service communicate through Kafka topics, the tutorial shows how Spring Wolf can generate Swagger-like documentation for async APIs.
The implementation involves adding Spring Wolf dependencies to the project, configuring application properties to enable documentation generation and specify Kafka server details, and using annotations like @AsyncPublisher and @AsyncOperation to mark producers and consumers.