Artigo no estilo: Curso
Por que eu devo ler este artigo: Segundo estudos elaborados pela IDC, uma empresa de consultoria para indústrias de TI, a quantidade de informação dobra a cada dois anos no mundo e com esse crescimento, os sistemas são submetidos a processar quantidades cada vez maiores de dados. Para lidar com essa questão, foram criadas diversas tecnologias/técnicas focadas no aumento da eficiência do gerenciamento de memória. Com base nisso, abordaremos neste artigo algumas dessas técnicas, como a virtualização e a paginação da memória heap em aplicações escritas em Java, com ênfase na geração de relatórios que acessam grandes quantidades de dados. Dessa forma o leitor terá uma referência do que fazer ao se deparar com situações semelhantes.

A tomada de decisões nas empresas de hoje está completamente atrelada à disponibilização de relatórios por seus sistemas. No entanto, como a linguagem Java não possui suporte nativo a tal recurso, precisamos de mecanismos externos que supram essa carência.

Surgiu assim o JasperReports, uma biblioteca open source escrita em Java focada exatamente na simplificação da construção de relatórios para aplicações desenvolvidas com a mesma linguagem. Apesar de seu sucesso hoje em dia, as primeiras versões do JasperReports eram bastante improdutivas, pois exigiam o domínio do seu DTD (Document Type Definition), um documento descritor XML utilizado pelo JasperReports para gerar os relatórios. O desenvolvedor tinha que escrever seu código num editor de textos qualquer, pois não existia uma ferramenta que abstraísse esse trabalho. Na Listagem 1 apresentamos um exemplo de como declarar um label no DTD. Como pode ser observado, não é nada trivial e de fácil leitura.

Listagem 1. Exemplo de código do arquivo DTD.


  01 <staticText>
  02  <reportElement x="0" y="0" width="117" height="35"/>
  03  <box leftPadding="2"/>
  04  <textElement verticalAlignment="Middle">
  05    <font isBold="true"/>
  06  </textElement>
  07  <text><![CDATA[Descrição]]></text>
  08 </staticText>

O intervalo entre as linhas 1 e 8 define um texto estático, um label. Na linha 2 os atributos x e y configuram as coordenadas do posicionamento do elemento no relatório e width e height definem sua área delimitadora. Em seguida, na linha 3, definimos a margem esquerda interna do texto dentro de sua região. Das linhas 4 a 6 especificamos a formatação do elemento de texto, que no caso será exibido em negrito. Finalmente, na linha 7 adicionamos o conteúdo que será apresentado no relatório, pela label: o texto “Descrição”.

Constatada essa dificuldade, o iReport foi criado. Como já esperado, seu objetivo é facilitar o desenvolvimento de relatórios, tornando transparente o conhecimento sobre como estruturar o arquivo DTD, o que se dá com a automatização do processo de escrita desse arquivo.

Com o iReport podemos projetar relatórios através de uma interface gráfica que disponibiliza diversas opções para criar layouts complexos e de maneira simples. Esta ferramenta possibilita também utilizar recursos avançados do JasperReports que podem auxiliar em situações específicas como, por exemplo, a virtualização da memória heap, que permite fazer swap em disco. Esta técnica faz com que pequenas porções da memória heap sejam escritas diretamente no disco, tornando possível seu gerenciamento. A virtualização é recomendada quando processamos uma grande quantidade de informações e temos pouca memória heap disponível, o que pode ocasionar erros do tipo OutOfMemoryException.

Outro recurso muito interessante que pode ser implementado com o auxílio do JasperReports e que ajuda no gerenciamento da memória é a paginação. No entanto, a paginação não é um recurso nativo desta biblioteca, tendo que ser implementada à parte. Veremos como fazer isso mais adiante.

Uma vez que o nosso foco será a demonstração de recursos mais avançados do iReport e do JasperReports, este artigo pressupõe que o leitor já tenha noções básicas destas ferramentas. Caso queira adquirir tais conhecimentos, recomendamos a leitura do artigo “Gerando Relatórios com JasperReports”, publicado na Edição 19 da Easy Java Magazine.

Dito ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora