eBook – Guide Spring Cloud – NPI EA (cat=Spring Cloud)
announcement - icon

Let's get started with a Microservice Architecture with Spring Cloud:

>> Join Pro and download the eBook

eBook – Mockito – NPI EA (tag = Mockito)
announcement - icon

Mocking is an essential part of unit testing, and the Mockito library makes it easy to write clean and intuitive unit tests for your Java code.

Get started with mocking and improve your application tests using our Mockito guide:

Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Reactive – NPI EA (cat=Reactive)
announcement - icon

Spring 5 added support for reactive programming with the Spring WebFlux module, which has been improved upon ever since. Get started with the Reactor project basics and reactive programming in Spring Boot:

>> Join Pro and download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Jackson – NPI EA (cat=Jackson)
announcement - icon

Do JSON right with Jackson

Download the E-book

eBook – HTTP Client – NPI EA (cat=Http Client-Side)
announcement - icon

Get the most out of the Apache HTTP Client

Download the E-book

eBook – Maven – NPI EA (cat = Maven)
announcement - icon

Get Started with Apache Maven:

Download the E-book

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

eBook – RwS – NPI EA (cat=Spring MVC)
announcement - icon

Building a REST API with Spring?

Download the E-book

Course – LS – NPI EA (cat=Jackson)
announcement - icon

Get started with Spring and Spring Boot, through the Learn Spring course:

>> LEARN SPRING
Course – RWSB – NPI EA (cat=REST)
announcement - icon

Explore Spring Boot 3 and Spring 6 in-depth through building a full REST API with the framework:

>> The New “REST With Spring Boot”

Course – LSS – NPI EA (cat=Spring Security)
announcement - icon

Yes, Spring Security can be complex, from the more advanced functionality within the Core to the deep OAuth support in the framework.

I built the security material as two full courses - Core and OAuth, to get practical with these more complex scenarios. We explore when and how to use each feature and code through it on the backing project.

You can explore the course here:

>> Learn Spring Security

Course – LSD – NPI EA (tag=Spring Data JPA)
announcement - icon

Spring Data JPA is a great way to handle the complexity of JPA with the powerful simplicity of Spring Boot.

Get started with Spring Data JPA through the guided reference course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (cat=Spring Boot)
announcement - icon

Refactor Java code safely — and automatically — with OpenRewrite.

Refactoring big codebases by hand is slow, risky, and easy to put off. That’s where OpenRewrite comes in. The open-source framework for large-scale, automated code transformations helps teams modernize safely and consistently.

Each month, the creators and maintainers of OpenRewrite at Moderne run live, hands-on training sessions — one for newcomers and one for experienced users. You’ll see how recipes work, how to apply them across projects, and how to modernize code with confidence.

Join the next session, bring your questions, and learn how to automate the kind of work that usually eats your sprint time.

Course – LJB – NPI EA (cat = Core Java)
announcement - icon

Code your way through and build up a solid, practical foundation of Java:

>> Learn Java Basics

1. Overview

When we talk about Reporting tools, a lot of software covers this area. However, most of them are full-fledged Business Intelligence platforms or Cloud services.

But, what happens if we just want to add some reporting features to our application as a library? We will review here some Java reporting tools well suited for this purpose.

We will mainly focus on these open-source tools:

In addition, we will briefly analyze the following commercial tools:

2. Designing Reports

Through this section, we’ll review how we can visually design reports and play with our data. Note we’ll be referring only to open-source tools in this part.

2.1. Visual Editors

All the three tools include a WYSIWIG editor with report previewing capabilities.

BIRT Report Designer and Jaspersoft Studio are tools built on Eclipse RCP. This is a good point for most of us Java developers, as we might be familiar with the Eclipse environment. Unlike those, Pentaho Report Designer has aged visually poorly.

Also, there is an additional interesting feature about Jaspersoft Studio: we can publish our reports directly on their Jasper Reports Server (the report management system).

2.2. Datasets

As with all reporting tools, we can retrieve datasets by querying a datasource (see below). Then, we can transform them into report fields, create computed fields, or use aggregation formulas.

Besides this, it’s interesting to compare how we can manage multiple datasets as we may need several of them if our data comes from different queries or even different datasources:

  • BIRT offers the easiest solution as we can have multiple datasets in the same report
  • With Jasper Reports and Pentaho, we need to create a separated subreport each time, which can be quite tricky

2.3. Charts and Visual Elements

All the tools provide simple elements like shapes and images, and also every chart flavor: lines, areas, pies, radar, ring, etc. All of them support cross-tabs too.

However, Jasper Reports provides the richest visual elements collection. It adds to the above list maps, sparklines, pyramids, and Gantt diagrams.

2.4. Styling Reports

Now, let’s compare the positioning and sizing of elements in the page:

  • All of the tools provide pixel-positioning
  • BIRT and Pentaho also provides HTML-like positioning (table, block, inline)
  • None of them supports CSS-like flexbox or grid system to control elements size

Also, when we have to manage multiple reports, we may want to share the same visual theme:

  • Jasper Reports provides theme files with XML-CSS syntax
  • BIRT can import CSS stylesheets into the design system
  • With Pentaho, we can only add CSS stylesheets in the page header. So it’s difficult to mix them with the internal design system

3. Rendering Reports

Now, that we’ve seen how to design reports, let’s compare how we can render them programmatically.

3.1. Installation

First, let’s note that all the tools have been designed to be easily embedded within a Java project.

To get started, you can have a look at our dedicated articles about BIRT and Jasper Reports. For Pentaho, there are free code samples.

Next, for each of these tools, we will connect the report engine to our application data.

3.2. Datasource

