04 Mar 2026

feedDZone Java Zone

Building a Java 17-Compatible TLD Generator for Legacy JSP Tag Libraries

When TLD Generation Tooling Falls Behind Java 17

The vulnerabilities introduced by upgrades to the Java platform tend not to lie in the application code itself, but rather in the ecosystem of build-time tools that enterprise systems rely on. This was made clear by a migration to Java 17, in which a long-standing dependency on TldDoclet to generate Tag Library Descriptor (TLD) was compromised.

TldDoclet, a widely used tool for generating TLD metadata from Java tag handler classes, is no longer supplied or compatible with current Java versions. The effect of this gap was not so obvious. The application itself compiled and executed well with Java 17, and the underlying JSP tag handlers remained functional. But TLD generation did not come up with a congenial mechanism, consequently placing a hard blocker late in the build. What once was a constant and unseen component of the toolchain turned into a migration issue with a high risk.

04 Mar 2026 5:00pm GMT

03 Mar 2026

feedDZone Java Zone

Comparing Top 3 Java Reporting Tools

There's no shortage of reporting tools, but a good number of them are either part of heavyweight BI systems or cloud services. Many line‑of‑business applications, however, just want a discreet, built‑in reporting option that can be customized.

Having recently tested several Java‑based document generation tools and libraries, I thought a short, plain-spoken, and up-to-date review could be worth sharing.

03 Mar 2026 6:00pm GMT

27 Feb 2026

feedDZone Java Zone

Rethinking Java Web UIs With Jakarta Faces and Quarkus

Nowadays, Java enterprise applications often default to Angular, React, or Vue for the frontend. But for this kind of application, the most natural UI framework already exists in the Java ecosystem: Jakarta Faces.

Modern Java enterprise applications tend to follow a familiar pattern: a Java backend exposing REST APIs and a JavaScript/TypeScript frontend built with some library like Angular, React, or Vue. This architecture has become so standard that we rarely question it.

27 Feb 2026 6:00pm GMT

26 Feb 2026

feedDZone Java Zone

A Practical Guide to Building Generative AI in Java

Building generative AI applications in Java used to be a complex, boilerplate-heavy endeavor. You'd wrestle with raw HTTP clients, hand-craft JSON payloads, parse streaming responses, manage API keys, and stitch together observability, all before writing a single line of actual AI logic. Those days are over.

Genkit Java is an open-source framework that makes building AI-powered applications in Java as straightforward as defining a function. Pair it with Google's Gemini models and Google Cloud Run, and you can go from zero to a production-deployed generative AI service in minutes, not days.

26 Feb 2026 4:00pm GMT

25 Feb 2026

feedDZone Java Zone

How to Configure JDK 25 for GitHub Copilot Coding Agent

GitHub Copilot coding agent runs in an ephemeral GitHub Actions environment where it can build your code, run tests, and execute tools. By default, it uses the pre-installed Java version on the runner - but what if your project needs a specific version like JDK 25?

In this post, I'll show you how to configure Copilot coding agent's environment to use any Java version, including the latest JDK 25, ensuring that Copilot can successfully build and test your Java projects.

25 Feb 2026 1:00pm GMT

23 Feb 2026

feedDZone Java Zone

Data Driven API Testing in Java with Rest-Assured and TestNG: Part 1

Data-driven testing, also known as parameterized testing, is a technique that uses a data table to drive test execution by defining inputs, expected outputs, and test environment settings. It separates test data from test logic. Rather than creating multiple test cases for different input values, a single test case is executed repeatedly using different data sets.

The TestNG framework provides the @DataProvider annotation, which supplies data sets to tests. There are multiple ways to perform data-driven API testing using TestNG's @DataProvider. In this article, we will learn how to pass test data using an Object array.

23 Feb 2026 6:00pm GMT

Building a Sentiment Analysis Pipeline With Apache Camel and Deep Java Library (DJL)

Sentiment analysis is now a key part of many applications. Whether you're processing customer feedback, sorting support tickets, or tracking social media, knowing how users feel can be just as important as knowing what they say.

For Java developers, the main challenge isn't finding machine learning models, but applying them within the existing or new Java applications without relying on Python. Most NLP models are shown in Python notebooks, while real systems use file pipelines, routing, retries, fallbacks, and monitoring. Many teams find it hard to connect these pieces smoothly.

23 Feb 2026 1:00pm GMT

18 Feb 2026

feedDZone Java Zone

Testing Legacy JSP Code

