Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos

230 views

Published on

Presented on Java EE track at The Developer's Conference em São Paulo

Published in: Software
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos

  1. 1. Globalcode – Open4education Construindo um microserviço JavaEE 100% funcional em 30 minutos Rafael Chaves rafael@abstratt.com - @abstratt
  2. 2. Globalcode – Open4education Palestrante Formação: bacharel (2000) e mestre (2004) em Computação pela UFSC Passado: • OTI/IBM Canada: Eclipse (2002-2005), Jazz/Team Concert (2005-2006) • Genologics: Desenvolvedor Senior/Arquiteto (2008-2012) Recente: • Desenvolvendo Cloudfier (2012-) • EasyAlpha: serviço de desenvolvimento expresso de MVPs (2016-)
  3. 3. Globalcode – Open4education Objetivo Construir um back-end / micro-serviço / “self-contained-system” simples com JavaEE • API REST usando JAX-RS • Persistência em BD relacional usando JPA • Lógica de negócios em Java/JPA • Testes em JUnit • Bônus: GUI “admin” em Angular
  4. 4. Globalcode – Open4education Arquitetura-alvo
  5. 5. Globalcode – Open4education A aplicação exemplo: Tarefas do time 1. Tarefas e Colaboradores✔ 2. Colaboradores podem completar tarefas✔ 3. Colaboradores podem repassar tarefas✔ 4. Detalhes (opcionais) na tarefa 5. Permitir reabrir tarefa 6. Apenas colaborador pode completar tarefa
  6. 6. Globalcode – Open4education DEMO 1 Aplicação exemplo
  7. 7. Globalcode – Open4education Como? Usando uma linguagem de mais alto nível que Java (ou Ruby, Python, Scala, Javascript...) Separando solucão conceitual e arquitetura Sem escrever nenhuma linha de código Java (ou JavaScript) “no braço” Implementação JavaEE 100% obtida via tradução automática
  8. 8. Globalcode – Open4education Por quê? Abstração mais alta ⇒ melhor compreensão do negócio do cliente Separação negócio/tecnologia ⇒ reuso, especialização Automação ⇒ produtividade, custo, qualidade 100% geração ⇒ impacto permanente no desenvolvimento
  9. 9. Globalcode – Open4education Completando a aplicação exemplo 1. Tarefas e Colaboradores✔ 2. Colaboradores podem completar tarefas✔ 3. Colaboradores podem repassar tarefas✔ 4. Detalhes (opcionais) na tarefa 5. Permitir reabrir tarefa 6. Apenas colaborador pode completar tarefa
  10. 10. Globalcode – Open4education Tempo de desenvolvimento vs. tempo de implantação • Nem sempre podemos escolher a plataforma de implementação • Mas deveríamos ter liberdade sobre a linguagem usada em tempo de desenvolvimento • A melhor plataforma de implementação hoje não será a mesma em um ano
  11. 11. Globalcode – Open4education Em busca de uma linguagem para aplicações de negócios Que forneça mecanismos que permitam modelar o domínio do problema de forma mais natural Que permita criar soluções independentes de arquitetura Que ofereça boa usabilidade para programadores
  12. 12. Globalcode – Open4education Que linguagem suporta... • Classes, atributos, operações? • Comportamento imperativo? • Eventos, comunicação por mensagens? • Relacionamentos? • Atributos derivados? • Restrições: pré-condições, invariantes? • Máquinas de estado?
  13. 13. Globalcode – Open4education Java?
  14. 14. Globalcode – Open4education Java • Classes, atributos, operações? ✔ • Comportamento imperativo? ✔ • Eventos, comunicação por mensagens? ✘ • Relacionamentos? ✘ • Atributos derivados? ✘ • Restrições: pré-condições, invariantes? ✘ • Máquinas de estado? ✘
  15. 15. Globalcode – Open4education Python?
  16. 16. Globalcode – Open4education Ruby?
  17. 17. Globalcode – Open4education Scala?
  18. 18. Globalcode – Open4education C#?
  19. 19. Globalcode – Open4education UML!
  20. 20. Globalcode – Open4education UML?! “Mas UML não é aquela linguagem gráfica que o analista de negócios e a arquiteta vivem insistindo para que a gente use mas que eu sei que é uma grande perda de tempo?!” - um Programador Pragmático
  21. 21. Globalcode – Open4education UML • Classes, atributos, operações ✔ • Comportamento imperativo ✔ • Eventos, comunicação por mensagens ✔ • Relacionamentos ✔ • Atributos derivados ✔ • Restrições: pré-condições, invariantes ✔ • Máquinas de estado ✔
  22. 22. Globalcode – Open4education UML: uma linguagem superior para aplicações de negócios? Que forneça mecanismos que permitam modelar o domínio do problema de forma mais natural ✔ Que permita criar soluções independentes de arquitetura ✔ Que ofereça boa usabilidade para programadores ✘ Diagramas são insuficientes para especificar comportamento
  23. 23. Globalcode – Open4education Para “visão geral” Texto < Diagramas
  24. 24. Globalcode – Open4education Para detalhes Texto > Diagramas
  25. 25. Globalcode – Open4education Para programadores Texto > Diagramas
  26. 26. Globalcode – Open4education UML e múltiplas notações Sintaxe abstrata Semântica Sintaxe concreta A Sintaxe concreta B Sintaxe concreta C Sintaxe concreta Z ...
  27. 27. Globalcode – Open4education TextUML: sintaxe UML para programadores Por que textual? Texto é a melhor notação para modelar comportamento (ok para outras áreas) Mesmo nível de abstração que a notação gráfica (mesma semântica/sintaxe abstrata) Apenas elementos úteis para construção de software (classes, máquinas de estado, atividades)
  28. 28. Globalcode – Open4education Geração de código JavaEE
  29. 29. Globalcode – Open4education Gerando a aplicação: entidades • Entidade -> entidade JPA (elementos de instância) • Entidade -> serviço JPA (CRUD e elementos de classe) • Entidade -> resource JAX-RS • Entidade -> serializador entidade JPA como Map/JSON
  30. 30. Globalcode – Open4education Atributos
  31. 31. Globalcode – Open4education Atributos em entidades JPA
  32. 32. Globalcode – Open4education Relacionamentos
  33. 33. Globalcode – Open4education Relacionamentos em entidades JPA
  34. 34. Globalcode – Open4education Ações
  35. 35. Globalcode – Open4education Ações em entidades JPA
  36. 36. Globalcode – Open4education Ações em resources JAX-RS
  37. 37. Globalcode – Open4education Consultas
  38. 38. Globalcode – Open4education Consultas em serviços JPA
  39. 39. Globalcode – Open4education Consultas em resources JAX-RS
  40. 40. Globalcode – Open4education Consultas em resources JAX-RS
  41. 41. Globalcode – Open4education Máquinas de estado
  42. 42. Globalcode – Open4education Máquinas de estado
  43. 43. Globalcode – Open4education Máquinas de estado em entidade JPA
  44. 44. Globalcode – Open4education Permissões
  45. 45. Globalcode – Open4education Permissões em entidade JPA
  46. 46. Globalcode – Open4education Permissões em resource JAX-RS
  47. 47. Globalcode – Open4education Casos de teste
  48. 48. Globalcode – Open4education Casos de teste em JUnit
  49. 49. Globalcode – Open4education Bônus: documentação para analistas de negócio
  50. 50. Globalcode – Open4education Bônus: documentação para analistas de negócio
  51. 51. Globalcode – Open4education Cloudfier • Ambiente de modelagem (Text)UML na web • Prototipação, testes, geração de código http://github.com/abstratt/cloudfier http://cloudfier.com
  52. 52. Globalcode – Open4education Xtend • Linguagem para JVM • Excelente para implementar geradores de código https://www.eclipse.org/xtend/
  53. 53. Globalcode – Open4education kirra-angular • Biblioteca Javascript standalone • GUI dinâmica para APIs REST http://github.com/abstratt/kirra-angular
  54. 54. Globalcode – Open4education Construindo um microserviço JavaEE 100% funcional em 30 minutos Rafael Chaves rafael@abstratt.com - @abstratt

×