Criador de um dos frameworks que mais influenciaram nas últimas versões do Java EE e fundador de uma empresa de sucesso, recentemente adquirida pela VMWare, Rod Johnson estará presenta na 3a edição do evento "The Developers Conference 2009" promovido pela Globalcode. Neste evento ele contará detalhes sobre as últimas novidades do Spring 3.0 e sobre o que é Spring Roo, além de como tem influenciado a próxima versão do Java EE através do JCP. Para adiantar como será o evento, ele conta um pouco sobre estas novidades em entrevista realizada no último JavaOne. Perguntamos para o Rod Johnson.
InfoQ Brasil: Rod Johnson, você poderia falar um pouco sobre o que há de novo no Spring 3.0?
Rod Johnson: Claro! Nós temos muitas coisas novas por aqui, em tempo de desenvolvimento e também em produção dos recursos de gerenciamento. Eu acho que o mais interessante para os desenvolvedores é que e stamos finalizando o Spring 3.0. Ele atualmente está passando pelas fases de "milestone", mas você já pode fazer o download. As novas características do Spring 3.0 estão relacionadas ao suporte REST, temos um suporte REST muito simples porém poderoso, totalmente integrado com o Spring MVC e obviamente como resultado do modelo de componentes do Spring. Nós também adicionamos o novo Spring Expression Language, que permite expressões serem usadas em anotações e também em XML ou outra configuração externa. Outra funcionalidade nova é que nós introduzimos o Spring Java Configuration Module, que era um projeto separado, ao núcleo do Spring, que basicamente fornece um DSL (Linguagem de Domínio Específico) para definir em Java as configurações do Spring. Esta funcionalidade tem benefícios potencialmente interessantes, como por exemplo herança entres as classes de configuração.
Provavelmente a linguagem de expressões terá um impacto maior no núcleo do Spring Container, isso significa que agora em qualquer anotação você pode efetivamente escrever uma expressão e dessa forma injetar o valor resultante dessa expressão, ou pode fazer isso em XML. Assim, por exemplo, sua expressão pode avaliar algo baseado em propriedades do sistema, ela pode referenciar uma propriedade de outro bean no mesmo contexto de aplicação, ela também pode ter um certo grau de expressões lógicas. Isto é particularmente interessante em relação à sintaxe das anotações que foi introduzida no Spring 2.5, porque isso significa que o conjunto de coisas que você pode fazer somente nas anotações, sem nenhuma configuração externa, ficou muito mais ampla. Assim, por exemplo, se você quiser uma referência para outros valores vindos de fora do Java e que poderão mudarão sem exigir recompilação, você pode fazer isso usando uma anotação, por exemplo, para referenciar algo que está especificado no arquivo de propriedades ou referenciar algo que está especificado na propriedade do sistema. Então, nós adicionamos um anotação @Value para essa finalidade, análoga a @Autowired, que é o qualificador de auto injeção de dependências que foi introduzido na versão 2.5 para injetar outros objetos gerenciados pelo Spring.
Além do Spring Framework, também há muitas coisas acontecendo em torno dos projetos open source do Spring. Por exemplo, Spring 3.0 agora está na fase milestone 1, perdão, Spring Security 3.0; e uma das coisas mais interessantes sobre ele é que permite as configurações de segurança usar expressões. Por exemplo, ele pode especificar que tipo de partes na aplicação estão seguras usando o Spring Expression Language, isso é um exemplo de como eu acho que você verá praticamente todos os projetos open source do Spring se beneficiando da linguagem de expressões, que incluirá também o Web Flow, versão 3.0, Spring Integration 2.0, Spring Batch, etc.
Um outro projeto open source novo que deverá ser muito emocionante para os desenvolvedores de Java é o projeto Spring Roo. Este projeto é algo sobre o qual tem havido muita expectativa no Java One, quero dizer, nós literalmente tivemos centenas de pessoas vindo até nosso estande para ver as demonstrações dele. Spring Roo é um gerador de códigos usando "round-tripping", obviamente quando se fala sobre geração de códigos para os desenvolvedores de Java muitos pensam: "Ah.. geração de códigos, que chato!". E de fato, tradicionalmente, eu acho que muitos procedimentos de geração de códigos são chatos. A razão disso é que primeiramente eles varriam muito da complexidade para debaixo do tapete, então se presumia que uma vez que o código estivesse sendo gerado, não importava quanto código houvesse ou o quanto ele fosse complexo. A outra razão pela qual eles tendem a ser chatos é porque muitos vinham de um tipo de abordagem filosófica por trás do MDA que realmente achava muito, muito ruim escrever códigos em Java. O que eles realmente querem é que você queira desenhar imagens bonitas e que é terrível escrever códigos. Nós acreditamos muito que não se deve varrer complexidade para debaixo do tapete, e também achamos divertido escrever códigos. Quero dizer com franqueza, eu prefiro de longe programar em Java do que programar em UML. Spring Roo usa a geração de códigos de uma maneira muito atraente para os desenvolvedores práticos. O que ele faz em primeira instância é permitir que você crie projetos incrivelmente rápido. Assim, você tem algo similar à capacidade de "scaffolding" presente no Ruby on Rails. Então, você pode executar o Roo, criar uma aplicação, criar entidades, obter as operações de CRUD dessas entidades. Roo gera absolutamente tudo que precisa na aplicação para fazer com que funcione em questão de minutos. Entretanto, o que diferencia o Roo é o fato de ter sido projetado primeiramente com a compreensão de que você quer realmente escrever código Java. Roo é um gerador que usa "round-tripping", isto significa que ele não gera código num único sentido como algo parecido com AppFuse e SeamGen. O que ele faz é manter o próprio modelo da sua aplicação inteira. Então, se você for escrever o seu próprio código, o Roo pode compreendê-lo e, com isso em mente, ele pode detectar as mudanças futuras. Isso significa que o Roo não dá somente um tipo de infra estrutura ou um início rápido quando se está começando uma aplicação, ele pode adicionar valor, como quando quiser adicionar outras entidades ele pode adicionar muito valor ao desenvolvimento. As arquiteturas que o Roo gera baseado no Spring 3.0 representam as melhores práticas do open source no momento. Então, eu recomendo fortemente que os desenvolvedores brasileiros façam o download do Roo, eu acho que eles irão gostar do que vão ver.
De mãos dadas com o Roo, nós anunciamos também há algumas semanas o Spring Source Tool Suite, uma distribuição do Eclipse que inclui as melhores ferramentas Spring disponíveis é agora grátis. Não é na realidade open source, mas um produto comercial livre e sem restrições de uso. Isto é perfeitamente aceitável para qualquer indivíduo, empresa ou organização usar da forma como quiserem, e é totalmente de graça. Esta distribuição está muito bem integrada com o Roo e às nossas tecnologias de servidor, e realmente provê um único local onde você pode baixar algo e ter uma aplicação funcionando num servidor web em cerca de dez minutos.
Nós, é claro, também temos feito muito na área de implantação e operação. Recentemente anunciamos o produto "tc Server" que basicamente adiciona ao Tomcat as capacidades de gerenciamento. Por exemplo, um dos desafios com o Tomcat é que ele é robusto, performático, os desenvolvedores o amam porque é muito leve e rápido. Entretanto, ele essencialmente não tem nenhuma capacidade de gerenciamento. Assim, se você instalar o Tomcat no seu data center e gerenciar vinte, ou duzentos, ou quinhentos instalações do Tomcat, como implantar as aplicações para disponibilizar o serviço? Como você inicia o serviço? Parar o serviço? Monitorar o serviço? Você tem em grande esforço se existem ações semelhantes. O produto tc Server usa o Tomcat como base para resolver todos esses requisitos.
A outra linha de tecnologia de gerenciamento com o tc Server está construída sobre o Hyperic HQ, que fornece à estrutura de gerenciamento uma mistura de tecnologias como um todo e, é claro, recentemente anunciamos que Spring Source adquiriu Hyperic, a empresa por trás do HQ. Então, estamos bastante animados no momento, estamos trabalhando em muitas frentes e as pessoas estão bem entusiasmadas com o que estamos produzindo.