ecosistema spring a_plataforma_enterprise_jav
Post on 14-Dec-2014
2.247 Views
Preview:
DESCRIPTION
TRANSCRIPT
@julioviegasEngenheiro 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+GenericsEventos agora tipadosNovidades na parte de executors
Spring Expression Language(SpEL)#{ expr }SPI#{ systemProperties['user.region'] }Uso em XML ou anotacoes: @Value("#{dbConfBean.dbKeyGenType}")systemProperties, systemEnvironment, beansWeb: contextParameters, contextAttributes, request, sessionJSF: param, initParam, facesContext
O Spring Framework
RestURI Template
@RequestMapping("/hotels/{hotel}/bookings/{booking}") @PathVariable String hotel
Views por MimeTypeapplication/xmlapplication/atom+xmlapplication/rss+xmlapplication/json
RestTemplaterestTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class, "42", "21");
O Spring Framework
Java EE 6JSF 2.0JPA 2.0Bean Validation@Async / @Assinchronous (EJB 3.1)
Suporte completo ao JEE 6 no Spring 3.1Servlet 3.0APIs avancadas de concorrencia(JSR-236)Anotacoes DI(JSR-330)
O Spring Framework
JavaConfig@Configuration@Bean@Lazy
@Configurationpublic class AppConfig {
@Bean @Lazy public CaixaEletronicoService buildCaixaEletronicoService() {
CaixaEletronicoService s = new CaixaEletronicoService(); s.setDao(...); return s; }}
O Spring Framework
JavaConfigCrie suas anotacoes, excelente para arquitetura!
@Service@Scope("request")@Transaction(rollbackFor=Exception.class)@Retention(RetentionPolicy.RUNTIME)public @interface MyService { ... }
@MyServicepublic 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 JCPJPABean ValidationJSPX
Padroes de fatoAspectJSpring e produtos relacionadosRest / TilesJUnit / Selenium
Spring Roo
JDK 5 ou superior
Maven 2.0.9 ou superior
Roo + Roo Shell + Add-ons default
OpcionaisBanco de dados(vem com Hypersonic/H2 embutidos)IDE ? STS facilita muito Mouse ?
Spring Roo
Quando usar?Preferencia em novos projetosPossivel, mas dificil, em projetos legadosArquitetura bem definida, difundida e integrada
Referenciasforum.springsource.org/showthread.php?t=71985notasingleshot.blogspot.comtwitter.com/benalexautwitter.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-project2. grails create-domain-class book3. grails create-controller my.project.Book4. grails run-app5. http://localhost:8080/my-project/book
Grails
Produtividade
Convencao sobre configuracao
Agil
Fundacoes solidas
Comunidade
Integracao ao Java
Extensivel via plugins: 441(!!!) plugins
Roda no Google App Engine
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
GroovyOO DinamicoIntegra bem com codigo JavaAlguma compatibilidade sintatica com JavaCompilado para bytecodeGDK estende JDKParenteses e ponto-e-virgula sao opcionaisreturn, getters e setters implicitos== eh equals()Modificador de acesso padrao eh publicApenas RuntimeExceptions
Grails
GroovyTipos dinamicosClosuresSobrecarga de operadoresRegEx nativoJUnit nativoSuporte a linguagens de marcacaoExpressoes 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;import java.util.ArrayList;import java.util.Iterator;
public class Todo { private String name; private String note;
public Todo() {}
public Todo(String name, String note){ this.name = name; this.note = note; }
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public String getNote() {
return note; }
public void setNote(String note) {
this.note = note; }
public static void main(String[] args){ List todos = new ArrayList(); todos.add(new Todo("1", "one"));
todos.add(new Todo("2", "two")); todos.add(new Todo("3","three"));
for(Iterator iter = todos.iterator();iter.hasNext();) { Todo todo = (Todo)iter.next(); System.out.println(todo.getName() + " " + todo.getNote()); } }}
CloudFoundry
Cloud ComputingInfra-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.
CloudToolsCó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! :)
@julioviegasEngenheiro de Software
top related