Spring: Um suite de novas opções para Java EE Alberto J Lemos (Dr. Spock) Instrutor Globalcode Ricardo Jun Taniguchi Instrutor Globalcode 1 Globalcode – Open4Education Agenda > Sobre o Spring Framework > Escopo de integração com Java EE e outros frameworks > Sobre o Spring portfolio: Um suite de produtos > Sobre o SpringSource Application Platform 2 Globalcode – Open4Education Agenda > Sobre o Spring Framework > Escopo de integração com Java EE e outros frameworks > Sobre o Spring portfolio: Um suite de produtos > Sobre o SpringSource Application Platform 3 Globalcode – Open4Education O que é Spring Framework > Um framework de código aberto e uso livre, sob licença Apache, criado por Rod Johnson; > Implementa um contêiner de injeção de dependências (DI) e inversão de controle (IoC); > Um framework para programação orientada a aspectos (AOP); > Um framework para integração de aplicações com serviços Java EE; > Um framework para integração com outros frameworks que implementam serviços enterprise. 4 Globalcode – Open4Education O que o Spring não é! > Não é uma tecnologia padrão mantida pelo JCP; > Não é um concorrente da plataforma Java EE; > Não é uma nova tecnologia; > Não é a reinvenção da roda! 5 Globalcode – Open4Education Para o que serve? > Promover boas práticas de desenvolvimento; > Promover testabilidade; > Garantir que o código seja flexível para substituir tecnologias de maneira transparente; > Utilizar em aplicativos desktop algumas facilidades do mundo corporativo; > Desenvolvimento através de um modelo de componentização baseado em classes Java simples (POJO). 6 Globalcode – Open4Education Para o que não serve? > Tornar um código existente em um código bem estruturado; > Gerenciar recursos; > Garantir a qualidade do código; 7 Globalcode – Open4Education Agenda > Sobre o Spring Framework > Escopo de integração com Java EE e outros frameworks > Sobre o Spring portfolio: Um suite de produtos > Sobre o SpringSource Application Platform 8 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar 9 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar Core: Core: Implementa Implementa oo contêiner contêiner IoC; IoC; 10 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar Web: Web: Recursos Recursos para para implementação implementação de de aplicações aplicações Web: Web: integração integração com com frameworks frameworks MVC, MVC, implementação implementação própria própria de de MVC MVC ee integração integração com com tecnologias tecnologias de de visualização; visualização; 11 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar DAO: DAO: Classes Classes utilitárias utilitárias para para desenvolvimento desenvolvimento de de DAO's DAO's com com JDBC JDBC ee gerenciamento gerenciamento de de transações; transações; 12 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar AOP: AOP: Disponibiliza Disponibiliza oo conceito conceito de de aspectos aspectos via via AOP AOP Alliance Alliance ee AspectJ AspectJ para para integrar integrar os os POJO's POJO's com com os os serviços serviços enterprise; enterprise; 13 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar ORM: ORM: Implementa Implementa oo suporte suporte para para integração integração com com frameworks frameworks de de mapeamento mapeamento objeto/relacional. objeto/relacional. 14 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar Java Java EE: EE: Classes Classes utilitárias utilitárias para para integração integração com com serviços serviços Java Java EE; EE; 15 Globalcode – Open4Education Spring Framework > Disponível no arquivo spring.jar Remoting: Remoting: Expõe Expõe os os métodos métodos dos dos POJO's POJO's para para invocação invocação remota; remota; 16 Globalcode – Open4Education Java EE e Spring > O framework promove o uso dos serviços Java EE em componentes desenvolvidos como POJO e sem EJB's; > Serviços usados: JDBC, JPA, JTA, JMS, JCA, JMX, JavaMail e JNDI; > Anotações Java EE suportadas: 17 Globalcode – Open4Education Java EE e Spring > Permite a configuração e invocação de EJB's (2.1 e 3) como beans no contexto Spring; > Permite expor os componentes como Web Services através de JAX-WS (com anotações @WebService e @WebMethod); > Integra com serviços Java EE implementados por servidores de aplicações ou por frameworks externos (Ex.: ActiveMQ, ObjectWeb JTOM, commons-dbcp, etc). 18 Globalcode – Open4Education Agenda > Sobre o Spring Framework > Escopo de integração com Java EE e outros frameworks > Sobre o Spring portfolio: Um suite de produtos > Sobre o SpringSource Application Platform 19 Globalcode – Open4Education Spring Portfolio > Composto por diversos projetos que complementam o Spring Framework; > Projetos que utilizam as mesmas boas práticas sugeridas pelo Spring; > Alguns recursos disponibilizados: Segurança, integração com outros frameworks, processos batch, OSGi e ferramentas de desenvolvimento; > Alguns projetos estão consolidados e maduros; > Outros projetos estão em desenvolvimento (milestone ou 1.0.0). 20 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. 21 Globalcode – Open4Education Spring Portfolio Security: > Um suite deSpring produtos paraSegurança aplicações baseadas Spring Security: Segurança declarativa via via XML XML ou ou anotações anotações com com no Spring. declarativa suporte suporte aa AOP AOP ee integração integração com com tecnologias tecnologias de de segurança: segurança: JAAS, JAAS, LDAP, LDAP, DAO, DAO, OpenID, OpenID, CAS, CAS, X509, X509, Windows Windows NTLM; NTLM; 22 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring Web Web Service: Service: Suporte Suporte aa Web Web Services Services aa partir partir da da definição definição do do XML XML Schema Schema ee WSDL WSDL (Data (Data Contract Contract ee Service Service Contract); Contract); 23 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring Web Web Flow: Flow: Suporte Suporte ao ao controle controle de de fluxo fluxo de de navegação navegação Web, Web, integração integração com com JSF, JSF, conversação conversação ee Ajax; Ajax; 24 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Dynamic Dynamic Modules Modules for for OSGi: OSGi: Simplifica Simplifica oo uso uso da da API API OSGi OSGi através através do do Spring Spring com com POJO's; POJO's; 25 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring Modules: Modules: Projeto Projeto guardaguardachuva chuva que que implementa implementa aa integração integração com com diversos diversos outros outros frameworks frameworks ee ferramentas; ferramentas; 26 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring Rich Rich Client: Client: Recursos Recursos para para desenvolvimento desenvolvimento desktop desktop com com Swing Swing ee Spring; Spring; 27 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring JavaConfig: JavaConfig: Suporte Suporte aa configuração configuração dos dos beans beans programaticamente programaticamente sem sem usar usar XML XML ou ou anotações; anotações; 28 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring LDAP: LDAP: Classes Classes utilitárias utilitárias para para interação interação com com um um serviço serviço de de Lightweight Lightweight Directory Directory Access Access Protocol Protocol (LDAP); (LDAP); 29 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring Integration: Integration: Implementa Implementa oo suporte suporte para para integração integração de de sistemas sistemas via via mensagens mensagens (EAI (EAI ee Enterprise Enterprise Integration Integration Patterns); Patterns); 30 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring Batch: Batch: Suporte Suporte aa execução execução de de processos processos em em batch batch de de longa longa duração; duração; 31 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring IDE: IDE: Plugin Plugin para para incrementar incrementar produtividade produtividade durante durante oo desenvolvimento desenvolvimento com com oo Eclipse; Eclipse; 32 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring BeanDoc: BeanDoc: Ferramenta Ferramenta para para gerar gerar documentação documentação semelhante semelhante ao ao Javadoc; Javadoc; 33 Globalcode – Open4Education Spring Portfolio > Um suite de produtos para aplicações baseadas no Spring. Spring Spring .NET: .NET: Porte Porte de de parte parte do do Spring Spring Framework Framework para para desenvolvimento desenvolvimento de de aplicações aplicações .NET! .NET! 34 Globalcode – Open4Education Agenda > Sobre o Spring Framework > Escopo de integração com Java EE e outros frameworks > Sobre o Spring portfolio: Um suite de produtos > Sobre o SpringSource Application Platform 35 Globalcode – Open4Education Spring Application Server 36 Globalcode – Open4Education Application Platform > Servidor de aplicações em desenvolvimento pelo SpringSource; > Ainda na versão 1.0 beta; > Baseado em OSGi (R4.1) para modulalização via Eclipse Equinox (OSGi Spec RI); > Suportará o conceito de profiles para facilitar a customização da plataforma; > Suporta empacotamento da aplicação em: OSGi Bundles, Java EE WAR, Web Modules e Platform Archive (PAR); 37 Globalcode – Open4Education Application Platform > Spring Framework embutido (obviamente!); > Suporte a aplicações Java EE Web via Tomcat embutido; > Monitoramento via ferramenta Spring Application Management Suite (produto SpringSource); > Suporte ao desenvolvimento via SpringSource Tool Suite (Branded Eclipse); > Um repositório está disponível com diversas bibliotecas para download e reempacotadas como OSGi Bundles. 38 Globalcode – Open4Education Conclusão > O Spring Framework disponibiliza os serviços Java EE via AOP para os POJO's; > Permite o uso de AOP na aplicação; > O framework não concorre com o Java EE; > Vale a pena usar alguns projetos do Spring portfolio; > O servidor de aplicações e a plataforma Spring estão nascendo; > O Spring Framework ainda é uma boa opção mesmo com o EJB 3 em cena; 39 Globalcode – Open4Education Conclusão A plataforma Spring pretende oferecer uma alternativa completa e concorrente à plataforma Java EE, mantendo compatibilidade. 40 Globalcode – Open4Education Perguntas & Respostas 41 Globalcode – Open4Education Mais sobre o assunto > Spring Framework. http://www.springframework.org/about > Spring Framework Projects (Suite). http://www.springframework.org/projects > SpringSource Application Platform. http://www.springsource.com/products/suite/applicationplatform > SpringSource. http://www.springsource.com/ > Java EE Platform. http://java.sun.com/javaee/ 42 Globalcode – Open4Education