29 May 2025

feedDZone Java Zone

Monoliths, REST, and Spring Boot Sidecars: A Real Modernization Playbook

Forget the idea that modernization has to mean rewriting everything. The real work happens in the in-between, where REST meets SOAP, where sidecars live beside WAR files, and where code changes are political before they're technical.

Especially in high-stakes, compliance-bound environments like healthcare, government, and labor systems, modernization doesn't look like a revolution. It looks like a careful negotiation.

29 May 2025 5:00pm GMT

Introducing Graph Concepts in Java With Eclipse JNoSQL, Part 3: Understanding Janus

Graph databases are increasingly popular in modern applications because they can model complex relationships natively. Graphs provide a more natural representation of connected data from recommendation systems to fraud detection. Our previous articles explored graph databases broadly and delved into Neo4j. In this third part, we focus on JanusGraph, a scalable and distributed graph database.

Unlike Neo4j, JanusGraph supports multiple backends and leverages Apache TinkerPop, a graph computing framework that introduces a standard API and query language (Gremlin) for various databases. This abstraction makes JanusGraph a flexible choice for enterprise applications.

29 May 2025 2:00pm GMT

28 May 2025

feedDZone Java Zone

Introducing Graph Concepts in Java With Eclipse JNoSQL, Part 2: Understanding Neo4j

Graph databases have rapidly gained popularity in modern software architecture, as systems increasingly rely on relationships, recommendations, and connected data. From social media platforms and fraud detection systems to recommendation engines and knowledge graphs, graph databases offer a powerful way to model and traverse complex relationships that are hard to express efficiently in relational databases.

This second part of the series narrows the focus to Neo4j, the market's most prominent graph database engine. We'll explore its architecture, query language (Cypher), and see how Java developers can leverage Eclipse JNoSQL 1.1.8 to integrate it seamlessly into Java applications.

28 May 2025 9:00pm GMT

Simpler Data Transfer Objects With Java Records

In very general terms, data transfer objects (DTOs) are structures that allow packing data when information is exchanged among applications or processes. While business objects or even entities own both state and behavior, DTOs should have only state. I personally see them as the apparel that the domain, the application's "center of purity," puts on when engaging in interactions with the "exterior."

Java records, on the other hand, prove very useful when data-oriented structures are needed, as a lot of boilerplate code is removed.

28 May 2025 8:00pm GMT

How to Introduce a New API Quickly Using Micronaut

In the first two articles of this series (part 1 and part 2), I demonstrated how quickly an idea can become a reality using Spring Boot, the framework I have used for over 10 years to establish new services. I stepped out of my comfort zone in the last article (part 3) when I used Quarkus for the first time, which offered a really nice CLI to assist with the development process.

I would like to close out this short series with another framework that's new (to me), called Micronaut.

28 May 2025 11:00am GMT

27 May 2025

feedDZone Java Zone

Introducing Graph Concepts in Java With Eclipse JNoSQL

When we talk about databases today, we face a landscape of diversity. Gone are the days of a one-size-fits-all solution. We live in an era of polyglot persistence, where the guiding principle is to use the most appropriate data model for each use case. This article focuses on graph databases, their structure, practical applications, and how Java developers can leverage Eclipse JNoSQL and Jakarta Data to work seamlessly with them.

Graph databases enable richer and more natural modeling of connected data. Unlike traditional relational databases that require complex joins to represent relationships, graph databases make relationships first-class citizens. A graph model organizes data into vertices (nodes) and edges (relationships). Both vertices and edges can hold properties, and edges are directional, adding semantic meaning to how data points connect.

27 May 2025 3:00pm GMT

Using Java Stream Gatherers To Improve Stateful Operations

In the AngularPortfolioMgr project, the logic for calculating the percentage difference between stock quotes is a stateful operation, since it requires access to the previous quote.

With Java 24, Stream Gatherers are now finalized and offer a clean way to handle such stateful logic within the stream itself.

27 May 2025 1:00pm GMT

22 May 2025

feedDZone Java Zone

Chat With Your Knowledge Base: A Hands-On Java and LangChain4j Guide

Disclaimer: This article details an experimental project built for learning and demonstration purposes. The implementation described is not intended as a production-grade solution. Some parts of the code were generated using JetBrains' AI Agent, Junie.


Large language models (LLMs) like GPT-4, Llama, and Gemini have revolutionized how we interact with information. However, their knowledge is generally limited to the data they were trained on. What if you need an AI assistant that understands your specific domain knowledge - your company's internal documentation, product specs, or operational data from a complex system?

22 May 2025 1:00pm GMT

21 May 2025

feedDZone Java Zone

How to Merge HTML Documents in Java

