Apareceu a necessidade de desenvolvimento de alguns relatórios para o sistema que estou desenvolvendo, estou usando JSF2 + Primefaces + JPA (Hibernate) e então fiz um estudo acerca das opções disponíveis para o design de reports e cheguei a três nomes: BIRT, Jasper e Pentaho.
A primeira opção que tentei foi o Jasper, adianto que não tenho muito conhecimento e confesso que não gostei da ferramenta, já trabalhei com outras ferramentas para outras linguagens e tenho a impressão que eram mais “estáveis”, claro que repito isso possa ser apenas falta de conhecimento.
Posteriormente tentei o BIRT e agora estou tentando com o Pentaho e nenhuma das 3 realmente me agradou.
Gostaria de saber qual seria a melhor prática em termos de produtividade e estabilidade. Também por exemplo com o Jasper passagem de objeto ou conexão com o banco?
Por outro lado no sistema todo “relatórios” são exibidos em tela e o primefaces já dá a opção de Data Exporter, mas claro que essa opção gera um PDF “bruto” apenas com os dados da maneira que estão na tela, mas vi que muitas pessoas manipulam esse PDF ao invés de usar uma ferramenta como o Jasper.
Será que essa abordagem não vale mais a pena? Exibir sempre tudo em tela e dar a opção do usuário usar o Data Exporter do próprio Primefaces ao invés de ter arquivos de report no projeto?
Nos projetos aqui da empresa eu utilizo o iReport, a principio também tive esse dificuldade e falta de conhecimento até saber o grande poder dessa ferramenta, a utilização de certo métodos para a geração de relatório varia muito de projeto para projeto, com o iReport eu consigo montar o layout e trabalhar em cima dele todos meus dados, por exemplo, consigo fazer uma somatório de grupos e subgrupos passando uma lista para meu relatório, consigo fazer uma declaração mudando somente as variáveis necessárias, por exemplo, tenho 14 clientes e tenho que gerar a declaração para os 14, basta eu passar a lista com os 14 nomes e dados que ele ja me gera todas as 14 declarações, sou leigo ainda no assunto do Java, e caso eu esteja errado pode me corrigir, mas eu acredito que ao utilizar uma ferramente de “terceiro”, vc pode evitar muitas linhas de códigos, pois pode usufruir da inteligencia do próprio relatório. imagine se tivesse que fazer essa declaração do exemplo citado acima? o texto todo teria que ficar na sua aplicação ao invés de estar em um arquivo do iReport, a aplicação que te permite montar o relatório faz com que vc coloque mascaras nos dados, isso é um outro ponto em que ajuda bastante, assim vejo que existe em tudo seus pós e contras, mas como volto a ressaltar, isso depende muito da aplicação e do tipo de relatório que deseja fazer.
PS: citei o iReport pq e uma das ferramentas de relatório que eu tenho maior conhecimento.