ecosistema spring a_plataforma_enterprise_jav

Post on 14-Dec-2014

2.247 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Ecosistema Spring: a plataforma enterprise Java livre

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