16 Apr 2025

feedDZone Java Zone

How Spring and Hibernate Simplify Web and Database Management

In modern software or website development processes, Java frameworks are widely used as they make it easy to build dynamic apps and websites. Moreover, in 2023, the value of the Java frameworks software market was USD 3,982.40 million. It is forecasted to reach USD 9,049.22 million by 2030. This proves the significance of using Java frameworks such as Grails, Google Web Toolkit (GWT), Quarkus, and the Hibernate and Spring frameworks.

But today, I am going to discuss the Spring and Hibernate frameworks since developers extensively utilize them. Throughout the article, I will help you understand what these two frameworks actually do, their best features, their flexibility, and much more.

16 Apr 2025 9:00pm GMT

Debugging Deadlocks Using Java Synchronization Aids

One of the most famous deadlocks is the one encountered in the well-known problem of the 'dining philosophers.' Briefly, it is said that 'n' philosophers sit at a round table aiming for Chinese food.

On the table, there are 'n' chopsticks, one between every two philosophers. As the venue is a pleasant and productive one, they are not only eating but also thinking, alternating between the two. In order to be able to eat, each needs to acquire two chopsticks first, eat, then put them back on the table and get back to thinking. Without getting into further details, one can easily observe that in the situation where each philosopher grabs the chopstick to his right and then waits for the one on the left without realizing the former, the deadlock appears.

16 Apr 2025 5:30pm GMT

Java 23 Features: A Deep Dive Into the Newest Enhancements

As Java continues to evolve, each new release aims to introduce features that improve the language's performance, usability, and flexibility. By adopting this release, you can stay ahead of the curve and prepare for when these features become stable in future LTS versions.

In this article, I will give you a quick overview of significant changes in Java 23, focusing on the most notable JEPs (JDK Enhancement Proposals). Those interested in previous changes can check out my earlier article on Java 21 features, and you can also read Dariusz Wawer's older piece with a detailed description of Java 17 features (along with a comparison to Java 8).

16 Apr 2025 11:00am GMT

14 Apr 2025

feedDZone Java Zone

Introducing SmallRye LLM: Injecting Langchain4J AI Services

If you're a Java developer wanting to build AI agents or interface with various large language models (LLM) in Java, you will be familiar with Langchain4J.

What Is Langchain4J Simplified?

LangChain4J is essentially a toolbox for Java developers that makes it easier to add advanced language AI capabilities (like chatbots or text generators) to their applications, without having to deal with a ton of complicated details.

14 Apr 2025 12:00pm GMT

10 Apr 2025

feedDZone Java Zone

Java UDFs and Stored Procedures for Data Engineers: A Hands-On Guide

Java has long been the backbone of enterprise applications, but its role in data engineering is growing rapidly. Today, modern data platforms like Snowflake are giving Java developers first-class support to write powerful, flexible, and scalable data logic directly inside the database environment.

This guide demonstrates how Java developers can leverage familiar tools - like classes, streams, and DataFrames - to build user-defined functions (UDFs) and stored procedures for real-time and batch data processing. By writing this logic in Java, you can encapsulate business rules, perform asynchronous operations, interact with structured or unstructured data, and maintain robust, reusable codebases within your data workflows.

10 Apr 2025 3:30pm GMT

08 Apr 2025

feedDZone Java Zone

Understanding Structured Concurrency in Java

Typically, complexity in programming is managed by breaking down tasks into subtasks. These subtasks can then be executed concurrently.

Since Java 5, ExecutorService API helps the programmer execute these subtasks concurrently. However, given the nature of concurrent execution, each subtask could fail or succeed independently with no implicit communication between them. The failure of one subtask does not automatically cancel the other subtasks. Although an attempt can be made to manage this cancellation manually via external handling, it's quite tricky to get it right - especially when a large number of subtasks are involved.

08 Apr 2025 5:30pm GMT

04 Apr 2025

feedDZone Java Zone

Fixing OutOfMemoryErrors in Java Applications

In one of my earlier posts, we discussed how to best find memory leaks and the reasons behind them. It's best to use a focused and modern tool like HeapHero to detect OutOfMemory errors and many other performance bottlenecks, as it can pinpoint the real culprits and suggest ways to optimize the usage of computing resources.


Above, you can see that there are a few thousand objects of byte[], String, int[], etc.

04 Apr 2025 10:30pm GMT

03 Apr 2025

feedDZone Java Zone

How to Create Dialog Boxes in Java

