Arquitetura Java em 2007 (Java Architecture in 2007)

Post on 16-May-2015

7.863 views 2 download

description

Apresentada no JustJava 2007 em dupla com o Paulo Silveira. --- Presented at the JustJava conference in 2007, São Paulo, Brazil.

Transcript of Arquitetura Java em 2007 (Java Architecture in 2007)

Arquitetura Java em 2007

http://www.caelum.com.br

http://blog.fragmental.com.br

Quem?

Phillip Calçado “Shoes”● Arquiteto● Membro IASA● Coordenador

Globo.com● RioJUG Leader● Coordenador GUJ

Paulo Silveira● Arquiteto● Fundador do GUJ● Consultor Caelum● Mestre em CC

Lembra?

Distribuindo Objetos

|Cluster?

|Cluster?

|Cluster?

|Cluster?

|Cache Replicado?

|Cache Replicado?

|Cache Replicado?

|Cache Replicado?

|Cache Replicado?

|Cache Replicado?

|Cache Replicado? (na verdade)

|Cache Replicado? (na verdade)

|Cache Replicado? (na verdade)

|Cache Replicado? (na verdade)

Distribuindo Objetos?

1a Lei de Fowler Sobre Objetos Distribuídos:

NÃO DISTRIBUASEUS OBJETOS!

|Cache sem replicação

Modelando Objetos

BO

LO

VO

Business Object

Layer Object

Value Object

|Arquitetura Orientada a...

Dados Função

Dados Função

usuario.h usuario.c

Dados Função

usuario.h usuario.c

Objeto

Usuario.java

ObjetoUsuario

ContaBean ContaFacade

public void deposita(int codigo, double valor){

//...}

public void setSaldo(double valor)

public double getSaldo()

EntityConta

public void deposita(double valor) {

this.saldo += valor;}

SessionBean?DTO?

Fornecedor f = ...;List<Conta> contas = dao.listaContasDoFornecedor(fornecedor, 1999);for(Conta conta : contas) {

PrintStream stream = new PrintStream(conta.getNome());stream.println(conta.getValor());

}

Fornecedor f = ...;for(Conta conta : fornecedor.getContasDesde(1999)) {

conta.geraRelatorio();}

|Domain-Driven Design

Set<Strategy> strategies = new HashSet<Strategy>();Indicator<Double> close = new ClosePriceIndicator(timeSeries);for (int i = 1; i <= 50; i++) { Indicator<Double> tracker = new EMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); strategies.add(strategy);}

JRuby:(1..50).paraCada{|x|

cruza(fechamento, media(x))}

|Domain-Specific Languages

MDD = DDD & DSL & ...

Arquitetura de

Serviços

SOAP +

WSDL +

UDDI

|SOA

SOAP +

WSDL +

UDDI?

|SOA

● FTP● Puro texto● JSON● XML (POX)● SOAP● Mashups● CORBA, DCOM, CBD...

Same Old Architecture

|SOA Alternativo

<?xml version="1.0" encoding="utf-8" ?><rsp stat="ok">

<photos page="1" pages="5" perpage="100" total="500"><photo id="1474037512" title="Day 344" /><photo id="1471794015" title="Just Surfing" /><photo id="1471516469" title="New Banksy piece! />

</photos></rsp>

http://api.flickr.com/services/rest/?method=flickr.interestingness.getList

|SOA Alternativo - Flickr

ArquiteturasdeReferência

Não seja

Dr. Robotnik

|Concluindo

|Referências● GUJ: http://www.guj.com.br/

● Memcached: http://www.danga.com/memcached/

● RESTful Web Services: http://java.sun.com/developer/technicalArticles/WebServices/restful/

● Domain-Driven Design: http://domaindrivendesign.org/

● Domain-Specific Languages in Java: http://www.nealford.com/mypastconferences.htm

● Domain-Specific Languages Lab: http://fragmental.tw

● Anos 80: http://www.viva80.blogspot.com/

● JSR223: Scripting for the JavaTM Platform: http://jcp.org/en/jsr/detail?id=223

Palestra do Jeveaux sobre JavaScripting 14:30 HOJE!'

Obrigado!