Java developers are often handed the challenge of consolidating documents in efficient file processing workflows. With this prompt, HTML might not be the first document format that comes to mind - we might think of "file processing" as pertaining to robust, "business-y" formats like PDF or Excel first and foremost - but HTML's importance in many modern enterprise environments can't be understated. Whether it's a question of processing data pulled together from multiple online sources, piecing scraped web pages together, or consolidating custom web-based reports, programmatically combining and packaging HTML content is often highly relevant.

In this article, we'll take a closer look at what it means to merge HTML content programmatically, and we'll point out some of the specific challenges Java developers can expect to encounter in this endeavor. Towards the end, we'll touch on some open-source libraries and third-party APIs we can use to build HTML merging capabilities into a file processing workflow, carefully weighing the benefits of each approach.

21 May 2025 9:00pm GMT

Enforcing Architecture With ArchUnit in Java

You create a well-defined architecture, but how do you enforce this architecture in your code? Code reviews can be used, but wouldn't it be better to verify your architecture automatically? With ArchUnit you can define rules for your architecture by means of unit tests.

Introduction

The architecture of an application is described in the documentation. This can be a Word document, a PlantUML diagram, a DrawIO diagram, or whatever you like to use. The developers should follow this architecture when building the application.

21 May 2025 8:00pm GMT

How To Introduce a New API Quickly Using Quarkus and ChatGPT

My last two articles (part 1 and part 2) focused on getting to market quickly using Java. The only difference was the build automation tool that I used for each example. This time, I want to step outside of my comfort zone and try something a little different.

I read about how Quarkus is a Kubernetes-native Java framework designed for building fast, lightweight microservices. What's even better is that it is optimized for cloud environments, including features like fast startup times, low memory footprints, and support for both imperative and reactive programming models.

21 May 2025 4:00pm GMT

The Future of Java and AI: Coding in 2025

Expanding on the findings of "The State of Coding the Future with Java and AI" survey, this article focuses more on the unique perspective and potential for developers leveraging Quarkus for Java AI.

Software development is evolving rapidly, and Java remains a cornerstone for enterprise applications, especially as Artificial Intelligence (AI) reshapes the coding landscape. In 2025, Java developers are at the forefront of this transformation, harnessing AI tools and frameworks like Quarkus to build scalable, cloud-native, and intelligent applications.

21 May 2025 3:00pm GMT

20 May 2025

feedDZone Java Zone

Tired of Spring Overhead? Try Dropwizard for Your Next Java Microservice

Instead of a monolith, build your first Java microservice with Dropwizard.

Hello, my fellow programmers! I'm positive you do not want to read another complex article on how to build Java microservices. We are going to take a look at Dropwizard today. It is fairly convenient as it has everything loaded in it, i.e., Jetty, Jersey, Jackson, etc., and also provides you with the ability to set your business logic without the boilerplates.

20 May 2025 4:00pm GMT

16 May 2025

feedDZone Java Zone

Using Python Libraries in Java

Advantages and Disadvantages of Python and Java

Java and Python are among the most widely used languages in the world (see Figure 1 below).

Figure 1: Overview of programming languages from statista.com

Both languages have their strengths and weaknesses and are popular in different fields. Unlike other articles, such as those from Tom Radcliffe which analyzes which language is technically better implemented, this article focuses on presenting practical use cases with explicit examples. Let us check the following table that provides a brief overview, of which language is best suited for which field (✅ = advantage, and ❌ = disadvantage).

16 May 2025 10:00pm GMT

15 May 2025

feedDZone Java Zone

Designing a Java Connector for Software Integrations

IT systems need integration to achieve seamless data flow alongside enhanced operational efficiency. The expansion of businesses creates independent operational systems that restrict performance through object isolation and restrict time-sensitive information acquisition. The system's functions become oriented for better workflow coordination, which minimizes both repetition and creates unified operations.

The creation of such connections necessitates comprehensive knowledge about technical and business needs, which include format patterns along with protocol standards. Java provides robust libraries alongside outstanding frameworks that lead organizations to choose Java when building scalable, customized solutions. A strategically developed connector fulfills present requirements while enabling future technology adjustments, thus becoming a sustainable factor that supports successful IT system integration.

15 May 2025 5:00pm GMT

Memory Leak Due to Time-Taking finalize() Method

All objects in Java implicitly inherit from java.lang.Object. This class contains multiple methods, which can be overridden in the child class.

One such overridable method is finalize(). Before objects get garbage collected from memory, the JVM will execute the finalize(). So, if you need to close any resources that were opened in the class (like backend connections, Files…), it can be done in this method.

15 May 2025 2:00pm GMT