JSP might be old, not fancy, or trendy anymore, but many legacy systems still use it, and there are development teams tasked with maintaining and extending systems with a JSP frontend (see https://webtechsurvey.com/technology/javaserver-pages). What can you do when you need to work on a code base that has unit tests for the Java code, but a significant part of the code base is living in (an untested) frontend code and is prone to failures?

You can rely on code reviews or pull requests, but that seems insufficient to flag even trivial issues. You can wait for manual testers or automated UI tests to find problems after the change was deployed to the QA environment, but that is way too late and cumbersome.

18 Feb 2026 3:00pm GMT

Why “At-Least-Once” Is a Lie: Lessons from Java Event Systems at Global Scale

At-least-once delivery is treated like a safety net in Java event systems. Nothing gets lost. Retries handle failures. Duplicates are "a consumer problem." It sounds practical, even mature.

That assumption doesn't survive production.

18 Feb 2026 2:00pm GMT

17 Feb 2026

feedDZone Java Zone

Beyond Ingestion: Teaching Your NiFi Flows to Think

If you are working with data pipelines, chances are you have crossed paths with Apache NiFi. For years, it's been the go-to way for getting data from point A to point B (and often C, D, and E). Its visual interface makes building complex routing, transformation, and delivery flows surprisingly easy, handling everything from simple log collection to intricate IoT data streams across countless organizations. It's powerful, it's flexible, and honestly, it just works really well for shuffling bits around reliably. We set up our sources, connect our processors, define our destinations, and watch the data flow - job done, right?

AI Opportunity

Well, mostly. While Apache NiFi is fantastic at the logistics of data movement, I started wondering: what if we could make the data smarter while it's still in motion? We hear about AI everywhere, crunching massive datasets after they've landed in a data lake or warehouse. But what about adding that intelligence during ingestion? Imagine enriching events, making routing decisions based on predictions, or flagging anomalies before the data even hits its final storage.

17 Feb 2026 7:00pm GMT

Responding to HTTP Session Expiration on the Frontend via WebSockets

There is no doubt that nowadays software applications and products that have a significant contribution to our well-being are real-time. Real-time software makes systems responsive, reliable, and safe, especially in cases where timing is important - from healthcare and defense to entertainment and transportation. Such applications are helpful as they process and respond to data almost instantly or within a guaranteed time frame, which is critical when timing and accuracy directly affect performance, safety, or even user experience.

As a protocol that enables real-time, two-way (full-duplex) communication between a client and a server over a single, long-lived TCP connection, WebSockets are among the technologies used by such applications.

17 Feb 2026 2:45pm GMT

16 Feb 2026

feedDZone Java Zone

My Learning About Password Hashing After Moving Beyond Bcrypt

For a long time, I thought I had password hashing figured out.

Like many Java developers, I relied on bcrypt, mostly because it's the default choice in Spring Security. It was easy to use, widely recommended, and treated in tutorials as "the secure option." I plugged it in, shipped features, and moved on.

16 Feb 2026 8:00pm GMT

12 Feb 2026

feedDZone Java Zone

Java Developers: Build Something Awesome with Copilot CLI and Win Big Prizes!

Here's today's invitation: join the GitHub Copilot CLI Challenge and build something with Copilot right in your terminal. Visit the challenge page for the rules, FAQ, and submission template.

Why I'm Excited About Copilot CLI (especially for Java)

If you write Java for a living, you already know the truth: the terminal is where we build and test. It's where feedback loops are short and where most productivity gains come from "small wins" repeated hundreds of times.

12 Feb 2026 1:00pm GMT

Bootstrapping a Java File System

So, what does a file system mean to you? Most think of file systems as directories and files accessed via your computer: local disk, remotely shared via NFS or SMB, thumb drives, something else. Sufficient for those who require basic file access, nothing more, nothing less.

That perspective on file systems is too limited: VCS repositories, archive files (zip/jar), and remote systems can be treated as file systems, potentially accessed via the same APIs used for local file access while still meeting security and data requirements. Or how about a file system that automatically transcodes videos to different formats or extracts audio metadata for vector searches? Wouldn't it be cool to use standard APIs rather than create something customized? Definitely!

12 Feb 2026 12:00pm GMT

11 Feb 2026

feedDZone Java Zone

Jakarta EE 12 M2: Entering the Data Age of Enterprise Java

Every major Jakarta EE release tends to have a defining theme. Jakarta EE 11 was about modernization: a new baseline with Java 17, forward compatibility with Java 21, and a decisive cleanup of long-standing technical debt. Jakarta EE 12 builds directly on that momentum, but its direction is different. This release is less about removing the past and more about aligning the future.

Jakarta EE 12 is best understood as the Data Age of enterprise Java.

11 Feb 2026 8:00pm GMT

09 Feb 2026

feedDZone Java Zone

Next-Level Persistence in Jakarta EE: How We Got Here and Why It Matters

Enterprise Java persistence has never really been about APIs. It has always been about assumptions. Long before frameworks, annotations, or repositories entered the picture, the enterprise Java ecosystem was shaped by a single, dominant belief: persistence meant relational databases. That assumption influenced how applications were designed, how teams reasoned about data, and how the Java platform itself evolved.

This article is inspired by a presentation given by Arjan Tijms, director of OmniFish, titled "Next-level persistence in Jakarta EE: Jakarta Data and Jakarta NoSQL." Delivered in 2024, the talk offers a clear and pragmatic view of why Jakarta EE persistence needed to evolve, how Jakarta Data fits into the platform, and how it relates to Jakarta Persistence and Jakarta NoSQL. While the presentation provides the technical backbone, this article expands on the historical context and architectural motivations behind that evolution.

09 Feb 2026 2:00pm GMT