Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[Jornada Java] - Java: da orientação a objetos a aplicações web reativas

[Jornada Java] - Java: da orientação a objetos a aplicações web reativas

More Decks by Kamila de fatima santos oliveira

Other Decks in Programming

Transcript

  1. Java: da orientação a objetos a aplicações web reativas Um

    Overview de pilares da POO, boas práticas e uma breve introdução à programação reativa com Java @kamilah_santos
  2. SOLID @kamilah_santos Conjunto de boas práticas de desenvolvimento que facilitam

    a adição de novas features, manutenção e correção de bugs
  3. S = Single responsibility principle - Prinípio da responsabilidade única

    @kamilah_santos Uma classe deve ter uma e somente uma responsabilidade, se tiver mais de uma devemos refatorar.
  4. O = Open/closed principle - Princípio do Aberto/Fechado @kamilah_santos Devemos

    ser capazes de estender um comportamento de determinada classe sem precisar modificá-lo, pode ter seu comportamento alterado com facilidade se necessário porém através herança,interface….
  5. L : Liskov substitution principle Princípio da substituição de Liskov

    @kamilah_santos As classes derivadas devem poder ser substituíveis pelas classes bases
  6. I : Interface segregation principle - Princípio da segregação de

    interfaces @kamilah_santos Melhor ter várias interfaces específicas do que um interface geral, crie interfaces granulares para cada “cliente”
  7. D: Dependency inversion principle - Princípio da inversão de dependência

    @kamilah_santos Dependa das abstrações, não das implementações, as abstrações tem menores alterações e facilitam a implementação.
  8. MESSAGE DRIVEN Aplicações reativas dependem da passagem de mensagens assíncronas

    para estabelecer um limite entre os componentes, garantindo um acoplamento flexível , isolamento e transparência @kamilah_santos
  9. A reactive Stream specification visa padronizar as bibliotecas de Programação

    Reativa na JVM e, mais importante, especificar como elas devem se comportar para serem interoperáveis @kamilah_santos
  10. Publisher produz dados, mas só fara algo quando tiver uma

    subscription para fazer o push desses dados @kamilah_santos
  11. Pode emitir de 0 a n eventos, e também onNext,

    onError e onComplete @kamilah_santos
  12. Emite no máximo um evento, podendo ser onNext, On Error

    e onComplete também @kamilah_santos
  13. é possível trabalhar a nível socket e criar seus próprios

    protocolos de comunicação @kamilah_santos
  14. para essas configurações de servidor NIO e bom ter conhecimento

    das threads, event loop, buffers e gerenciamento de memória @kamilah_santos
  15. Referências https://tech.io/playgrounds/929/reactive-programming-with-reactor- 3/transform https://www.callicoder.com/reactive-rest-apis-spring-webflux- reactive-mongo/ http://reactivex.io/languages.html https://projectreactor.io/ http://www.trieu.xyz/2019/04/netty-cookbook.html https://dzone.com/articles/build-a-simple-netty-application-with- and-without

    https://www.baeldung.com/netty https://developer.okta.com/blog/2018/09/21/reactive-programming- with-spring https://speakerdeck.com/olehdokuka/get-reactive-with-project- reactor-and-spring-5 https://speakerdeck.com/kamilahsantos/2020-d0013e50-afdf-4e9c- b411-7f22d2f3d64c https://speakerdeck.com/kamilahsantos/tdc-floripa-melhorando-a- performance-e-legibilidade-de-aplicacoes-java-com-spring-web-flux @kamilah_santos