Dialog boxes are graphical components that are usually used to display errors or give some other information (e.g., request input) to the user. They are commonly part of the three top-level containers that each Java graphical user interface (GUI) application must have as a root. Dialogs are typically associated with a parent frame. Their dependence on frames means that when you close a frame, all its associated dialog boxes also close. However, note that minimizing (iconifying) a frame does not automatically minimize its dialogs in modern Java implementations.

This Java programming tutorial introduces developers to creating and working with dialog boxes in Java GUI applications.

03 Apr 2025 7:45pm GMT

Injecting Implementations With Jakarta CDI Using Polymorphism

When building extensible and maintainable Java applications, a key challenge is choosing the right implementation of an interface without violating the Open/Closed Principle - that is, without modifying existing code whenever a new behavior is added.

In this tutorial, you'll learn how to inject implementations using Jakarta CDI dynamically. We'll use a simple and relatable sample (inspired by musical instruments) to illustrate polymorphism, custom qualifiers, and dynamic resolution with Instance<T>, enabling your code to be both flexible and robust.

03 Apr 2025 5:00pm GMT

01 Apr 2025

feedDZone Java Zone

How to Build a New API Quickly Using Spring Boot and Maven

In my last post, I wrote about how quick and easy it is to turn an idea into reality. I built a Spring Boot API service using Gradle as my build management tool and then deployed it to Heroku.

But what about my readers who have Maven in their toolchain?

01 Apr 2025 7:30pm GMT

31 Mar 2025

feedDZone Java Zone

From Ruby on Rails to Spring Boot

Like Rails, Spring Boot also follows Convention over Configuration principles. The goal of this tutorial is to focus on the similarities and differences between both frameworks to provide a quick guide for developers who are migrating from one to another.

Prerequisite

Maven instalation

On Ubuntu

Shell
sudo apt update
sudo apt install maven


31 Mar 2025 8:00pm GMT

28 Mar 2025

feedDZone Java Zone

Real-World Garbage Collection Scenarios and Solutions

If you're experiencing Java performance problems, where do you start looking for solutions? Is GC tuning really worthwhile? How do you analyze the GC logs to identify and fix bottlenecks?

This article looks at some real-life success stories, where organizations were able to achieve dramatic performance gains simply by tweaking GC.

28 Mar 2025 4:00pm GMT

27 Mar 2025

feedDZone Java Zone

Using Heap Dumps to Find Memory Leaks

A JVM (Java Virtual Machine) runs programs in Java and many other languages and provides the runtime environment, CPU, memory, and security management. At any particular moment, the running JVM has many objects, and a heap dump is a snapshot of the memory allocated to all these objects.

In this post, we will discuss how to use heap dumps to find memory leaks.

27 Mar 2025 7:00pm GMT

26 Mar 2025

feedDZone Java Zone

Jakarta NoSQL 1.0: A Way To Bring Java and NoSQL Together

NoSQL is no longer the exception - it's a key part of modern data architectures. With the release of Jakarta NoSQL 1.0, Java developers finally gain a standardized, extensible way to interact with NoSQL databases across document, key-value, column, and graph data models - all while staying aligned with Jakarta EE principles.

This article introduces the Jakarta NoSQL 1.0 specification, which boosts productivity, simplifies mapping, and provides fluent, type-safe access to NoSQL data.

26 Mar 2025 5:00pm GMT

25 Mar 2025

feedDZone Java Zone

A Systematic Approach for Java Software Upgrades

The amount of business logic embedded in the form of code in software systems is so huge and valuable that you don't always need to think in terms of replacing them with entirely new systems. Rather, software systems should facilitate evolution both in terms of functionality and in terms of technological upgrades.

This is truer in transactional systems, especially in domains including, but not limited to, finance, travel, transportation, logistics (TTL), and e-commerce. While much literature has been written about how to manage functional changes in software applications, technology upgrades are non-trivial, and many times, developers are left out to try and test their own intuition.

25 Mar 2025 9:15pm GMT

Java Reborn: Conquering Cloud-Native and Next-Gen Concurrency

Although Java has been around for long time, the future looks exciting. Historically being the go to language for building enterprise applications, the language has grown to match the speed of development of the cloud development technology.

In this article, we take a closer look as to how Java keeps on evolving with focus on cloud native designs, improving concurrency, microservices architecture, and new initiatives that promise to change the way Java is seen and used.

25 Mar 2025 7:30pm GMT