Desenvolva aplicações corporativas com Jmine - Revista Java Magazine 115
Autores:Renan de Melo Oliveira e Julian Geraldes Monteiro
Neste artigo, veremos como utilizar os recursos da plataforma open source Jmine, que integra ferramentas como Hibernate, Spring e Wicket para o desenvolvimento de aplicativos corporativos. Para isto, abordaremos os primeiros passos na plataforma, analisando como instalar e executar o projeto no ambiente de desenvolvimento e como desenvolver nossa primeira funcionalidade.
O desenvolvimento de aplicações corporativas em Java é muito comum, e é útil iniciar um novo projeto plenamente configurado com frameworks como JPA, Spring e Wicket, além de recursos muitas vezes necessários para ambientes corporativos, como escalonamento de batches e gerenciamento do estado inicial da base de dados.
As empresas são organizações que estão sempre sofrendo mudanças constantes. Os processos da empresa frequentemente mudam: novas abordagens comerciais, promoções, processos internos de operação, alterações da legislação, etc. Para acompanhar todas essas mudanças, a área de desenvolvimento de software precisa ser veloz em se adaptar à realidade organizacional, o que muitas vezes decorre na criação e manutenção de novos projetos de software.
Devido a tendências dos últimos anos, diversos destes novos projetos culminaram na criação de aplicações Java seguindo uma arquitetura web. Para a criação de novas aplicações Java, muitas vezes a abordagem adotada no mercado é definir e montar uma arquitetura inicial em que o sistema possa evoluir. No entanto, este processo de se estruturar uma arquitetura base para a aplicação pode se tornar bastante trabalhoso. Dentre os diversos esforços relacionados à definição de uma arquitetura inicial está a integração de diversos frameworks utilizados no ambiente Java em diferentes camadas, além da preocupação com requisitos de segurança, escalabilidade, gerenciamento de transações, gerenciamento de menus, testes integrados, entre outros requisitos. Para tratar de alguns destes problemas em aplicações web corporativas que a plataforma Jmine foi planejada.
O Jmine é uma plataforma open source de desenvolvimento Java para projetos web que integra alguns dos frameworks mais utilizados no mercado, como Apache Wicket, Spring e JPA com Hibernate. Além disto, esta plataforma é focada no mercado de aplicações corporativas, disponibilizando uma diversidade de recursos para o desenvolvimento de sistemas neste contexto. Dentre estes recursos podemos enumerar o escalonamento de batches por meio de clusterização, regras de negócio dinâmicas por meio de linguagens de script, mecanismo de testes automatizados, segurança, etc. Ao iniciar um projeto com Jmine, recursos como os previamente citados já se encontram disponíveis para o desenvolvedor de forma integrada, apenas com a execução de um simples comando de criação de projetos.
Com base nisso, neste artigo iremos explicar mais detalhadamente o que é o Jmine e abordar como criar rapidamente uma aplicação inicial, com um módulo de controle de usuários e um usuário para administração do sistema já disponível. Explicaremos ainda como criar páginas para a nossa solução e como integrá-las ao sistema de menus, usufruindo de recursos pré-definidos na plataforma.
A plataforma Jmine
O Jmine emergiu como plataforma open source a partir de necessidades comuns de projetos Java Web corporativos. A partir destas necessidades, várias features foram sendo adicionadas ao Jmine para que ele tivesse a capacidade de prover as funcionalidades que hoje possui.
Além de ser um framework "full stack" (agrupa funcionalidades de todas as camadas – apresentação, negócio e persistência), esta plataforma já disponibiliza um ambiente de execução completo para o desenvolvimento de aplicações. Isto é feito porque uma nova aplicação com o Jmine possui um servidor web e um banco de dados embarcados, reduzindo a necessidade de instalações e a complexidade no preparo dos desenvolvedores.
O Jmine integra o Apache Wicket para a camada web, o Spring framework para a injeção de dependências e o JPA com Hibernate para a camada de persistência, e contém diversas ferramentas úteis para o dia a dia do desenvolvimento de aplicações corporativas em grandes empresas. Um resumo dos módulos e recursos mais relevantes do Jmine pode ser visualizado na Figura 1.
Figura 1. Módulos e recursos do Jmine.
Um dos recursos que o Jmine possui que é voltado para grandes organizações é um gerenciador de carga de dados inicial. Com esta plataforma, é possível definir um estado de banco de dados inicial para que uma aplicação rode normalmente, tanto em relação à estrutura das tabelas, quanto em relação a algum conteúdo exigido para sua execução. Este recurso é útil porque muitas vezes precisamos de um preenchimento básico de algumas tabelas informativas para o funcionamento adequado do nosso sistema, como a lista de cidades, estados e países, ou outras informações específicas do contexto do sistema, como a lista de tipos de lançamentos fiscais, entre outras informações.
Além disso, o Jmine oferece um mecanismo para auditoria de entidades dos nossos sistemas. Esta funcionalidade permite que seja gravado um histórico das inclusões, alterações e exclusões de entidades da nossa aplicação, de forma que a auditoria das operações realizadas no sistema se torna uma tarefa simples. Este recurso também possibilita que seja ativado um mecanismo de autorização, o qual obriga que alterações em determinadas entidades do sistema passem por um processo de autorização antes que sejam efetivadas – muitas vezes necessário em ambientes organizacionais.
Outro recurso disponível no Jmine é um módulo denominado Hydra. O objetivo deste módulo é simplificar a integração e a comunicação de nosso aplicativo com sistemas legados, que são bem presentes em ambientes corporativos, e que muitas vezes possuem restrições para a integração difíceis de lidar. O Hydra simplifica o desenvolvimento destas integrações ao facilitar a exportação e importação dos dados de nosso sistema em diferentes formatos (CSV, posicional, binário, etc.) e suportando diferentes meios de comunicação (diretório, filas, web services, etc.).
Outro problema que encontramos muitas vezes em ambientes corporativos é a necessidade de aumentar o nível de processamento computacional para a execução de algumas tarefas mais exigentes. O Jmine contém um módulo específico para o processamento distribuído de processos batch, que pode auxiliar neste tipo de situação. Este módulo se baseia em um modelo de processamento similar aos algoritmos de map e reduce, muito conhecidos em estratégias de computação distribuída, para permitir a distribuição do processamento de batches, e segue um modelo próximo ao definido na JSR 352 (veja a seção "