I'm evaluating report engines for a Java desktop application. I need to print receipts, invoices and reports. I'm looking at Jasper Reports since it seem to be the most popular reporting engine in the Java world. What are the biggest drawbacks and disadvantages with using it in a small business system?
My last employer used Jasper and their reporting team had some headaches using their API. From what I can remember, they had some weird usages of static methods. Personally, I have never had to use it.
Recently they switched to Pentaho (http://www.pentaho.com/) which is what I am using for ETL. From what I hear, they are loving it for reporting.
The only problem I can think of is that the API is not well documented (javadoc). But in most cases the names and parameters of the methods are self-explanatory.
I've been using Jasper Reports for a while and I'm quite happy with it. I think some features are missing (conditional formatting, elements with dynamic sizes) but there are workarounds.
I always found sup-reports to be troublesome as they add an extra layer of complexity to your reports.
However once you understand them they become more manageable.
I've also seen memory issues as mentioned above when you are compiling the reports but has never been a major problem.
The reports are compiled to bytecode, which is good for performance, but if the reports are to be customized by the users, the java compiler must be supplied with your application; a JRE is not sufficient.
I developed Jasper report for a project once, and we had an issue then with the ASCII-Export functionality. Although the reports were designed with a monospaced font (Courier) and no different fontsizes, the Ascii-output would by far not match the screen output IF a field consisted of more than one line. Don't know if this is now fixed.
One problem is having the layout logic in code, so making a change to even simple stuff requires a coder. The upside is having the ability to code the report - pretty much any output requirement can be met.
One site I know of (in the education dept) was using Jasper and IReports to design the report layout, but hating it. I'm not sure what versions they were using (could have been old). Last I am aware of they were looking at XML Publisher and Docmosis to see if they would be any better for next gen projects.
I'm new with JasperReports, but have created a few reports now and here is my experience:
JRXML is very verbose. For a simple text-label all this code is needed:
<staticText> <reportElement x="180" y="0" width="200" height="20"/> <text><![CDATA[Hello World!]]></text> </staticText>
You still have to work with low-level coordinates. It would be better to able to use some kind of LayoutManager.
Jasper reports is not well documented. Its taking lot of time to understand which api to use for every task. But the sample provided by jasper reports is helpful in understanding. But examples for custom datasourceprovider is not available. so its difficult to understand the usage of custom datasource.