NimChimpsky NimChimpsky - 11 months ago 67
Java Question

Does JasperReports replace Apache POI (M$) and iText (PDFs)?

In the past I have created business documents in Java using the referenced libraries.

I have never used JasperReports, should I?

Does JasperReports allow easy creation of PDF and Excel files from Java?

Answer Source

Jasper can be a benefit in cases where your organization (or client):

  1. Cannot afford more robust solutions such as Crystal Reports (or Cognos, etc.)
  2. Requires highly customized / user-configurable ad-hoc reporting solutions that are very easy to integrate in your existing application (web-based or desktop based): Think "embedded" solutions.

I have built a completely dynamic, web-based ad hoc reporting solution using Jasper Reports as my backend report generator (internally Jasper uses Apache POI for XLS generation and iText for PDF generation). Would it have been possible with other reporting packages? I'm sure it would have, but integration would have been much more difficult (it would have required either communicating with a reporting server via web services, reading / streaming data from a report server, etc.) and one may not be able to achieve the same fine grained control over report generation. Its entirely possible Crystal Reports has a Java API (I've never used Crystal Reports), but I would be surprised if its as easy to deal with as Jasper from a Java perspective.

Jasper allowed me to build a pretty powerful embedded reporting solution: So its a "sexy" solution to developers like me. That's where one has to be careful. Solutions that are attractive to developers are not always the best for the end user. I do believe the other solutions are more efficient from a performance perspective and consequently can handle a much larger workload. When using Jasper, the work of properly dealing with performance (time, memory, and SQL query tuning), asynchronous reporting / scheduling, and document storage is completely left up to the developer.

So if you're performance constraints are not too rigid or your expected workload is reasonable (this is all relative, believe me I know), Jasper can be a great embedded solution. However if you have the money and resources (someone to do configuration, maintenance) to buy a more robust reporting solution because your performance requirements need it, explore other solutions.