The first question we should ask is: how can we connect the report engine to our project datasource?

  • Jasper Reports: we simply add it as a parameter of the fillReport method
  • BIRT solution for this is a bit more complex: we should modify our report to set the datasource attributes as parameters
  • Pentaho has a big drawback here: unless we buy their PDI commercial software, we have to use a JNDI datasource, which is more difficult to set up

Speaking of datasources, which types are supported?

  • All three tools support the most common types: JDBC, JNDI, POJOs, CSV, XML and MongoDB
  • REST API is a requirement for modern projects, however, none of them support it natively
    • with BIRT, we should code a Groovy script
    • Jasper Reports requires an extra free plugin
    • with Pentaho, we should code a Groovy script or acquire the PDI commercial software
  • JSON files are supported natively by Jasper Reports and Pentaho, but BIRT will require an external Java parser library
  • We can find the complete comparison list in this matrix

3.3. Parameters and Runtime Customization

As we have connected our report to our datasource, let’s render some data!

The important thing now is how to retrieve our end-user data. To do this, we can pass parameters to the rendering method. These parameters should have been defined when we designed the report, not at runtime. But what can we do if, for example, our dataset is based on different queries depending on the end-user context?

With Pentaho and Jasper Reports, it is simply not possible to do that, as the report file is binary and there is no Java SDK to modify them. By comparison, BIRT reports are plain-XML files. Moreover, we can use a Java API to modify them, so it’s very easy to customize everything at runtime.

3.4. Output Formats and Javascript Clients

Thankfully, most of the common formats are supported by all the tools: HTML, PDF, Excel, CSV, plain text, and RTF. Nowadays, we may also ask how we can integrate the report result directly into our web pages. We will not mention the rough inclusion of a PDF visualizer though.

  • The best solution is to use Javascript clients to render reports directly into an HTML element. For BIRT, the Javascript client is Actuate JSAPI and for Jasper Reports, we should use JRIO.js
  • Pentaho does not provide anything but iFrame integration. This solution works but may have serious drawbacks

3.5. Standalone Rendering Tools

Besides integrating our report into a web page, we may also be interested in having an out-of-the-box rendering server. Each tool provides its own solution:

  • BIRT Viewer is a lightweight web application sample to execute BIRT reports on-demand. It’s open-source but does not include report management features
  • for Pentaho and Jasper Report, there are only commercial software packages

4. Projects Status and Activity

First, a word about licenses. BIRT is under EPL, Jasper Reports under LGPLv3, and Pentaho under LGPLv2.1. Thus, we can embed all of these libraries into our own products, even if they are commercial.

Then, we can ask ourselves how these open source projects are maintained, and if the community is still active:

  • Jasper Reports has a well-maintained repository, with a stable medium activity by its editor TIBCO Software
  • BIRT repository remains maintained, but its activity is very low since 2015 when OpenText acquired its editor Actuate
  • Similarly, Pentaho repository activity is very low since Hitachi-Vantara acquisition in 2015

We can confirm this using Stackoverflow trends. The lowest popularity is for BIRT and Pentaho, but is moderate for Jasper Reports.

All three Java reporting tools have decreased in popularity in the past 5 years although remain stable for now. We can explain this by the emergence of the Cloud and Javascript offers.

5. Commercial Java Reporting Tools

Besides the open-source solutions, there are also some commercial options available that are worth mentioning.

5.1. Logi Report (formerly JReport)

Like Fine Report, Logi Report has been designed to be executed as a standalone server, but we can integrate it as part of our existing WAR project. Thus, we will face the same limitation as with Fine Report: we can’t generate reports programmatically.

Unlike Fine Report. however, Logi Report supports almost all servlet containers and  Java 8 to 13.

5.2. ReportMill Reporting

Finally, ReportMill is worth mentioning because we can embed it smoothly into every Java application. Also, like BIRT, it’s very flexible: we can customize reports at runtime as they are plain XML files.

However, we can see right away that ReportMill has aged, and also has a poor set of features comparing to the other solutions.

6. Conclusion

In this article, we went through some of the most well known Java reporting tools and compared their features.

As a conclusion, we can pick one of these Java Reporting Tools depending on our requirements:

We’ll choose BIRT:

  • For a simple library to replace an existing home-made solution
  • For its greatest flexibility and high customization potential

We’ll choose Jasper Reports:

  • If we need a reporting library compatible with a full-fledged report management system
  • If we want to bet on the best long-term evolution and support

 

Baeldung Pro – NPI EA (cat = Baeldung)
announcement - icon

Baeldung Pro comes with both absolutely No-Ads as well as finally with Dark Mode, for a clean learning experience:

>> Explore a clean Baeldung

Once the early-adopter seats are all used, the price will go up and stay at $33/year.

eBook – HTTP Client – NPI EA (cat=HTTP Client-Side)
announcement - icon

The Apache HTTP Client is a very robust library, suitable for both simple and advanced use cases when testing HTTP endpoints. Check out our guide covering basic request and response handling, as well as security, cookies, timeouts, and more:

>> Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

Course – LS – NPI EA (cat=REST)

announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (tag=Refactoring)
announcement - icon

Modern Java teams move fast — but codebases don’t always keep up. Frameworks change, dependencies drift, and tech debt builds until it starts to drag on delivery. OpenRewrite was built to fix that: an open-source refactoring engine that automates repetitive code changes while keeping developer intent intact.

The monthly training series, led by the creators and maintainers of OpenRewrite at Moderne, walks through real-world migrations and modernization patterns. Whether you’re new to recipes or ready to write your own, you’ll learn practical ways to refactor safely and at scale.

If you’ve ever wished refactoring felt as natural — and as fast — as writing code, this is a good place to start.

Course – LS – NPI (cat=Java)
announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

eBook Jackson – NPI EA – 3 (cat = Jackson)