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.
06 May 2025
DZone 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
DZone 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
DZone 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
DZone 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
DZone 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.
- In any
Todo
item, when:- The title is changed
- The completion status is toggled
- 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
DZone 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
DZone 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
DZone 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.
24 Apr 2025 5:00pm GMT
21 Apr 2025
DZone 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
DZone 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
DZone 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