Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ecosistema spring a_plataforma_enterprise_jav

2,715 views

Published on

Ecosistema Spring: a plataforma enterprise Java livre

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Ecosistema spring a_plataforma_enterprise_jav

  1. 1. @julioviegas Engenheiro de Software
  2. 2. Palestrante ~15 anos trabalhando com tecnologia Instrutor, arquiteto, mentor e engenheiro de software e eletronica Participa de comunidades de usuarios: RSJUG, XP-RS, CEJUG, Open4Education, NoSQLBr... Sun Certified Trainer, SCEA 1 e 5, SCDJWS 1.4 e 5, SCWCD 1.4, SCBCD 5, SCJP 5, SCJA 1 Engenheiro de Software da Summa Technologies e Instrutor Globalcode
  3. 3. Agenda O Spring Framework Spring Roo Spring Tool Suite Grails CloudFoundry
  4. 4. O Spring Framework
  5. 5. O Spring Framework IoC / DI Abstract Factory Cola Integracao Corporativo de fato
  6. 6. O Spring Framework Webflow Security dm BlazeDS Web Service JavaConfig .NET
  7. 7. O Spring Framework Integration Batch IDE
  8. 8. O Spring Framework ToolSuite tc Server / Insight dm Server Hyperic CloudFoundry SalesForce Google App Engine for Business
  9. 9. O Spring Framework Java SE 5+ Generics Eventos agora tipados Novidades na parte de executors Spring Expression Language(SpEL) #{ expr } SPI #{ systemProperties['user.region'] } Uso em XML ou anotacoes: @Value("#{dbConfBean. dbKeyGenType}") systemProperties, systemEnvironment, beans Web: contextParameters, contextAttributes, request, session JSF: param, initParam, facesContext
  10. 10. O Spring Framework Rest URI Template @RequestMapping("/hotels/{hotel}/bookings/{booking}") @PathVariable String hotel Views por MimeType application/xml application/atom+xml application/rss+xml application/json RestTemplate restTemplate.getForObject("http://example.com/hotels/ {hotel}/bookings/{booking}", String.class, "42", "21");
  11. 11. O Spring Framework Java EE 6 JSF 2.0 JPA 2.0 Bean Validation @Async / @Assinchronous (EJB 3.1) Suporte completo ao JEE 6 no Spring 3.1 Servlet 3.0 APIs avancadas de concorrencia(JSR-236) Anotacoes DI(JSR-330)
  12. 12. O Spring Framework JavaConfig @Configuration @Bean @Lazy @Configuration public class AppConfig { @Bean @Lazy public CaixaEletronicoService buildCaixaEletronicoService() { CaixaEletronicoService s = new CaixaEletronicoService(); s.setDao(...); return s; } }
  13. 13. O Spring Framework JavaConfig Crie suas anotacoes, excelente para arquitetura! @Service @Scope("request") @Transaction(rollbackFor=Exception.class) @Retention(RetentionPolicy.RUNTIME) public @interface MyService { ... } @MyService public class EstoqueService { ... }
  14. 14. O Spring Framework Bean Validation (JSR-303) Valide seus objetos, independente da camada(UI, model, persistencia, ...) public class PersonForm { @NotNull @Size(max=64) @Min(20) private String name; }
  15. 15. Spring Roo Mais outro gerador? Nao, ele eh tb um gerenciador! Baseado em aspectos Design time only: sem dependencias em tempo de execucao Spring de forma expressa Scaffolding(tipo Rails) Roo Shell Customizavel via AddOns
  16. 16. Spring Roo Padroes JCP JPA Bean Validation JSPX Padroes de fato AspectJ Spring e produtos relacionados Rest / Tiles JUnit / Selenium
  17. 17. Spring Roo JDK 5 ou superior Maven 2.0.9 ou superior Roo + Roo Shell + Add-ons default Opcionais Banco de dados(vem com Hypersonic/H2 embutidos) IDE ? STS facilita muito Mouse ?
  18. 18. Spring Roo Quando usar? Preferencia em novos projetos Possivel, mas dificil, em projetos legados Arquitetura bem definida, difundida e integrada Referencias forum.springsource.org/showthread.php?t=71985 notasingleshot.blogspot.com twitter.com/benalexau twitter.com/schmidtstefan
  19. 19. Spring Tool Suite Projetos Spring; assistentes para beans e configuracao XML Configuracao grafica do Spring Suporte a Spring 3.0, incluindo @Configuration e @Bean Desenvolvimento visual para Spring Webflow e Batch Assistente para projetos Roo e Roo shell interno Spring Application blue prints e validacoes de melhores praticas
  20. 20. Spring Tool Suite Suporte aos servidores de aplicacao Java EE mais usados Suporte avancado ao dm Server Suporte avancado ao tc Server Instale sua app na nuvem com CloudFoundry. Futuramente com as nuvens Google App Engine for Business e Salesforce Integracao com alguns produtos VMWare Varios suportes a funcionalidades OSGi Eh sua porta de entrada para o uso facil de produtos Spring
  21. 21. Grails
  22. 22. Grails Crie sua app de modo facil: 1. grails create-app my-project 2. grails create-domain-class book 3. grails create-controller my.project.Book 4. grails run-app 5. http://localhost:8080/my-project/book
  23. 23. Grails Produtividade Convencao sobre configuracao Agil Fundacoes solidas Comunidade Integracao ao Java Extensivel via plugins: 441(!!!) plugins
  24. 24. Grails Desenvolvimento interativo, sem restart de JVM ou app server Scaffolding dinamico ou estatico(codigo fisico) Troque frustracao e desenvolvimento lento por produtividade e diversao! GORM CRUD basico gerado Finders basicos gerados
  25. 25. Grails Controllers geram URLs amigaveis baseadas no modelo Views sao selecionadas utilizando padroes de nomes Controllers usam o suporte de binding do Spring Services(regras de negocio) sao geradas e transacionais por padrao DI automatica: Controller / Service / Model GSP e Grails Tags Layouts baseados no Sitemesh
  26. 26. Grails Groovy OO Dinamico Integra bem com codigo Java Alguma compatibilidade sintatica com Java Compilado para bytecode GDK estende JDK Parenteses e ponto-e-virgula sao opcionais return, getters e setters implicitos == eh equals() Modificador de acesso padrao eh public Apenas RuntimeExceptions
  27. 27. Grails Groovy Tipos dinamicos Closures Sobrecarga de operadores RegEx nativo JUnit nativo Suporte a linguagens de marcacao Expressoes dentro de strings
  28. 28. Grails public class Todo { String name String note } def todos = [ new Todo(name:"1", note:"one"), new Todo(name:"2", note:"two"), new Todo(name:"3", note:"three") ] todos.each { println "${it.name} ${it.note}" }
  29. 29. Grails import java.util.List; public void setName(String name) { todos.add(new Todo("2", "two")); import java.util.ArrayList; todos.add(new Todo("3","three")); import java.util.Iterator; this.name = name; } for(Iterator iter = todos.iterator();iter. public class Todo { hasNext();) { private String name; public String getNote() { Todo todo = (Todo)iter.next(); private String note; System.out.println(todo.getName() + " return note; " + todo.getNote()); public Todo() {} } } } public Todo(String name, String note){ public void setNote(String note) { } this.name = name; this.note = note; this.note = note; } } public String getName() { public static void main(String[] args){ return name; List todos = new ArrayList(); } todos.add(new Todo("1", "one"));
  30. 30. CloudFoundry Cloud Computing Infra-estrutura escalável e altamente disponível. Pronta para uso. Uso de tecnologias como virtualização, armazenamento distribuído e recursos elásticos como CPU, memória, disco, ...
  31. 31. CloudFoundry Plataforma(PaaS) gratuíta, onde você pode instalar aplicações baseadas em Springframework, com imagens pré-configuradas(Java 1.6, Apache HTTP Server 2.2, tc Server 6.0, MySQL 5.0 e CentOS 5.2) para receber suas aplicações Spring e adaptador para uso de Amazon EC2 como provedor de Cloud Computing. CloudTools Código usado no CloudFoundry(monte seu próprio CloudFoundry!). Possibilidade de usar EC2 e Terremark vCloudExpress(outro provedor de Cloud Computing).
  32. 32. CloudFoundry
  33. 33. CloudFoundry Arquiteturas disponiveis para apps
  34. 34. CloudFoundry Deploy com STS Prefira usar uma infra local para testar sua app(pois é de graça!). CloudFoundry em beta. EC2 ainda é caro para infra simples e somente vantajoso para sites com alta demanda. CloudFoundry possui apenas duas opções de topologia e poucas opções avançadas de configuração de recursos disponíveis no EC2.
  35. 35. CloudFoundry Suporte a messageria, outros bancos e caching no futuro. Maior flexibilidade e opções de configuração via EC2, como monitoramento, S3(storage elástico), balanceamento... SSH(via EC2). É springframework: você pode embutir(embed) outros serviços via ApplicationContext como ActiveMQ, Ehcache... SalesForce Google App Engine for Business
  36. 36. ??? Obrigado! :) @julioviegas Engenheiro de Software

×