Today, TIBCO announced the release of JasperReports IO—a lightweight engine deliberately designed to do one thing: generate reports and data visualizations. At first glance, this seems unimpressive. Engines for rendering data have been around for decades. But a closer look reveals that JasperReports IO has a hidden value that is only exposed in its architecture. To understand the attributes that make this architecture unique, we decided to consult an expert on the subject. Who better, we thought, than the Jaspersoft Founder and Chief Architect of JasperReports IO himself, Teodor Danciu.

SS: In your own words, what is JasperReports IO?

TD: JasperReports IO is a service that combines several reporting and data visualization capabilities that we’ve built on for many years at TIBCO Jaspersoft. Its core functionality was available as a Java API or through our JasperReports Server flagship product, but we wanted to make it more lightweight and accessible to non-Java developers. And also make it better suited for deploying in containerized environments. So we came up with this RESTful service which is focused entirely on: reporting and data visualization.

With this service, we are able to create any kind of report or visualization using virtually any format of data, and we’re building on our successful JasperReports Library open source project.

SS: What are the use cases for JasperReports IO?

TD: There are two main use cases:

One is for so-called operational reporting in which there is this need for generating static documents in the form of PDF files, excel files, word documents. These are usually generated in batch mode, during long-running jobs overnight, and are characterized by high volumes of reports that are generated. They are often archived or distributed via email, through web portals, or even as printed documents.

The other major use case is embedding interactive visualizations into existing applications. Embedding interactive charts or crosstabs or tables, or putting together dashboards which respond to user interaction—and it’s about leveraging our JavaScript API to do so. Our product comes with a powerful and flexible JavaScript API that uses technology from our award-winning JavaScript framework, Visualize.js. This enables creating interactive viewers and controlling visualization output from within the parent application using just a few lines of JavaScript.

SS: How exactly does it work? Can you describe the process of generating a report or visualization with JasperReports IO?

TD: The engine behind JasperReports IO uses report and visualization templates that can be mixed with data to produce output. We can produce almost any kind of output, no matter how complex. That is thanks to our very powerful and flexible design tool, Jaspersoft Studio, which enables you to create report and visualization templates in a ‘what-you-see-is-what-you-get’ manner.

Once we connect to data and design a report or visualization, we produce an in-memory definition of it that we keep in a proprietary format. We can then export the report or visualization to other popular formats such as PDF, HTML, Excel, JSON, and others.

So to summarize the way it works, we mix a template with data, we produce definitions of the output in a proprietary format, and from there we can go to other formats suited for consuming reports or interactive visualizations. This is how it works.

The fact that we’re using a very flexible data visualization and reporting engine, such as JasperReports Library, allows us to customize our output, customize the way we access data, customize the way we process data, and we have many extension points that users can contribute custom code to.

SS: JasperReports IO is based on JasperReports Library, a popular Java reporting engine that you created. What was the most difficult part of architecting a service like JasperReports IO while leveraging what you had already built with JasperReports Library—either from a conceptual or technical perspective?

TD: While architecting JasperReports IO, we tried to make it better suited for containerized deployments. We tried to separate the different types of processes that are involved when working with JasperReports Library and generating reports and visualizations.

On one hand, we have the retrieval of data mixing with the layout to produce the in-memory document—which we call ‘report filling‘. That’s one part of the process.

And then, we have exporting which is about taking that in-memory document to produce visible outputs in the form of HTML, PDF, and other formats.

So with JasperReports IO, we tried to separate the two so that they could be scaled differently knowing that report and visualization filling is more CPU intensive and consumes more resources. We tried to separate these from exporting which is oftentimes cheaper and faster. The real benefit of this distributed architecture is that JasperReports IO is a natural fit for container-based deployments and DevOps pipelines. The first distribution of JasperReports IO ships with a Dockerfile making it easy to deploy in a Docker container, integrate into DevOps pipelines, and take advantage of the agility and efficiency benefits that come with DevOps.

We also tried to architect the service to provide interactivity when viewing the reports and visualizations. That means we had to think about scalability and leverage new technologies like replicated caches and queues—we’re not generating reports and visualizations directly, we’re putting them in queues, so that we enable more workers to participate in the workload. All of this was about taking the JasperReports Java Library and putting it into a framework where it can scale, be prepared for deployments in containers, and be split into specialized services that work together to deliver the output.

SS: What is JasperReports IO Professional and what’s next for JasperReports IO?

TD: JasperReports IO Professional is the first release of JasperReports IO. With this edition, we tried to put the service inside of a package that is easy to get started with and is useful for small-scale deployments. What we want to do next is to build on scalability and come up with a version that is suited for cloud deployments where the workload is delivered by many workers that are orchestrated in a containerized environment. In that distribution, we are able to scale different services in JasperReports IO depending on the amount of resources they require, with report and visualization filling being a higher demand than exporting or the containers that expose the REST API.

We are planning to have an enterprise release of JasperReports IO which is suitable for deployment in the cloud at unlimited scale.

JasperReports IO is comprised of several editions that will be released over the coming months. Available today is the first edition—JasperReports IO Professional—which is free to try through the end of the year. Beginning January 1st, it will be offered at competitive cloud pricing through TIBCO or for pennies per hour through the AWS Marketplace product listing.

Contact iZeno to learn more about JasperReports.