Neste artigo veremos algumas das principais novidades por trás desta nova versão do framework e algumas tendências para as quais este release aponta. Desde o seu lançamento, o Spring exerce significativa influência sobre o desenvolvimento da plataforma Java EE e do modo como vemos a arquitetura de aplicações corporativas. E com este novo release, esta tendência se confirma novamente.
O Spring Framework é uma das grandes referências do Java, mas que não está diretamente relacionado à Oracle. Em seu primeiro release, nos fez repensar o uso dos EJBs. Sua segunda versão (2.0) ampliou significativamente a popularidade da programação orientada a aspectos (AOP: Aspect Oriented Programming) entre programadores Java ao fornecer suporte ao AspectJ.
Já a versão 2.5 começou a combater um dos maiores estigmas do framework, que era o uso excessivo de arquivos de configuração no formato XML ao abraçar o uso de anotações.
Quando a versão 3.0 foi lançada, vimos o projeto oferecer suporte total aos recursos trazidos pelo Java 5 e a introdução de configurações baseadas em Java, que nos possibilitaram dar dinamismo ainda maior aos recursos oferecidos pelo framework.
Durante este período que vai de 2004 até hoje, vimos também o Spring mudar de mãos algumas vezes. Inicialmente o projeto era mantido pela Interface21, empresa fundada pelo criador do framework (Rod Johnson) que, em 2007, com o objetivo de tornar-se reconhecida pelo seu carro chefe e após uma injeção de investimentos, mudou seu nome para SpringSource.
Conforme o projeto foi se desenvolvendo e ganhando adeptos, a SpringSource chamou a atenção de empresas maiores, dentre as quais a VMware que, ao reconhecer o imenso potencial dos projetos baseados na plataforma, comprou a empresa em 2009, tornando-a uma de suas principais subdivisões.
Quatro anos depois vimos o quão a sério a VMware e sua empresa pai, a EMC, levaram aquele investimento com o lançamento da iniciativa Pivotal em parceria com a General Electric.
O objetivo da Pivotal é aumentar o foco e o investimento nos produtos voltados a desenvolvedores, o que inclui, além do Spring Framework (e agregados), projetos como RabbitMQ, GemFire, SQLFire, Redis, Cloud Foundry e muitos outros.
O Spring 4.0 foi o primeiro release lançado por esta iniciativa, e como veremos neste artigo, foi extremamente benéfico à plataforma Spring. Neste ponto é interessante observar o crescimento dos investimentos neste framework conforme ele mudou de mãos desde sua introdução pela Interface21.
Com o lançamento da Java EE 7 muitos questionaram a relevância do Spring. Dado que finalmente a plataforma Java EE havia chegado a um patamar de produtividade próximo (ou igual) ao oferecido pelo Spring, quais as vantagens que nosso amigo inovador poderia nos trazer agora?
Como veremos neste artigo, a versão 4 do Spring provavelmente será vista no futuro como um evento tão revolucionário quanto o lançamento de sua primeira versão, ao nos apresentar uma nova maneira de pensar o desenvolvimento de aplicações corporativas dentro da plataforma Java EE.
Modernizando o projeto
Um dos principais objetivos do Spring 4.0 é ser uma tecnologia de ponta, oferecendo suporte a diversas tecnologias também de ponta e que se encontram em desenvolvimento neste momento. Dentre estas tecnologias está o Java 8, lançado em março de 2014, tornando possível tirar proveito de novos recursos da linguagem como, por exemplo, o uso de lambdas.
É importante citar também o suporte às novas versões de frameworks consagrados, como o Quartz, Hibernate e Ehcache.
Um ponto relevante a ser levado em consideração é a remoção de diversas APIs obsoletas (deprecated), um passo fundamental para garantir a facilidade de manutenção do framework, tarefa que se torna cada vez mais difícil em todo projeto conforme este aumenta de tamanho durante sua evolução.
Além disto, os requisitos de execução também foram afetados. Com isso, a versão mínima do Java passou a ser a 6.0 (a partir do update 18).
No caso de projetos voltados à plataforma Java EE, recomenda-se agora o uso de servidores compatíveis com a especificação 6 da plataforma. Apesar disso, ainda é possível executar aplicações baseadas em Spring 4.0 em containers que suportem a especificação Servlet 2.5, como o Google App Engine, WebSphere 7 e WebLogic 10.3, mas alguns recursos do framework baseados na especificação Servlet 3.0 não estarão disponíveis.
No caso do Tomcat, a equipe de desenvolvimento do framework recomenda as versões 7 e 8, apesar de ainda haver suporte à versão 6 do container. Para obter mais informações sobre as mudanças nos requisitos de execução do Spring e também as mudanças em sua API, recomendamos a leitura dos Links relacionados no final deste artigo.
Este novo release do framework também tira proveito de outra linguagem de programação, o Groovy. Agora, além de ser possível configurar o container do Spring usando esta linguagem, também é possível escrever aplicações baseadas no framework, parcial ou integralmente implementadas em Groovy.
Internamente o framework sofreu mudanças estruturais profundas, com o objetivo de possibilitar a criação de novos projetos que nos propiciam escrever aplicações Java EE de uma forma muito mais produtiva e diferente daquela com a qual estamos acostumados (inclusive em relação à versão 7 da Java EE).
Dentre estes projetos, especial atenção deve ser dada ao Spring Boot, que nos permite iniciar projetos Spring com uma velocidade incrível e de uma forma bastante inovadora. Neste artigo, veremos o Spring Boot de forma breve.
Forte suporte à arquitetura baseada em Micro Serviços
No post de lançamento do Spring 4 foi mencionado que o framework passaria a dar suporte a um estilo arquitetural que vem ganhando bastante popularidade atualmente, chamado de arquitetura baseada em micro serviços (MSA: Micro-services architecture).
Um sistema aderente a este estilo arquitetural apresenta diferenças no modo com o qual estamos acostumados a desenvolver sistemas corporativos na plataforma Java EE. Para melhor compreendermos esta “nova” maneira de desenvolvermos sistemas, primeiro precisamos entender o que é um micro serviço.
Os micro serviços são, na realidade, um estilo de componentização. Ao pensarmos neste tema, lembraremos que o tipo mais trivial de componente é o que se manifesta sob a forma de nossas bibliotecas ou frameworks.
Imagine aquela sua biblioteca favorita, usada, por exemplo, para lidar com documentos no formato XML.
Normalmente optamos por alguma biblioteca que tenha sido desenvolvida por alguém competent ...