Structured Concurrency: Why JEP 505 Changes How We Think About Cancellation,...
A request comes in. Your service forks two calls, one for the user and one for their orders. The user lookup fails after a few milliseconds. Your handler catches the exception, returns a clean error to...
View ArticleGson Deserialization and the InaccessibleObjectException
Gson is a popular Java library for converting JSON into Java objects and Java objects into JSON. While Gson works well with ordinary POJOs, deserialization can fail when a POJO contains types from the...
View ArticleWhat’s New in Jackson 3?
Jackson 3 is a major release of the Jackson JSON processing library. Unlike a typical minor or patch upgrade, Jackson 3 introduces several API and behavioral changes that can affect existing Java...
View ArticleGetting Started with Solon
Solon is a lightweight Java application framework designed for building web applications, RESTful APIs, and other backend services. It focuses on simplicity, fast startup, low resource usage, and a...
View ArticleBeyond the Loop: How APL’s Ghost Still Drives Modern NumPy
Take a look at a typical piece of data science code today. You drop a massive matrix into a NumPy array, call a single function, and watch it crunch millions of data points instantly without a single...
View ArticleStructured Concurrency in Practice: ExecutorService vs StructuredTaskScope
Most Java concurrency bugs show up when something goes wrong, not when everything works. So let’s break one subtask on purpose and watch what each approach does about it. A Quick Status Check First, a...
View ArticleProject Leyden: Faster Java Startup Without GraalVM’s Pain, and What You Give Up
Java startup has long been the price of a smart runtime. GraalVM Native Image fixed it by replacing the JVM, but that fix came with strings attached. Project Leyden takes a gentler road. So what...
View ArticleExploring HTTP/3 Support in Java 26’s HTTP Client API
Java 26 adds HTTP/3 support to the standard java.net.http.HttpClient API. This allows Java applications to communicate with HTTP/3-enabled servers without requiring a third-party HTTP client library....
View ArticleUnderstanding the @Find Annotation in Hibernate
Hibernate provides several annotations to simplify database operations when working with Java entities. The @Find annotation is often searched for in the context of retrieving entities, but it is...
View ArticleResolving Jackson Deserialization Creator Exception
Jackson is commonly used in Java applications to convert JSON into Java objects. This process is called deserialization. A common exception during deserialization is: Cannot deserialize from Object...
View ArticleLet It Crash vs. Try-Catch: Erlang/BEAM Supervision Trees Against Java’s...
There’s a moment every Java developer has lived through: staring at a stack trace at 2 a.m., trying to figure out whether to catch this exception, wrap it, rethrow it, or just let the whole request...
View ArticleExploring the Agent2Agent (A2A) Protocol with Spring AI
AI applications are rapidly moving from single-model applications toward systems composed of multiple specialized agents. One agent may specialize in weather information, another in travel planning,...
View ArticleDurable Execution You Can Watch, Without a Workflow Engine
A background job charges a customer’s card on step three of four, then throws an exception on step four. The scheduler does what schedulers do and retries the whole job. Step three runs again. The...
View ArticleLong-Term Memory in Spring AI with AutoMemoryTools
AutoMemoryTools lets a Spring AI agent keep useful facts between sessions without treating the whole conversation transcript as permanent context. This article explains the idea and builds a small...
View ArticleSpring REST Docs + Asciidoctor: Automated API Documentation
Ask any backend developer what they hate most about maintaining a REST API, and somewhere near the top of the list you’ll hear “the docs are lying again.” Someone changed a field name three sprints...
View ArticleDynamic Link Generation Based on OAuth2 User Permissions
Most REST APIs treat pagination and navigation as a solved problem, and then quietly ignore a much messier one: what happens when two different users hit the same endpoint and get back two very...
View ArticleLLM Fine-Tuning: SFT, LoRA, QLoRA, RAG and Prompting
Large language models can perform many tasks without any additional training. They can answer questions, summarize text, generate code, classify information, and interact with tools. However, when...
View ArticleExtracting Reliable Structured Data from LLMs
Large language models are good at understanding natural language, but applications usually need information in a predictable form. A customer support application, for example, may receive a message...
View ArticleHATEOAS Pagination: Why PagedModel Doesn’t Work with Custom Repositories
If you’ve spent any real time building REST APIs with Spring, you’ve probably hit this wall: your PagingAndSortingRepository gives you gorgeous, self-documenting PagedModel responses out of the box,...
View ArticleRunning Java Applications on WebAssembly: Exploring WasmEdge and GraalVM...
Java has powered enterprise software, cloud-native microservices, and high-performance backend systems for nearly three decades. Yet, as serverless computing, edge environments, and multi-tenant...
View Article