Artigo Java Magazine 13 - Relatórios Corporativos

Artigo publicado pela Java Magazine 13.

Esse artigo faz parte da revista Java Magazine edição 13. Clique aqui para ler todos os artigos desta edição.

Clique aqui para ler esse artigo em PDF.

Relatórios Corporativos

Com JasperReports e iReport

 Desenvolvedores de sistemas de informação empresariais habitu­aram-se a contar com geradores de relatórios visuais em seus ambientes de desenvolvimento RAD, desde que o Visual Basic 3 incorporou uma versão re­duzida do Crystal Reports. O Java 2 SDK e alguns IDEs populares como o Eclipse e o NetBeans ainda não incluem ferramentas do gênero, de modo que muitos desenvol­vedores acreditam – erroneamente – que este tipo de facilidade não está disponível em Java.

 

  Parte do problema vem do fato da maio­ria dos geradores de relatórios populares serem aplicações independentes escritas em C, em muitos dos casos suportando apenas a plataforma Windows. São por­tanto incompatíveis com o objetivo de portabilidade do Java. Outra parte vem do fato da maioria desses geradores estarem disponíveis para aquisição em separado e, por meio de chamadas a JNI ou requisições HTTP, poderem ser utilizados como parte de qualquer sistema, independentemente da linguagem de programação na qual foram escritos – eliminando assim a ne­cessidade de se criar versões dos produtos específicas para o desenvolvimento Java.

 

  Mas isto não quer dizer que não existam geradores de relatórios escritos em Java. Na verdade, existem muitos, inclusive vários premiados por publicações especializadas. Utilizar um gerador escrito em Java tem muitas vantagens além da porta­bilidade, por exemplo, usar como fonte de dados coleções de objetos Java recuperadas via EJBs, Hibernate, JAXB ou web services. Geradores escritos em outras linguagens necessitarão acesso direto ao banco de dados, e não poderá interagir de forma fácil com objetos Java.

Existem várias opções de geradores de relatórios livres em Java, capazes de aten­der à maioria dos desenvolvedores (veja o quadro “Mais alternativo livres”).

 

  Neste artigo serão vistas duas ferramentas que se complementam mutuamente: o Jasper­Reports e o iReport.

Não se assuste com a numeração de versão destes dois programas (ambos 0.x), pois um software livre atinge a versão 1.0 apenas quando implementa, de forma confiável, todo o conjunto de features “sonhadas” pelo autor ao iniciar o projeto. Muitas versões 0.x de software livre estão tão ricas e maduras quanto versões 5.x de softwares proprietários, onde a numeração de versões segue mais critérios comerciais do que tecnológicos.

Desenhando ou gerando relatórios

O JasperReports é um engine para a geração de relatórios, escrito inteiramente em Java, que recebe como entrada uma descrição estruturada do relatório na for­ma de um documento XML, e gera a saída diretamente na impressora (incluindo uma pré-visualização baseada em Swing), ou como um documento PDF, HTML, XLS ou CSV. Já o iReport é um “desenhador” visual de relatórios, também escrito em Java, que gera descrições XML no formato esperado pelo JasperReports. O quadro Desenhadores alternativos” cita outros softwares que poderiam ser utilizados em substituição ao iReport.

Seria possível gerar relatórios utilizando apenas o JasperReports – bastaria editar a descrição manualmente, de preferência com um editor especializado em XML. É fornecido inclusive o DTD que define o dialeto XML reconhecido pela ferramenta.

 

  Além disso, algumas empresas apreciarão a possibilidade de gerar relatórios para o JasperReports diretamente a partir de documentos XML, mediante transforma­ções XSL (não inclusas no JasperReports). Uma quantidade crescente de sistemas adota esta estratégia, em vez do design visual tradicional nas ferramentas RAD.
Por outro lado, se você prefere o modelo RAD tradicional, o iReport cumpre esta função, executando o JasperReports “por baixo dos panos”, e permitindo gerar relatórios sem necessidade de escrever código Java.

Instalação do iReport

Seguindo o caminho mais fácil, vamos iniciar pelo iReport (veja no quadro “Abandonando o lado negro” um pouco da sua história). Esta será uma exploração sem compromisso por alguns dos menus e diálogos do programa, dando uma idéia de suas capacidades e idiossincrasias, para que depois possamos apresentar com mais detalhes a estrutura de um relatório do JasperReports e seu uso programático.

 

  Baixe a versão mais recente do pacote iReport0.2.x.zip no site do programa (0.2.3 quando da escrita deste artigo) – mas não baixe o pacote iReport0.2.x_nolib.zip – e descompacte o pacote em um diretório à sua escolha. Cuidado, pois o pacote não fornece uma raiz comum para todos os arquivos inclusos (recomendo criar um diretório para agrupar os arquivos des­compactados).

 

  A distribuição do iReport inclui fontes, no diretório src, além dos bytecodes corres­pondentes no diretório classes, mas utiliza o Ant (na recente versão 1.6 ou posterior) para gerar o classpath necessário à exe­cução. Também deve estar disponível um JSDK e não apenas um JRE – o motivo será visto mais à frente.

