ecosistema spring a_plataforma_enterprise_jav

37
@julioviegas Engenheiro de Software

Upload: julioviegas

Post on 14-Dec-2014

2.247 views

Category:

Technology


2 download

DESCRIPTION

Ecosistema Spring: a plataforma enterprise Java livre

TRANSCRIPT

Page 1: Ecosistema spring a_plataforma_enterprise_jav

@julioviegasEngenheiro de Software

Page 2: Ecosistema spring a_plataforma_enterprise_jav

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

Page 3: Ecosistema spring a_plataforma_enterprise_jav
Page 4: Ecosistema spring a_plataforma_enterprise_jav

Agenda

O Spring Framework

Spring Roo

Spring Tool Suite

Grails

CloudFoundry

Page 5: Ecosistema spring a_plataforma_enterprise_jav

O Spring Framework

Page 6: Ecosistema spring a_plataforma_enterprise_jav

O Spring Framework

IoC / DI

Abstract Factory

Cola

Integracao

Corporativo de fato

Page 7: Ecosistema spring a_plataforma_enterprise_jav

O Spring Framework

Webflow

Security

dm

BlazeDS

Web Service

JavaConfig

.NET

Page 8: Ecosistema spring a_plataforma_enterprise_jav

O Spring Framework

Integration

Batch

IDE

Page 9: Ecosistema spring a_plataforma_enterprise_jav

O Spring Framework

ToolSuite

tc Server / Insight

dm Server

Hyperic

CloudFoundry

SalesForce

Google App Engine for Business

Page 10: Ecosistema spring a_plataforma_enterprise_jav

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

Page 11: Ecosistema spring a_plataforma_enterprise_jav

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");

Page 12: Ecosistema spring a_plataforma_enterprise_jav

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)

Page 13: Ecosistema spring a_plataforma_enterprise_jav

O Spring Framework

JavaConfig@Configuration@Bean@Lazy

@Configurationpublic class AppConfig {

@Bean @Lazy public CaixaEletronicoService buildCaixaEletronicoService() {

CaixaEletronicoService s = new CaixaEletronicoService(); s.setDao(...); return s; }}

Page 14: Ecosistema spring a_plataforma_enterprise_jav

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 { ... }

Page 15: Ecosistema spring a_plataforma_enterprise_jav

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;

}

Page 16: Ecosistema spring a_plataforma_enterprise_jav

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

Page 17: Ecosistema spring a_plataforma_enterprise_jav

Spring Roo

Padroes JCPJPABean ValidationJSPX

Padroes de fatoAspectJSpring e produtos relacionadosRest / TilesJUnit / Selenium

Page 18: Ecosistema spring a_plataforma_enterprise_jav

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 ?

Page 19: Ecosistema spring a_plataforma_enterprise_jav

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

Page 20: Ecosistema spring a_plataforma_enterprise_jav

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

Page 21: Ecosistema spring a_plataforma_enterprise_jav

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

Page 22: Ecosistema spring a_plataforma_enterprise_jav

Grails

Page 23: Ecosistema spring a_plataforma_enterprise_jav

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

Page 24: Ecosistema spring a_plataforma_enterprise_jav

Grails

Produtividade

Convencao sobre configuracao

Agil

Fundacoes solidas

Comunidade

Integracao ao Java

Extensivel via plugins: 441(!!!) plugins

Roda no Google App Engine

Page 25: Ecosistema spring a_plataforma_enterprise_jav

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

Page 26: Ecosistema spring a_plataforma_enterprise_jav

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

Page 27: Ecosistema spring a_plataforma_enterprise_jav

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

Page 28: Ecosistema spring a_plataforma_enterprise_jav

Grails

GroovyTipos dinamicosClosuresSobrecarga de operadoresRegEx nativoJUnit nativoSuporte a linguagens de marcacaoExpressoes dentro de strings

Page 29: Ecosistema spring a_plataforma_enterprise_jav

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

Page 30: Ecosistema spring a_plataforma_enterprise_jav

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()); } }}

Page 31: Ecosistema spring a_plataforma_enterprise_jav

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

Page 32: Ecosistema spring a_plataforma_enterprise_jav

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

Page 33: Ecosistema spring a_plataforma_enterprise_jav

CloudFoundry

Page 34: Ecosistema spring a_plataforma_enterprise_jav

CloudFoundry

Arquiteturas disponiveis para apps

Page 35: Ecosistema spring a_plataforma_enterprise_jav

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.

Page 36: Ecosistema spring a_plataforma_enterprise_jav

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

Page 37: Ecosistema spring a_plataforma_enterprise_jav

???Obrigado! :)

@julioviegasEngenheiro de Software