06 May 2025

feedDZone Java Zone

How Clojure Shapes Teams and Products

Four episodes into our journey exploring real-world Clojure stories, fascinating patterns have emerged from our conversations with leaders at Quuppa, CodeScene, Catermonkey, and Griffin. While each company's domain is distinct - from indoor positioning technology to banking infrastructure - their experiences reveal compelling insights about how Clojure influences not just code but entire organizations.

Building Teams and Projects

The journey to adopting Clojure often begins with practical challenges. At Quuppa, they needed better ways to handle data serialization in their enterprise system. Catermonkey's Marten Sytema had already built a working product in Java but saw the potential for faster iteration with Clojure.

06 May 2025 5:00pm GMT

05 May 2025

feedDZone Java Zone

Recurrent Workflows With Cloud Native Dapr Jobs

We have been learning quite a lot about Dapr now.

These are some of my previous articles about Dapr Workflows and Dapr Conversation AI components. Today, we will discuss Jobs, another important building block of the Dapr ecosystem.

05 May 2025 6:00pm GMT

Java Virtual Threads and Scaling

Java Virtual Threads were introduced in JDK 19 as a preview feature as part of Project Loom, but they are fully supported starting from JDK 21 and beyond (JDK 24 includes further refinements).

Virtual threads primarily help developers by simplifying concurrent programming - eliminating the need to choose between synchronous and reactive models, and reducing the complexity of working with NIO (non-blocking I/O) APIs. They seamlessly translate traditionally blocking operations such as I/O calls, synchronization, and thread sleeping into efficient, non-blocking operations under the hood, while allowing developers to write code in a straightforward, blocking style.

05 May 2025 4:00pm GMT

01 May 2025

feedDZone Java Zone

Selenium Pagination Tutorial: How to Handle Page Navigation

As websites are becoming an integral part of the business, they must have a good UI that provides the best user experience and loads the content quickly.

Websites can be categorized into two types based on the categorisation of their content: paginated and infinite-scrolling websites. The paginated website divides the content of the website into different pages, allowing the user to access all the available content on the different pages of the website one by one seamlessly.

01 May 2025 3:00pm GMT

30 Apr 2025

feedDZone Java Zone

Java’s Next Act: Native Speed for a Cloud-Native World

Once the unshakable king of enterprise development, Java is now facing its most important existential moment since its creation. It's not that Java has failed; it's that the world around it has changed. And Java, with its traditional runtime model and heavyweight architecture, hasn't always kept up.

In a cloud-native world where agility, speed, and efficiency matter more than ever, traditional Java stacks often struggle. They're too slow to start, too heavy on memory, and too rigid for the ephemeral, elastic environments of today's infrastructure.

30 Apr 2025 2:00pm GMT

29 Apr 2025

feedDZone Java Zone

Understanding Java Signals

To tee off this presentation, consider a TodosList that contains Todo items. You wish to be able to react to the following events.

  1. In any Todoitem, when:
    • The title is changed
    • The completion status is toggled
  2. In the TodosList, when:
    • A new item is added
    • An existing item is removed

Diving In

Here is a basic representation of the respective domain classes:

29 Apr 2025 7:00pm GMT

28 Apr 2025

feedDZone Java Zone

How to Convert Between PDF and TIFF in Java

PDF and TIFF: Converting Between Document and Image in Java

We rarely encounter just one document format in enterprise applications. The longer a system has been in production, the more likely it is that file interoperability becomes a real concern. That's especially true for file types that sit at the intersection of document and image processing, like PDF and TIFF.

TIFF and PDF are both widely used in healthcare, insurance, and legal services (among other industries) where a premium is placed upon long-term file fidelity and visual accuracy. While PDF has a much wider range of use-cases, TIFF holds ground in archival contexts and systems that prefer image-based representations over embedded formatting.

28 Apr 2025 3:00pm GMT

25 Apr 2025

feedDZone Java Zone

Analyzing “java.lang.OutOfMemoryError: Failed to create a thread” Error

Understanding the Error

The OutOfMemoryError thrown appears not because of insufficient heap memory but due to the following reasons:

Excessive Thread Creation

If the application creates too many threads, it may reach a limit where no more threads can be created. In such cases, it is crucial to investigate the stack trace thrown with the error and reduce the number of thread creations at the application code level.

25 Apr 2025 3:00pm GMT

Java's Quiet Revolution: Thriving in the Serverless Kubernetes Era

Along with the rise of Kubernetes, there is another shift that is happening under the hood - the rise of serverless architecture, which is quietly rewriting the way we deploy and scale applications, with Java taking a lead. Java, which is usually associated with legacy code and monolithic enterprise applications, has been slowly but steadily evolving into a microservices architecture and is now evolving into a leaner, serverless-ready world.

With the availability of tools like Knative and frameworks like Quarkus, Java has been transforming from a heavyweight language into a zero-management, Kubernetes-ready ready. In this article, we will reflect on this promising transformation in Java and where it can take us in 2025 and beyond.

25 Apr 2025 1:00pm GMT

24 Apr 2025

feedDZone Java Zone

The Role of Functional Programming in Modern Software Development

Functional programming is one approach used in modern software development due to technological advancements. It enables developers to write code that is clean, efficient, and easy to maintain.

In addition, programming methods that are focused on pure functions, immutability, and declarative style make it easy for developers to create applications. This article analyzes the major principles of functional programming and their importance in modern software development.

24 Apr 2025 9:00pm GMT

Why Testing is a Long-Term Investment for Software Engineers

In the world of software engineering, we're constantly racing against the clock-deadlines, deployments, and decisions. In this rush, testing often gets sidelined. Some developers see it as optional, or something they'll "get to later." But that's a costly mistake. Because just like documentation, testing is a long-term investment-one that pays off in quality, safety, and peace of mind.

Testing is crucial. It's about ensuring quality, guaranteeing expected behavior, and enabling safe refactoring. Without tests, every change becomes a risk. With tests, change becomes an opportunity to improve.

24 Apr 2025 5:00pm GMT

21 Apr 2025

feedDZone Java Zone

Stateless vs Stateful Stream Processing With Kafka Streams and Apache Flink

In data-driven applications, the rise of stream processing has changed how we handle and act on data. While traditional databases, data lakes, and warehouses are effective for many batch-based use cases, they fall short in scenarios demanding low latency, scalability, and real-time decision-making.

This post explores the key concepts of stateless and stateful stream processing, using Kafka Streams and Apache Flink as examples. These principles apply to any stream processing engine, whether open-source or a cloud service.

21 Apr 2025 9:00pm GMT

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