quarta-feira, 18 de junho de 2008

Java EE de hoje...

As ferramentas tradicionais utilizadas em grande escala nas software houses são normalmente tecnologias mais antigas, pois o custo (tanto financeiro quanto recursos como tempo e equipe) para migrar sistemas legados para tecnologias atuais é muito alto. Tratando-se do mundo WEB, principalmente fazendo uso da tecnologia Java, a utilização de algum framework MVC apresenta-se como uma solução ideal para deixar as responsabilidades do software (camadas) mais isoladas, sem que uma invada o espaço da outra. Porém, como no caso de frameworks como Struts 1 e Spring, a quantidade de artefatos que precisam ser produzidos é tão alta que a produtividade começa a diminuir substancialmente. Lembrando que, no Struts 1, para cada nova action ser criada, quatro passos normalmente precisam ser executados, que são: criar a classe que representa a action, configurar o mapeamento no struts.config.xml, criar a classe de formulário e por último criar a view (jsp) para exibir o ”resultado” ao usuário. Todo esse processo é feito somente para satisfazer o framework, nada de negócio foi realmente desenvolvido até o tal momento. Facilmente percebe-se que o tempo gasto com a infraestrutura é muito alto. Outra tecnologia que atualmente é vista como proporcionadora de baixa produtividade das equipes de desenvolvimento é o EJB 2. Nele, também muitas configurações (xml) necessitam ser criadas, sendo que praticamente nenhuma convenção é utilizada.


Frameworks recentes que visam resolver os problemas


Como framework MVC, várias tecnologias recentes apresentam soluções interessantes. O próprio Struts 2 (ou Webwork), que foi lançado com características muito diferentes da sua versão anterior. Porém, pelo fato de ter seus desenvolvedores fora do Brasil, a questão do suporte e consultoria torna-se mais complicado e custoso.
Sendo assim, após um estudo dos frameworks MVC desenvolvidos por brasileiros, destaca-se o VRaptor, que tem como desenvolvedores, o pessoal de uma empresa chamada Caelum, com sede em São Paulo. Trata-se de uma empresa que além de desenvolver sistemas e frameworks, provê uma gama de treinamentos em Java. O VRaptor, que atualmente consta na versão 2.5, consiste em um framework onde primeiramente é levado em consideração “convenções” sobre “configurações”. Com ele, muitas das configurações que são feitas no Struts 1, por exemplo, são abolidas pelo uso de convensões. A criação de uma nova action com VRaptor, consiste apenas na criação de um método. Dessa forma, uma classe Java pode conter determinadas actions, sendo que as classes podem então ser nomeadas como AlunoLogic, CentroLogic, etc. As classes passam a ser vistas como um agrupamento de actions, sendo que nenhuma configuração em XML precisa ser feita, tudo funciona à base de convenções. A passagem de parâmetros da camada view para a camada de lógica (action) ocorre de forma simples, sem que nenhuma classe seja criada, como no Struts 1 que precisa ser criada uma ActionForm. A injeção dos parâmetros ocorre dentro da lista de parâmetros do próprio método.
O Quadro 1 apresenta um exemplo de código-fonte de uma classe de lógica no VRaptor.

@Component

public class AlunoLogic {


@Transaction(required=true)

public void cadastra(Aluno a) {

alunoRepository.save(a);

}


@Transaction(required=true)

public void altera(Aluno a) {

...

}

}

Quadro 1 – Exemplo de classe de lógica VRaptor.

Para que a action cadastra seja invocada através de uma view (em um jsp), a seguinte URL deve ser submetida: “aluno.cadastra.logic”. Isso já faz com que o método cadastra da classe AlunoLogic seja chamado. A passagem de parametros também é interessante, pois basta informar a url: “aluno.cadastra.logic?aluno.nome=Teste1&aluno.dataNascimento=12/05/1990”. O VRaptor já sabe que precisa criar um objeto do tipo Aluno e povoar os atributos. Com VRaptor a integração com Ajax é muito simples, sendo que basta adicionar uma anotação acima do nome do método e o mesmo já pode ser acessado por uma requisição HTTP assincrona.
A tecnologia EJB também evoluiu muito na sua versão atual que é a 3. Uma das principais vantagens sobre a versão anterior é o uso de anotações Java para realizar as configurações necessárias, que aumentam muito a produtividade. Essa versão também contempla uma maior integração com frameworks de mapeamento objeto relacional, tal como Hibernate e Prevayler. O EJB 3 traz consigo a especificação JSR-220, que inclui a Java Persistence API (JPA). Ela deixa livre a implemenação concreta do provedor de persistência de dados, onde na maioria das vezes é utilizado o Hibernate, porém a aplicação não precisa utilizar os recursos diretamente dele, tornando-a mais independente.
Como ambiente de desenvolvimento freeware e opensource, o Eclipse Web Tools Plataform (WTP) apresenta-se como uma solução bastante prática para o desenvolvimento de aplicações web fazendo uso dos frameworks previamente citados. Tanto para se trabalhar com o VRaptor, como EJB 3, existem plug-ins gratuitos que auxiliam o desenvolvedor na criação de tarefas rotineiras.
Por último, a empresa Caelum, cujo site já foi apresentado, possui diversos treinamentos. Todos os professores são certificados pela Sun e são altamente ativos na comunidade Java (nos fóruns principalmente). A maioria dos professores da Caelum sao os responsáveis pela elaboração da revista Mundo Java, que é bem conhecida no Brasil todo. Os treinamentos envolvem desde orientação a objetos e modelagem de arquiteturas, até a utilização de frameworks consagrados, incluindo o VRaptor.
Além das tecnologias, para uma equipe de desenvolvedores Java ser mais ágil, é necessário que uma metologia de desenvolvimto ágil seja considerada. Conceitos como Domain Driven Design (DDD) são muito bem vindos, fazendo com que o código-fonte da aplicação por completo, fique muito mais próximo do domínio do negócio a ser desenvolvido, favorecendo o entendimento tanto por parte da equipe técnica (TI) quanto dos especialistas do negócio.