Arquitetura Java em 2007 (Java Architecture in 2007)

8,166 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,166
On SlideShare
0
From Embeds
0
Number of Embeds
6,661
Actions
Shares
0
Downloads
43
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Arquitetura Java em 2007 (Java Architecture in 2007)

  1. 1. Arquitetura Java em 2007 http://www.caelum.com.br http://blog.fragmental.com.br
  2. 2. Quem? Phillip Calçado “Shoes” Paulo Silveira ● Arquiteto ● Arquiteto ● Membro IASA ● Fundador do GUJ ● Coordenador ● Consultor Caelum Globo.com ● Mestre em CC ● RioJUG Leader ● Coordenador GUJ
  3. 3. Lembra?
  4. 4. Distribuindo Objetos
  5. 5. |Cluster?
  6. 6. |Cluster?
  7. 7. |Cluster?
  8. 8. |Cluster?
  9. 9. |Cache Replicado?
  10. 10. |Cache Replicado?
  11. 11. |Cache Replicado?
  12. 12. |Cache Replicado?
  13. 13. |Cache Replicado?
  14. 14. |Cache Replicado?
  15. 15. |Cache Replicado? (na verdade)
  16. 16. |Cache Replicado? (na verdade)
  17. 17. |Cache Replicado? (na verdade)
  18. 18. |Cache Replicado? (na verdade)
  19. 19. Distribuindo Objetos? 1a Lei de Fowler Sobre Objetos Distribuídos: NÃO DISTRIBUA SEUS OBJETOS!
  20. 20. |Cache sem replicação
  21. 21. Modelando Objetos
  22. 22. |Arquitetura Orientada a... BO Business Object LO Layer Object VO Value Object
  23. 23. Dados Função
  24. 24. Dados Função usuario.h usuario.c
  25. 25. Objeto Dados Função usuario.h usuario.c
  26. 26. Objeto Usuario Usuario.java
  27. 27. ContaBean ContaFacade public void setSaldo public void deposita (double valor) (int codigo, double valor){ public double getSaldo() //... }
  28. 28. Entity Conta public void deposita (double valor) { this.saldo += valor; } SessionBean? DTO?
  29. 29. |Domain-Driven Design 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(); }
  30. 30. |Domain-Specific Languages 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)) }
  31. 31. MDD = DDD & DSL & ...
  32. 32. Arquitetura de Serviços
  33. 33. |SOA SOAP + WSDL + UDDI
  34. 34. |SOA ? SOAP + WSDL + UDDI
  35. 35. |SOA Alternativo ● FTP ● Puro texto ● JSON ● XML (POX) ● SOAP ● Mashups ● CORBA, DCOM, CBD... Same Old Architecture
  36. 36. |SOA Alternativo - Flickr <?xml version=quot;1.0quot; encoding=quot;utf-8quot; ?> <rsp stat=quot;okquot;> <photos page=quot;1quot; pages=quot;5quot; perpage=quot;100quot; total=quot;500quot;> <photo id=quot;1474037512quot; title=quot;Day 344quot; /> <photo id=quot;1471794015quot; title=quot;Just Surfingquot; /> <photo id=quot;1471516469quot; title=quot;New Banksy piece! /> </photos> </rsp> http://api.flickr.com/services/rest/?method=flickr.interestingness.getList
  37. 37. Arquiteturas de Referência
  38. 38. |Concluindo Não seja Dr. Robotnik
  39. 39. |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!'
  40. 40. Obrigado!

×