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
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