O subdiretório noAnt fornece arquivos .sh e .bat apropriados para a execução do iReport em ambientes Linux e Windows,
sem que seja necessário instalar o Ant. Entretanto, usuários de Linux e outros sistemas Unix devem tomar cuidado, pois os scripts estão no formato Windows, com finais de linha CR+LF, e não serão aceitos pelo shell, a menos que sejam
convertidos para o formato Unix (com finais de linha LF).

 

  Assim sendo, entre no diretório criado para a descompactação do iReport, e execute ant iReport, ou, alternativamente, execute sh startup.sh (startup.bat no Windows) a partir do subdiretório noAnt para iniciar o iReport. Tanto os scripts na raiz de insta­lação do iReport quanto os no subdiretório noAnt podem ter que ser modificados para o ambiente do usuário.

Cuidado! Há uma série de pacotes JAR no subdiretório lib, como iText, POI, Xerces, o próprio JasperReports e várias bibliotecas do Jakarta Commons. Eles são necessários para a execução do iReport, mas tome cuidado pois, caso algum deles esteja também presente no classpath do seu sistema operacional, poderá haver conflitos de versão. Se isso acontecer, modifique os scripts de inicialização (iReport.bat/sh e startup.bat/sh) para configurar inicial­mente um classpath vazio, contendo apenas o pacote tools.jar do Java 2 SDK.

 

  No pacote ZIP baixado, todas as bibliote­cas necessárias já estão disponíveis, inclu­sive o JasperReports 0.5.2 e drivers JDBC para alguns bancos de dados livres. Caso deseje disponibilizar outros drivers, basta copiar os pacotes JAR correspondentes para o subdiretório db_drivers.

Nota: Em algumas plataformas (por exemplo, no Windows 98), os pacotes no subdiretório db_drivers podem não ser incorporados correta­mente ao classpath. Neste caso, copie os drivers JDBC desejados para o subdiretório lib.

Instalação do iReport

Seguindo o caminho mais fácil, vamos iniciar pelo iReport (veja no quadro “Abandonando o lado negro” um pouco da sua história). Esta será uma exploração sem compromisso por alguns dos menus e diálogos do programa, dando uma idéia de suas capacidades e idiossincrasias, para que depois possamos apresentar com mais detalhes a estrutura de um relatório do JasperReports e seu uso programático.

 

  Baixe a versão mais recente do pacote iReport0.2.x.zip no site do programa (0.2.3 quando da escrita deste artigo) – mas não baixe o pacote iReport0.2.x_nolib.zip – e descompacte o pacote em um diretório à sua escolha. Cuidado, pois o pacote não fornece uma raiz comum para todos os arquivos inclusos (recomendo criar um diretório para agrupar os arquivos des­compactados).

A distribuição do iReport inclui fontes, no diretório src, além dos bytecodes corres­pondentes no diretório classes, mas utiliza o Ant (na recente versão 1.6 ou posterior) para gerar o classpath necessário à exe­cução. Também deve estar disponível um JSDK e não apenas um JRE – o motivo será visto mais à frente.

 

  O subdiretório noAnt fornece arquivos .sh e .bat apropriados para a execução do iReport em ambientes Linux e Windows, sem que seja necessário instalar o Ant. Entretanto, usuários de Linux e outros sistemas Unix devem tomar cuidado, pois os scripts estão no formato Windows, com finais de linha CR+LF, e não serão aceitos pelo shell, a menos que sejam convertidos para o formato Unix (com finais de linha LF).

 

  Assim sendo, entre no diretório criado para a descompactação do iReport, e execute ant iReport, ou, alternativamente, execute sh startup.sh (startup.bat no Windows) a partir do subdiretório noAnt para iniciar o iReport. Tanto os scripts na raiz de insta­lação do iReport quanto os no subdiretório noAnt podem ter que ser modificados para o ambiente do usuário.

  Cuidado! Há uma série de pacotes JAR no subdiretório lib, como iText, POI, Xerces, o próprio JasperReports e várias bibliotecas do Jakarta Commons. Eles são necessários para a execução do iReport, mas tome cuidado pois, caso algum deles esteja também presente no classpath do seu sistema operacional, poderá haver conflitos de versão. Se isso acontecer, modifique os scripts de inicialização (iReport.bat/sh e startup.bat/sh) para configurar inicial­mente um classpath vazio, contendo apenas o pacote tools.jar do Java 2 SDK."

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados