Arquitetura Java em 2007 (Java Architecture in 2007)

53
Arquitetura Java em 2007 http://www.caelum.com.br http://blog.fragmental.com.br

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)

Page 1: Arquitetura Java em 2007 (Java Architecture in 2007)

Arquitetura Java em 2007

http://www.caelum.com.br

http://blog.fragmental.com.br

Page 2: Arquitetura Java em 2007 (Java Architecture in 2007)

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

Page 3: Arquitetura Java em 2007 (Java Architecture in 2007)

Lembra?

Page 4: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 5: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 6: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 7: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 8: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 9: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 10: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 11: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 12: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 13: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 14: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 15: Arquitetura Java em 2007 (Java Architecture in 2007)

Distribuindo Objetos

Page 16: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cluster?

Page 17: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cluster?

Page 18: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cluster?

Page 19: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cluster?

Page 20: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado?

Page 21: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado?

Page 22: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado?

Page 23: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado?

Page 24: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado?

Page 25: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado?

Page 26: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado? (na verdade)

Page 27: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado? (na verdade)

Page 28: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado? (na verdade)

Page 29: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache Replicado? (na verdade)

Page 30: Arquitetura Java em 2007 (Java Architecture in 2007)

Distribuindo Objetos?

1a Lei de Fowler Sobre Objetos Distribuídos:

NÃO DISTRIBUASEUS OBJETOS!

Page 31: Arquitetura Java em 2007 (Java Architecture in 2007)

|Cache sem replicação

Page 32: Arquitetura Java em 2007 (Java Architecture in 2007)

Modelando Objetos

Page 33: Arquitetura Java em 2007 (Java Architecture in 2007)

BO

LO

VO

Business Object

Layer Object

Value Object

|Arquitetura Orientada a...

Page 34: Arquitetura Java em 2007 (Java Architecture in 2007)

Dados Função

Page 35: Arquitetura Java em 2007 (Java Architecture in 2007)

Dados Função

usuario.h usuario.c

Page 36: Arquitetura Java em 2007 (Java Architecture in 2007)

Dados Função

usuario.h usuario.c

Objeto

Page 37: Arquitetura Java em 2007 (Java Architecture in 2007)

Usuario.java

ObjetoUsuario

Page 38: Arquitetura Java em 2007 (Java Architecture in 2007)

ContaBean ContaFacade

public void deposita(int codigo, double valor){

//...}

public void setSaldo(double valor)

public double getSaldo()

Page 39: Arquitetura Java em 2007 (Java Architecture in 2007)

EntityConta

public void deposita(double valor) {

this.saldo += valor;}

SessionBean?DTO?

Page 40: Arquitetura Java em 2007 (Java Architecture in 2007)

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

Page 41: Arquitetura Java em 2007 (Java Architecture in 2007)

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

Page 42: Arquitetura Java em 2007 (Java Architecture in 2007)

MDD = DDD & DSL & ...

Page 43: Arquitetura Java em 2007 (Java Architecture in 2007)

Arquitetura de

Serviços

Page 44: Arquitetura Java em 2007 (Java Architecture in 2007)

SOAP +

WSDL +

UDDI

|SOA

Page 45: Arquitetura Java em 2007 (Java Architecture in 2007)

SOAP +

WSDL +

UDDI?

|SOA

Page 46: Arquitetura Java em 2007 (Java Architecture in 2007)

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

Same Old Architecture

|SOA Alternativo

Page 47: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 48: Arquitetura Java em 2007 (Java Architecture in 2007)

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

Page 49: Arquitetura Java em 2007 (Java Architecture in 2007)

ArquiteturasdeReferência

Page 50: Arquitetura Java em 2007 (Java Architecture in 2007)
Page 51: Arquitetura Java em 2007 (Java Architecture in 2007)

Não seja

Dr. Robotnik

|Concluindo

Page 52: Arquitetura Java em 2007 (Java Architecture in 2007)

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

Page 53: Arquitetura Java em 2007 (Java Architecture in 2007)

Obrigado!