Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[Jornada Java] - Java: da orientação a objetos ...
Search
Kamila de fatima santos oliveira
June 27, 2020
Programming
480
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[Jornada Java] - Java: da orientação a objetos a aplicações web reativas
Kamila de fatima santos oliveira
June 27, 2020
More Decks by Kamila de fatima santos oliveira
See All by Kamila de fatima santos oliveira
Tirando sua startup do papel com github spark + github copilot
kamilahsantos
0
69
De java para Kotlin: Como aprender e liderar times nessa linguagem
kamilahsantos
0
110
Quarkus-Club-criando-arquiteturas-escalaveis-na-pratica
kamilahsantos
1
100
System design 101 - Java day Noroeste
kamilahsantos
2
150
[Thasfin + Orange Juice na CPBR] Minha aplicação virou um monstrinho e agora ?
kamilahsantos
1
110
Minha aplicação virou um monstrinho e agora?
kamilahsantos
2
160
Spring + Localstack : usando aws de forma gratuita
kamilahsantos
2
310
Hacktoberfest DevsJavaGirl
kamilahsantos
0
200
[We are developers Java developer day ] - I will have to refactor ! And now ? Refactoring Techniques in Java
kamilahsantos
1
180
Other Decks in Programming
See All in Programming
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
6
2k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
1.9k
一人だけ、Kiroが静止する日
hideg
0
110
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
200
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
AHC070解法紹介
eijirou
0
120
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
330
新卒PdEのリアル
ryu1013
1
500
What We Talk About When We Talk About XP
m_seki
2
630
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
170
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
250
Featured
See All Featured
Everyday Curiosity
cassininazir
0
320
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Embracing the Ebb and Flow
colly
88
5.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The SEO Collaboration Effect
kristinabergwall1
1
560
Transcript
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
Kamila Santos Backend Developer @kamilah_santos
Comunidades
Vale lembrar: @kamilah_santos
Pilares da orientação a objetos @kamilah_santos
Abstração @kamilah_santos precisamos imaginar o que esse objeto irá realizar
dentro de nosso sistema
Abstração @kamilah_santos identidade ao objeto que vamos criar
Abstração @kamilah_santos Características desse objeto, as chamadas propriedades
Abstração @kamilah_santos Esse objeto será capaz de executar ações ,
que chamamos de métodos
Encapsulamento @kamilah_santos "protege/esconde" objetos do restante da aplicação, utilizamos getters
e setters para definir e acessar esses valores
Polimorfismo @kamilah_santos Alteramos o funcionamento interno de um método herdado
do objeto pai
Herança @kamilah_santos classe filha herda comportamentos da classe pai
S.O.L.I.D @kamilah_santos
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
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.
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….
L : Liskov substitution principle Princípio da substituição de Liskov
@kamilah_santos As classes derivadas devem poder ser substituíveis pelas classes bases
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”
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.
Manifesto Reativo @kamilah_santos
https://www.reactivemanifesto.org/pt-BR @kamilah_santos
Responsivo O sistema responde em tempo hábil, se possível @kamilah_santos
Resiliente O sistema permanece responsivo diante de falhas @kamilah_santos
Elástico O sistema permanece responsivo diante de uma carga de
trabalho variável. @kamilah_santos
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
Maior uso das features funcionais/reativas do java @kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
Spring Web Flux @kamilah_santos
Spring 5 abriu para o paradigma reativo e introduziu o
WebFlux @kamilah_santos
Ele é uma estrutura assíncrona, podendo ser executada usando Servlet
3.1 NIO API @kamilah_santos
E também com ambientes em tempo de execução como o
Netty @kamilah_santos
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
Bibliotecas @kamilah_santos
Reactor @kamilah_santos
Publisher produz dados, mas só fara algo quando tiver uma
subscription para fazer o push desses dados @kamilah_santos
https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Intro @kamilah_santos
Flux @kamilah_santos
Pode emitir de 0 a n eventos, e também onNext,
onError e onComplete @kamilah_santos
@kamilah_santos
@kamilah_santos
Mono @kamilah_santos
Emite no máximo um evento, podendo ser onNext, On Error
e onComplete também @kamilah_santos
@kamilah_santos
@kamilah_santos
Reactor Core @kamilah_santos
Reactor Netty @kamilah_santos
Reactor Test @kamilah_santos
Netty @kamilah_santos
Estrutura de IO não bloqueante e assíncrona @kamilah_santos
utilizada para dev de servidores altamente escaláveis @kamilah_santos
é possível trabalhar a nível socket e criar seus próprios
protocolos de comunicação @kamilah_santos
para essas configurações de servidor NIO e bom ter conhecimento
das threads, event loop, buffers e gerenciamento de memória @kamilah_santos
@kamilah_santos
@kamilah_santos
E como isso melhora minhas aplicações? @kamilah_santos
Utilizando webflux é mais fácil usar as features funcionais/reativas do
java @kamilah_santos
Logo, menos código, a legibilidade melhora @kamilah_santos
Netty é assincrono e não bloqueante @kamilah_santos
Exemplo @kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
@kamilah_santos
Demo: https://github.com/Kamilahsantos/thedevconf-demo- SpringWebFlux-SuperHeroesApi @kamilah_santos
Obrigada <3
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