JasperReports is a free Java reporting library. XML report templates are used to generate ready to print documents using data from customizable data sources, including JDBC. The output can be delivered to the screen, printer, or stored in PDF, HTML, XLS, CSV and XML format.
JasperReports is an open source embedded operational reporting library that is designed to create page-oriented, ready-to-print documents in a simple and flexible manner. JasperReports has the ability to deliver rich content to the screen, to a printer, or to PDF, HTML, XLS, CSV, and XML files.
JasperReports gives users meaningful access to operational and application data. I’ve been a software developer for 20 years, and I have yet to meet an application developer who enjoyed adding reports to their apps. Yet every app needs reporting — it’s how you show what the application does, and how you let people make decisions based on the information that the application collects.
Historically, most applications have not had good reporting, leaving the job to an external reporting tool, such as Crystal. Reporting that’s separate from the application is confusing to users. Why do I have to launch this other tool? Why is the UI different? Where did that window go?
Seamlessly embeddable – Full programmatic library API enables seamless embedding into other applications. No separate reporting server is required.
Standards-based – Pure Java application that uses only non-proprietary open and de facto standards such as XML for report definitions, and HTML and PDF for report output.
Flexible data access – Access data anywhere, including RDBMSes, EJBs, Hibernate, POJOs, and XML data sources.
Flexible output options – Swing- and Eclipse-based report viewers, and options to output to HTML, PDF, XLS, XML, and CSV.
Complex reports – Easily handles the toughest report requirements, including pixel-perfect layouts, bitmap and vector graphics, static and dynamic text elements, subreports, and complex calculations.
Fully internationalized and localizable – Support for multi-language Unicode or native encoded data, and dynamic localized text substitution and data formatting.
Extensible – Handles custom requirements such as calculations, event handling, report properties, and programmatic creation and modification of ad-hoc report designs.
- Operating system: OS-independent
- Language: Java
- License: LGPL
Why and how did you get started?
Teodor: Almost four years ago I was searching for a reporting tool to use inside a Java project. At that time there were not many Java reporting tools, and those I could find were expensive. I thought building a reporting tool from scratch using Java should not be too difficult. I started thinking about initial requirements and anticipating technical challenges, and in a couple of weeks I start coding. After about two months I decided to register the project at Sourceforge.net, giving a short description but not releasing any files. In just a few days I received messages telling me that people were ready to try out my software, and I decided to publish. After that things just took off.
Barry: I’m a recent addition to the JasperReports project. I was working at a commercial reporting vendor, working on a reporting server that focused on flow-based (i.e. Web) layouts of reports. Some of our customers wanted a page-based report design as well, so I started investigating open source libraries to add to our server. The more I looked into JasperReports, the more impressed I became. I eventually started working with Teodor, and now we are both part of JasperSoft.
What is the software’s intended audience?
JasperReports is a developer tool for adding reporting functionality to Java applications simply. It is a content-rendering library that cannot run on its own and has to be embedded in other applications. It is completely agnostic about the environment where it runs, and it can generate complex documents using any data that the parent application can supply.
How many people do you believe are using your software?
Our estimates, based on the number of downloads, number of messages on the forums, Web site hits, and other things indicate that there are approximately 10,000 active installations of the product in more than 50 countries.
What are a couple of notable examples of how people are using yoursoftware?
Teodor: We recently took a survey in order to learn more about the community around the project and to see how the product is been used. The results of this survey show that JasperReports is used mostly inside J2EE applications to render financial and other types of reports that are critical to the overall application.
Barry: At the recent JBoss World conference in Atlanta I spoke with a JBoss employee who was using JasperReports as part of a management tool that he had written for use at JBoss. In that application JasperReports was formatting reports on usage statistics of the applications hosted inside of a JBoss cluster.
What gave you an indication that your project was becoming successful?
Teodor: The feedback received from the users within the first months after I registered it at SourceForge.net, and the fact that the activity statistics at SF were always on an ascending path, were a clear indication that the project has potential and interest in this type of product was significant to drive adoption.
Barry: The rapid growth in the number of questions in the SourceForge.net forums was a key sign. The types of questions people asked showed that people were doing more than just kicking the tires but were actually embedding JasperReports inside of their applications.
What has been your biggest surprise?
Teodor: My biggest surprise was to see that in a relatively short time the project proved useful to so many people around the world. It was a tremendous incentive to work more and improve the product as more feedback from the community came back and helped me direct development towards implementing features that were not initially planned but made the product even more appealing.
Barry: As a latecomer to the project, my biggest surprise is the sense of loyalty we get from the JasperReports community. A lot of people adopted JasperReports early on and have become advocates of the project. I expected people to like it, embed it, and forget it was in their project.
What has been your biggest challenge?
Teodor: The existing code base suffered at least three major refactoring phases. The biggest challenge was to refactor the engine to support subreports, which represented a big step forward during the first year of development.
Barry: Prioritizing feature requests. The JasperReports community has been a great source of ideas for the project, and figuring out which features to add when has been a challenge.
Why do you think your project has been so well-received?
Teodor: It helps bring reporting functionality in a wide range of Java applications. Because it can do almost everything that a commercial application of the same kind can do, but at a fraction of the cost, it made perfect sense for many people to try it and see how well it suits their needs.
Barry: Teodor did a great job getting the original feature set and architecture right. JasperReports has all the core reporting features people need, all the major output formats, and is extensible. People can easily modify it to use any data source. Most important of all was that Teodor kept things simple.
Where do you see your project going?
Barry: JasperReports will always stay focused on reporting. We will continue to add reporting features that our users want, such as tighter integration with JFreeCharts and crosstab reports. I’m working with some other open source projects to encourage them to include JasperReports inside their projects (both applications and infrastructure projects). I’d love to see JasperReports become the standard for embedded reporting in Java applications.
I think JasperReports has just entered the second phase of its existence. Up until recently it was primarily a one-person project, and Teodor wasn’t working full-time on it. We now have more contributers and people who can work on it full-time. I think the user community can expect to see larger features added than were possible up until now.
What’s on your project wish list?
Teodor: Right now we are adding built-in support for charts. JasperReports does not render charts itself but rather relies on other open source projects that specialize in this. Users can put charts on their reports relatively easily today, but we intend to offer a chart component that would be easy to configure using the UI tools and would not require developers to make API calls directly to a charting library. This feature will be available later this summer. After that, in a few months, we are planning to introduce support for crosstab reports, a feature that was requested by the community.
Barry: We also are hearing interest in adding some interactivity to JasperReports, so we are discussing that too.
What are you most proud of?
Teodor: I’m proud that my long nights and weekends spent working on the project eventually paid off and that JasperReports has received the recognition I dreamed of when starting the whole thing.
If you could change something about the project, what would it be?
Teodor: I would not change anything — it’s great!
Barry: Nothing major comes to mind. If I were going to change anything, it would be the inclusion of better JavaDocs.
How do you coordinate the project?
Teodor: Until recently I was the main developer on the project, so coordination meant mostly coordinating what I was doing myself. Occasionally patches or other kind of contributions were included in the main version, but that was also a job for me. Now the JasperReports development team is growing, since we are now in what I consider the second phase of the project. We formed a new company called JasperSoft to invest in JasperReports and offer support, services, and complementary commercial products for JasperReports. I will be joining JasperSoft as founder and architect for JasperReports. This will allow me to work full-time on JasperReports enhancements, and direct a new team of professional open source developers to accelerate the JasperReports roadmap. We are going to continue using the tracking system and the working environment that SourceForge.net offers to coordinate our activity.
Do you work on the project full-time, or do you have another job?
Teodor: Since the first of the year, I’ve been working full-time on the JasperReports project. Before that I had a day job and working on open source software was more like a hobby.
Barry: I work at JasperSoft full-time (I’m the CTO), but not all that time is on JasperReports. I also work on the commercial product, JasperDecisions.
What is your development environment like?
Barry: I develop on a PowerBook G4, running Mac OS X 10.3.x. Its an older Titanium model, 1GHz G4 processor, 1GB RAM. I use Eclipse for all of my development and debugging work, using Apple’s JDK 1.4.
How can others contribute?
Barry: We are always happy to accept contributions. Right now the main way to join is to post a patch to SourceForge.net. We will be accepting folks who provide patches as full contributers in the future, and we are working on figuring out what the guidelines for joining will be. As soon as we finish them we will post them to the site.