ique aqui para ler esse artigo em PDF.
Jakarta Velocity
Acabe a briga com os designers
O uso de templates na camada de apresentação de aplicações web simplifica a manutenção
e a separação de responsabilidades.
Uma das áreas em que o desenvolvimento de aplicações web com Java mais encontra problemas é na separação entre a camada de controle, que faz as chamadas à lógica de negócio, e a camada de apresentação, onde é realizada a montagem da interface web.
Uma forma eficaz de fazer essa separação é usando sistemas de templates (template engines). O framework Jakarta Velocity do Grupo Apache é um dos mais populares desses sistemas, e pode ser usado tanto em aplicações web quanto locais.
Sistemas de templates
Pode-se fazer muito com um sistema de templates – desde a geração de simples arquivos-texto à criação de arquivos binários, tudo o que siga um determinado padrão de formatação. Pode-se gerar código-fonte de alguma linguagem, XML, HTML, documentos RTF e muitos outros. Por exemplo, o Poseidon for UML, ferramenta CASE desenvolvida em Java, usa o Velocity para a geração de código a partir de diagramas UML.
Usar templates tem uma série de vantagens: existe uma melhor designação de tarefas, pois os programadores ficam concentrados na lógica do sistema e os designers se preocupam apenas com o layout, o que reduz o risco de alterarem indevidamente o código da aplicação. Além disso, os templates ficam em arquivos separados, possibilitando mudar o visual da aplicação sem a necessidade de recompilar ou reiniciar o sistema.
Mas o que exatamente são templates? São arquivos com grande parte de sua estrutura e formatação pronta, contendo diretivas indicando valores a serem inseridos e ações a serem realizadas pelo sistema de templates. Com diretivas, é possível, por exemplo, mostrar o conteúdo de uma variável, navegar em listas e arrays, ou até mesmo invocar métodos de objetos.
Diretivas são a parte principal da Velocity Template Language (VTL) – veja mais sobre essa linguagem no quadro "Diretivas da VTL".
Funcionamento básico
Uma aplicação que usa o Velocity executa, basicamente, os seguintes passos: inicializa o sistema de templates, cria um contexto, adiciona objetos ao contexto, carrega um template e realiza o merge (veja a Figura 1).
Os contextos são a forma usada no Velocity para fornecer dados para o mecanismo de templates. Um contexto é uma instância da classe org.apache.velocity.VelocityContext, que utiliza internamente um HashMap para manter um conjunto de pares String-objeto. Um contexto possui dois métodos importantes: put(String chave, Object valor) e get(String chave).
Uma vez criado e preenchido o contexto, prossegue-se para o merge. Durante o merge ("mistura" ou "intercalação"), o Velocity interpreta as diretivas e extrai os dados necessários do contexto, gerando a saída desejada.
Figura 1. O processo de merge
Obtenção e instalação
O download da última versão estável do Velocity pode ser feito em jakarta.apache.org/builds/jakarta-velocity/release. Para usá-lo em suas aplicações, você deve incluir a biblioteca velocity-dep-<versao>.jar no classpath do sistema operacional ou de seu container web.
Alô Velocity
Nosso primeiro exemplo gera um documento XML a partir de dados contidos em um arquivo-texto, e apresenta alguns elementos importantes do Velocity.
O arquivo-texto utilizado (empregados.txt) é bastante simples, contendo nomes, e-mails e salários:
George Harrison,george@beatles.com,80000.00
Ringo Starr,ringo@beatles.com,40000.00
...