SlideShare a Scribd company logo
1 of 37
Download to read offline
@julioviegas
Engenheiro de Software
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
Agenda
 O Spring Framework

 Spring Roo

 Spring Tool Suite

 Grails

 CloudFoundry
O Spring Framework
O Spring Framework
 IoC / DI

 Abstract Factory

 Cola

 Integracao

 Corporativo de fato
O Spring Framework
 Webflow

 Security

 dm

 BlazeDS

 Web Service

 JavaConfig

 .NET
O Spring Framework
 Integration

 Batch

 IDE
O Spring Framework
 ToolSuite

 tc Server / Insight

 dm Server

 Hyperic

 CloudFoundry

 SalesForce

 Google App Engine for Business
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
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");
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)
O Spring Framework
 JavaConfig
    @Configuration
    @Bean
    @Lazy
   @Configuration
   public class AppConfig {

       @Bean @Lazy
       public CaixaEletronicoService buildCaixaEletronicoService() {

           CaixaEletronicoService s = new CaixaEletronicoService();
           s.setDao(...);
           return s;
       }
   }
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 { ... }
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;

          }
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
Spring Roo
 Padroes JCP
    JPA
    Bean Validation
    JSPX

 Padroes de fato
    AspectJ
    Spring e produtos relacionados
    Rest / Tiles
    JUnit / Selenium
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 ?
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
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
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
Grails
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
Grails

  Produtividade

  Convencao sobre configuracao

  Agil

  Fundacoes solidas

  Comunidade

  Integracao ao Java

  Extensivel via plugins: 441(!!!) plugins
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
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
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
Grails

  Groovy
     Tipos dinamicos
     Closures
     Sobrecarga de operadores
     RegEx nativo
     JUnit nativo
     Suporte a linguagens de marcacao
     Expressoes dentro de strings
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}"
  }
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"));
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, ...
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).
CloudFoundry
CloudFoundry

 Arquiteturas disponiveis para apps
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.
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
???
Obrigado! :)

        @julioviegas
Engenheiro de Software

More Related Content

What's hot

Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Introdução ao Spring Framework MVC
Introdução ao Spring Framework MVCIntrodução ao Spring Framework MVC
Introdução ao Spring Framework MVCMessias Batista
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Programação para Web II: JavaServer Faces
Programação para Web II: JavaServer FacesProgramação para Web II: JavaServer Faces
Programação para Web II: JavaServer FacesAlex Camargo
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesEder Magalhães
 

What's hot (20)

Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
Introdução ao Spring Framework MVC
Introdução ao Spring Framework MVCIntrodução ao Spring Framework MVC
Introdução ao Spring Framework MVC
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Aula Ruby
Aula RubyAula Ruby
Aula Ruby
 
Programação para Web II: JavaServer Faces
Programação para Web II: JavaServer FacesProgramação para Web II: JavaServer Faces
Programação para Web II: JavaServer Faces
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Java 9, 10, 11
Java 9, 10, 11Java 9, 10, 11
Java 9, 10, 11
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 

Similar to Ecosistema spring a_plataforma_enterprise_jav

Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusDenis L Presciliano
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootRodrigo Cândido da Silva
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 

Similar to Ecosistema spring a_plataforma_enterprise_jav (20)

Kotlin first
Kotlin firstKotlin first
Kotlin first
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Git, GitHub e OO
Git, GitHub e OOGit, GitHub e OO
Git, GitHub e OO
 

Ecosistema spring a_plataforma_enterprise_jav

  • 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.
  • 4. Agenda O Spring Framework Spring Roo Spring Tool Suite Grails CloudFoundry
  • 6. O Spring Framework IoC / DI Abstract Factory Cola Integracao Corporativo de fato
  • 7. O Spring Framework Webflow Security dm BlazeDS Web Service JavaConfig .NET
  • 8. O Spring Framework Integration Batch IDE
  • 9. O Spring Framework ToolSuite tc Server / Insight dm Server Hyperic CloudFoundry SalesForce Google App Engine for Business
  • 10. 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
  • 11. 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");
  • 12. 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)
  • 13. O Spring Framework JavaConfig @Configuration @Bean @Lazy @Configuration public class AppConfig { @Bean @Lazy public CaixaEletronicoService buildCaixaEletronicoService() { CaixaEletronicoService s = new CaixaEletronicoService(); s.setDao(...); return s; } }
  • 14. 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 { ... }
  • 15. 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; }
  • 16. 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
  • 17. Spring Roo Padroes JCP JPA Bean Validation JSPX Padroes de fato AspectJ Spring e produtos relacionados Rest / Tiles JUnit / Selenium
  • 18. 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 ?
  • 19. 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
  • 20. 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
  • 21. 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
  • 23. 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
  • 24. Grails Produtividade Convencao sobre configuracao Agil Fundacoes solidas Comunidade Integracao ao Java Extensivel via plugins: 441(!!!) plugins
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. Grails Groovy Tipos dinamicos Closures Sobrecarga de operadores RegEx nativo JUnit nativo Suporte a linguagens de marcacao Expressoes dentro de strings
  • 29. 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}" }
  • 30. 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"));
  • 31. 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, ...
  • 32. 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).
  • 35. 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.
  • 36. 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
  • 37. ??? Obrigado! :) @julioviegas Engenheiro de Software