SlideShare uma empresa Scribd logo
O uso de PWA e o futuro do
desenvolvimento mobile com
React Native e Kotlin
David Robert - Elo7
David Robert
linkedin.com/in/davidrobert
davidrobert@gmail.com
❏ Mestre em Inteligência Artificial -
USP
❏ Graduado em Ciência da
Computação - PUC/SP
❏ Oficial da Arma de Comunicações -
Exército Brasileiro
❏ +16 anos trabalhando com
desenvolvimento de software
❏ CTO @ Elo7
3
marketplace de produtos fora de série
Elo7
Android
Talk7
Android
Elo7
Web Mobile
Mobile
Arquitetura Mobile
Elo7
iOS
Talk7
iOS
Talk7
Web Mobile
Web Mobile
❏ Confiável - Carrega instantaneamente mesmo em condições de
rede incertas
❏ Rápido - Responde rapidamente às interações do usuário com
animações suaves e sem intermitência de scroll
❏ Cativante - Experiência de usuário imersiva como se fosse um
aplicativo nativo
PWA - Progressive Web Apps
Offline
Local Storage
localStorage.setItem("bgcolor", "red")
var currentColor = localStorage.getItem("bgcolor")
localStorage.removeItem("bgcolor")
❏ Amplo suporte nos navegadores
❏ Sincrono
❏ Limite de capacidade de armazenamento
Offline
Application Cache CACHE MANIFEST
# 2017-06-27:v2
CACHE:
favicon.ico
index.html
agenda.html
inscricoes.html
css/main.css
js/main.js
images/logo.png
NETWORK:
*
<html manifest="appcache.manifest">
Progressive Web Apps
Service Workers
Script que o navegador executa em segundo plano separado da página da Web
❏ Proxy de rede programável
❏ Encerrado quando ocioso e reiniciado quando necessário novamente
❏ Pode estar executando mesmo que todas as abas do site estejam
fechadas no navegador!
❏ Assíncrono - Uso intenso de Promise
Exemplos de recursos:
➔ notificações por push
➔ sincronização em segundo plano
Progressive Web Apps
Service Workers & Cache Storage
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open('front7').then(function(cache) {
return cache.addAll([
"favicon.ico",
"index.html",
"agenda.html",
"inscricoes.html",
"css/main.css",
"js/main.js",
"images/logo.png"]);
})
);
});
Progressive Web Apps
Service Workers & Cache Storage
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response){
return response || fetch(event.request.clone());
})
);
});
❏ Os service workers são responsáveis
por habilitar o PWA para carregar
instantaneamente,
independentemente do estado da
rede
❏ Service workers são como um proxy
do lado do cliente e com poder de
controlar o cache, podendo eliminar a
dependência da rede, garantindo uma
experiência instantânea e confiável
para os usuários
Progressive Web Apps
Confiável
❏ 53% dos usuários abandonam um
site quando demora mais de 3
segundos para carregar!
❏ E uma vez carregados, os
usuários esperam que eles sejam
rápidos
Progressive Web Apps
Rápido
PWAs podem ser instaláveis e não tem a
necessidade de uma loja de aplicativos.
Oferece uma experiência full screen
imersiva, além da possibilidade
re-engajar usuários com push
notifications
O Web App Manifest permite o controle
como o aplicativo aparece, podendo
especificar os ícones, a página carregada
quando o aplicativo é iniciado, orientação
da tela entre outros
Progressive Web Apps
Cativante
Progressive Web Apps
Desempenho
❏ Otimizar eficiência do conteúdo
❏ Caminho crítico de renderização
❏ Largura de banda pequena e
latência alta
❏ PRPL (push, render, pre-cache e
lazy-load)
❏
Progressive Web Apps
Desempenho
❏ Otimizar eficiência do conteúdo
❏ Caminho crítico de renderização
❏ Largura de banda pequena e
latência alta
❏ PRPL (push, render, pre-cache e
lazy-load)
❏
Progressive Web Apps
Desempenho
❏ Otimizar eficiência do conteúdo
❏ Caminho crítico de renderização
❏ Largura de banda pequena e
latência alta
❏ PRPL (push, render, pre-cache e
lazy-load)
Progressive Web Apps
Desempenho
❏ Otimizar eficiência do conteúdo
❏ Caminho crítico de renderização
❏ Largura de banda pequena e
latência alta
❏ PRPL (sigla para push, render,
pre-cache e lazy-load)
❏
➔ Push (enviar) recursos críticos
para a rota do URL inicial.
➔ Render (renderizar) a rota inicial.
➔ Pre-cache (armazenar em cache)
as demais rotas.
➔ Lazy-load (carregar com atraso) e
criar demais rotas de acordo com
a ação do usuário.
Progressive Web Apps
Notificações e Push na Web
❏ As notificações por push na web
permitem que os usuários
aceitem atualizações dos sites
❏ Push é invocado quando um
servidor fornece informações a
um service worker
❏ Notificação é a ação de um
service worker ou script de
página web de exibir
informações a um usuário
Progressive Web Apps
Push Web no Elo7
❏ Conversão web mobile ~0.9
❏ Conversão com push web ~2.5
Native Mobile
Elo7
Android
Talk7
Android
Elo7
Web Mobile
Mobile
Arquitetura Mobile
Elo7
iOS
Talk7
iOS
Talk7
Web Mobile
Mobile
React Native
React Native
Framework para construir aplicativos nativos
React
ReactJS & React Native
React NativeReactJS
VS
React
ReactJS & React Native
javascript library framework
React NativeReactJS
VS
Características
❏ Mobile Web App
❏ HTML5 app
❏ App híbrido
❏
React Native
❏ Indistinguível de apps
feitos com Objective-C,
Swift, Java ou Kotlin
❏ Permite mesclar com
código nativo
❏
React Native
Vantagens
❏ Compartilhamento de código entre
plataformas
❏ Arquitetura bem mais próxima do que é
utilizado na web
❏ Mais performático que webview
React Native
Pontos de Atenção
❏ Outra linguagem de programação - JavaScript
❏ Framework novo - versão beta
❏ Dependência do Facebook em acompanhar
evolução das plataformas
❏ Algumas partes do aplicativo vão continuar
sendo nativo (Java ou Swift)
❏ Aumento do tamanho dos aplicativos
Alguns aplicativos que já utilizam
React Native
React Native
Próximas Etapas no Elo7
❏ Ampliar a utilização de React
❏ Começar a utilização de React nos
aplicativos comprador Android - Elo7
1. iOS Talk7 - 22.3 MB
2. Android Talk7 - 30 MB
3. iOS Elo7 (sem react) - 24.5 MB
4. Android Elo7 (sem react) - 20 MB
Kotlin
Nova linguagem oficial para desenvolvimento
Android nativo
Mobile
Kotlin
Kotlin
Hello World
package hello
fun main(args: Array<String>) {
println("Hello World!")
}
❏ Linguagem de programação estaticamente tipada que roda
na JVM
❏ Funcional e Orientada a Objetos
❏ Lançada em 2011 pela JetBrains
❏ Em 2012 se tornou open source
❏ A versão 1.0 foi lançada em 2016
❏ No IO'17 Google anuncia suporte oficial do Kotlin no
desenvolvimento Android
Kotlin
Características
Kotlin
Características
Conciso Seguro
Ferramentas
Amigáveis
Conciso
POJO com getters, setters, equals(), hashCode(), toString() e copy() em uma linha:
Filtrar uma lista usando expressões lambda:
Singleton? Criando um objeto:
data class Customer(val name: String, val email: String, val company: String)
val positiveNumbers = list.filter { it > 0 }
object ThisIsASingleton {
val companyName: String = "JetBrains"
}
NullPointerExceptions:
Erros com tipos nulos:
Auto Cast:
Seguro
var output: String
output = null // Compilation error
val name: String? = null // Nullable type
println(name.length()) // Compilation error
fun calculateTotal(obj: Any) {
if (obj is Invoice)
obj.calculateTotal()
}
Android Studio
Ferramentas
Amigáveis
❏ Novas capacidades que ainda não há no Java como:
❏ Null safety
❏ Funções estendidas
❏ Lambdas
❏ Imutabilidade
❏ Muitas outras aqui
❏ 100% interoperável com Java, gerando bytecode da JVM
❏ Curva de aprendizado baixa para quem vem do Java
Kotlin
Vantagens
❏ App maior pois o Kotlin tem sua própria biblioteca que é
adicionada ao aplicativo
❏ Tempo de compilação com Gradle mais lento que Java
Kotlin
Desvantagens
❏ É possível ter código Java e Kotlin em um mesmo
aplicativo, estes códigos podem inclusive referenciar e usar
um ao outro
❏ O Google implementou funcionalidades no Android Studio
para facilitar a interoperabilidade, como por exemplo,
copiar código Java e ao colar, é automaticamente
transformado em Kotlin
❏ Não é necessário reescrever aplicativos em Kotlin!
Kotlin
Migração
Por onde começar
Mão na Massa
➔ https://developers.google.com/web/progressive-web-apps
➔ https://facebook.github.io/react-native
➔ https://kotlinlang.org
➔ https://www.alura.com.br
➔ http://engenharia.elo7.com.br
David Robert
linkedin.com/in/davidrobert
david.robert@elo7.com
Obrigado!

Mais conteúdo relacionado

Mais procurados

Programadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavamProgramadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavam
Paulo Mattos
 
Introdução a golang
Introdução a golangIntrodução a golang
Introdução a golang
Leandro Lugaresi
 
Alta produtividade em Java EE com Groovy e Grails
Alta produtividade em Java EE com Groovy e GrailsAlta produtividade em Java EE com Groovy e Grails
Alta produtividade em Java EE com Groovy e Grails
Henrique Weissmann
 
GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?
Wender Machado
 
Go ou Golang: a jogada da Google pra salvar ela mesma
Go ou Golang: a jogada da Google pra salvar ela mesmaGo ou Golang: a jogada da Google pra salvar ela mesma
Go ou Golang: a jogada da Google pra salvar ela mesma
Marcelo Pisani Garib
 
Simplificando o Build do Android
Simplificando o Build do AndroidSimplificando o Build do Android
Simplificando o Build do Android
Daniela Schwab
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na Prática
Douglas Aguiar
 
Apresentando Groovy e Grails
Apresentando Groovy e GrailsApresentando Groovy e Grails
Apresentando Groovy e Grails
Ricardo Wendell Rodrigues da Silveira
 
Teste de software
Teste de softwareTeste de software
Teste de software
Randerson Mayllon
 
Onde posso ir como “dev”
Onde posso ir como “dev”Onde posso ir como “dev”
Onde posso ir como “dev”
Rodrigo Wanderley de Melo Cardoso
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Letticia Nicoli
 
Produtividade no back end - Frameworks PHP
Produtividade no back end - Frameworks PHPProdutividade no back end - Frameworks PHP
Produtividade no back end - Frameworks PHP
Vinicius Dias
 
Casperjs-tdc-2016.ppt
Casperjs-tdc-2016.pptCasperjs-tdc-2016.ppt
Casperjs-tdc-2016.ppt
Rodrigo Freitas
 
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyPython Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Julio Cesar Eiras Melanda
 
Como ser-um-programador-melhor
Como ser-um-programador-melhorComo ser-um-programador-melhor
Como ser-um-programador-melhor
Marcos Paulo
 
Jenkins
JenkinsJenkins
Jenkins
Emmanuel Neri
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
Marcos Paulo
 
Bdd-Visual Studio Summit 2015
Bdd-Visual Studio Summit 2015Bdd-Visual Studio Summit 2015
Bdd-Visual Studio Summit 2015
Cleiton Felipe Moraes
 
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Igor Abade
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015
Julio Cesar Eiras Melanda
 

Mais procurados (20)

Programadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavamProgramadores: Kiln o controle de versão integrado que vocês esperavam
Programadores: Kiln o controle de versão integrado que vocês esperavam
 
Introdução a golang
Introdução a golangIntrodução a golang
Introdução a golang
 
Alta produtividade em Java EE com Groovy e Grails
Alta produtividade em Java EE com Groovy e GrailsAlta produtividade em Java EE com Groovy e Grails
Alta produtividade em Java EE com Groovy e Grails
 
GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?
 
Go ou Golang: a jogada da Google pra salvar ela mesma
Go ou Golang: a jogada da Google pra salvar ela mesmaGo ou Golang: a jogada da Google pra salvar ela mesma
Go ou Golang: a jogada da Google pra salvar ela mesma
 
Simplificando o Build do Android
Simplificando o Build do AndroidSimplificando o Build do Android
Simplificando o Build do Android
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na Prática
 
Apresentando Groovy e Grails
Apresentando Groovy e GrailsApresentando Groovy e Grails
Apresentando Groovy e Grails
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Onde posso ir como “dev”
Onde posso ir como “dev”Onde posso ir como “dev”
Onde posso ir como “dev”
 
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos.
 
Produtividade no back end - Frameworks PHP
Produtividade no back end - Frameworks PHPProdutividade no back end - Frameworks PHP
Produtividade no back end - Frameworks PHP
 
Casperjs-tdc-2016.ppt
Casperjs-tdc-2016.pptCasperjs-tdc-2016.ppt
Casperjs-tdc-2016.ppt
 
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyPython Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
 
Como ser-um-programador-melhor
Como ser-um-programador-melhorComo ser-um-programador-melhor
Como ser-um-programador-melhor
 
Jenkins
JenkinsJenkins
Jenkins
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
Bdd-Visual Studio Summit 2015
Bdd-Visual Studio Summit 2015Bdd-Visual Studio Summit 2015
Bdd-Visual Studio Summit 2015
 
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015
 

Semelhante a O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin

O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
E-Commerce Brasil
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
Rafael Salerno de Oliveira
 
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
William S. Rodriguez
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)
Fabrício Catae
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
Rodrigo Valerio
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
Messias Batista
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
iMasters
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
Diogo Soares Moreira
 
Workshop frontend
Workshop   frontendWorkshop   frontend
Workshop frontend
Leandro Mancini
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
Rodrigo Kono
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile ServicesConstruindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
William S. Rodriguez
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
Darlan Segalin
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
MarceloRosenbrock1
 
Js everywhere
Js everywhereJs everywhere
Js everywhere
Lucas Brigida
 
Uma visão única da jornada do cliente pelos diferentes dispositivos
Uma visão única da jornada do cliente pelos diferentes dispositivosUma visão única da jornada do cliente pelos diferentes dispositivos
Uma visão única da jornada do cliente pelos diferentes dispositivos
E-Commerce Brasil
 
Phonegap
PhonegapPhonegap
Phonegap
Lucas Brigida
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
Jaydson Gomes
 

Semelhante a O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin (20)

O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Workshop frontend
Workshop   frontendWorkshop   frontend
Workshop frontend
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile ServicesConstruindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Js everywhere
Js everywhereJs everywhere
Js everywhere
 
Uma visão única da jornada do cliente pelos diferentes dispositivos
Uma visão única da jornada do cliente pelos diferentes dispositivosUma visão única da jornada do cliente pelos diferentes dispositivos
Uma visão única da jornada do cliente pelos diferentes dispositivos
 
Phonegap
PhonegapPhonegap
Phonegap
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 

Mais de David Robert Camargo de Campos

Evolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto DesempenhoEvolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto Desempenho
David Robert Camargo de Campos
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenho
David Robert Camargo de Campos
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7
David Robert Camargo de Campos
 
Cultura na engenharia & Impacto no recrutamento
Cultura na engenharia & Impacto no recrutamentoCultura na engenharia & Impacto no recrutamento
Cultura na engenharia & Impacto no recrutamento
David Robert Camargo de Campos
 
Os desafios de um chat integrado ao checkout
Os desafios de um chat integrado ao checkoutOs desafios de um chat integrado ao checkout
Os desafios de um chat integrado ao checkout
David Robert Camargo de Campos
 
Times de Alta Performance
Times de Alta PerformanceTimes de Alta Performance
Times de Alta Performance
David Robert Camargo de Campos
 
Programando em Go
Programando em GoProgramando em Go
An introduction to programming in Go
An introduction to programming in GoAn introduction to programming in Go
An introduction to programming in Go
David Robert Camargo de Campos
 
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
David Robert Camargo de Campos
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
David Robert Camargo de Campos
 
Implementação, design ou arquitetura?
Implementação, design ou arquitetura?Implementação, design ou arquitetura?
Implementação, design ou arquitetura?
David Robert Camargo de Campos
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
David Robert Camargo de Campos
 
Como um grande sistema REST funciona
Como um grande sistema REST funcionaComo um grande sistema REST funciona
Como um grande sistema REST funciona
David Robert Camargo de Campos
 
Dojo abril
Dojo abrilDojo abril
Dicas para deixar seu código mais Robusto
Dicas para deixar seu código mais RobustoDicas para deixar seu código mais Robusto
Dicas para deixar seu código mais Robusto
David Robert Camargo de Campos
 
Robustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefesRobustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefes
David Robert Camargo de Campos
 

Mais de David Robert Camargo de Campos (16)

Evolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto DesempenhoEvolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto Desempenho
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenho
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7
 
Cultura na engenharia & Impacto no recrutamento
Cultura na engenharia & Impacto no recrutamentoCultura na engenharia & Impacto no recrutamento
Cultura na engenharia & Impacto no recrutamento
 
Os desafios de um chat integrado ao checkout
Os desafios de um chat integrado ao checkoutOs desafios de um chat integrado ao checkout
Os desafios de um chat integrado ao checkout
 
Times de Alta Performance
Times de Alta PerformanceTimes de Alta Performance
Times de Alta Performance
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
An introduction to programming in Go
An introduction to programming in GoAn introduction to programming in Go
An introduction to programming in Go
 
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
Implementação, design ou arquitetura?
Implementação, design ou arquitetura?Implementação, design ou arquitetura?
Implementação, design ou arquitetura?
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Como um grande sistema REST funciona
Como um grande sistema REST funcionaComo um grande sistema REST funciona
Como um grande sistema REST funciona
 
Dojo abril
Dojo abrilDojo abril
Dojo abril
 
Dicas para deixar seu código mais Robusto
Dicas para deixar seu código mais RobustoDicas para deixar seu código mais Robusto
Dicas para deixar seu código mais Robusto
 
Robustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefesRobustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefes
 

Último

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 

Último (7)

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 

O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin

  • 1. O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin David Robert - Elo7
  • 2. David Robert linkedin.com/in/davidrobert davidrobert@gmail.com ❏ Mestre em Inteligência Artificial - USP ❏ Graduado em Ciência da Computação - PUC/SP ❏ Oficial da Arma de Comunicações - Exército Brasileiro ❏ +16 anos trabalhando com desenvolvimento de software ❏ CTO @ Elo7
  • 3. 3 marketplace de produtos fora de série
  • 6. ❏ Confiável - Carrega instantaneamente mesmo em condições de rede incertas ❏ Rápido - Responde rapidamente às interações do usuário com animações suaves e sem intermitência de scroll ❏ Cativante - Experiência de usuário imersiva como se fosse um aplicativo nativo PWA - Progressive Web Apps
  • 7.
  • 8.
  • 9.
  • 10. Offline Local Storage localStorage.setItem("bgcolor", "red") var currentColor = localStorage.getItem("bgcolor") localStorage.removeItem("bgcolor") ❏ Amplo suporte nos navegadores ❏ Sincrono ❏ Limite de capacidade de armazenamento
  • 11. Offline Application Cache CACHE MANIFEST # 2017-06-27:v2 CACHE: favicon.ico index.html agenda.html inscricoes.html css/main.css js/main.js images/logo.png NETWORK: * <html manifest="appcache.manifest">
  • 12. Progressive Web Apps Service Workers Script que o navegador executa em segundo plano separado da página da Web ❏ Proxy de rede programável ❏ Encerrado quando ocioso e reiniciado quando necessário novamente ❏ Pode estar executando mesmo que todas as abas do site estejam fechadas no navegador! ❏ Assíncrono - Uso intenso de Promise Exemplos de recursos: ➔ notificações por push ➔ sincronização em segundo plano
  • 13. Progressive Web Apps Service Workers & Cache Storage self.addEventListener('install', function(event) { event.waitUntil( caches.open('front7').then(function(cache) { return cache.addAll([ "favicon.ico", "index.html", "agenda.html", "inscricoes.html", "css/main.css", "js/main.js", "images/logo.png"]); }) ); });
  • 14. Progressive Web Apps Service Workers & Cache Storage self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request).then(function(response){ return response || fetch(event.request.clone()); }) ); });
  • 15. ❏ Os service workers são responsáveis por habilitar o PWA para carregar instantaneamente, independentemente do estado da rede ❏ Service workers são como um proxy do lado do cliente e com poder de controlar o cache, podendo eliminar a dependência da rede, garantindo uma experiência instantânea e confiável para os usuários Progressive Web Apps Confiável
  • 16. ❏ 53% dos usuários abandonam um site quando demora mais de 3 segundos para carregar! ❏ E uma vez carregados, os usuários esperam que eles sejam rápidos Progressive Web Apps Rápido
  • 17. PWAs podem ser instaláveis e não tem a necessidade de uma loja de aplicativos. Oferece uma experiência full screen imersiva, além da possibilidade re-engajar usuários com push notifications O Web App Manifest permite o controle como o aplicativo aparece, podendo especificar os ícones, a página carregada quando o aplicativo é iniciado, orientação da tela entre outros Progressive Web Apps Cativante
  • 18. Progressive Web Apps Desempenho ❏ Otimizar eficiência do conteúdo ❏ Caminho crítico de renderização ❏ Largura de banda pequena e latência alta ❏ PRPL (push, render, pre-cache e lazy-load) ❏
  • 19. Progressive Web Apps Desempenho ❏ Otimizar eficiência do conteúdo ❏ Caminho crítico de renderização ❏ Largura de banda pequena e latência alta ❏ PRPL (push, render, pre-cache e lazy-load) ❏
  • 20. Progressive Web Apps Desempenho ❏ Otimizar eficiência do conteúdo ❏ Caminho crítico de renderização ❏ Largura de banda pequena e latência alta ❏ PRPL (push, render, pre-cache e lazy-load)
  • 21. Progressive Web Apps Desempenho ❏ Otimizar eficiência do conteúdo ❏ Caminho crítico de renderização ❏ Largura de banda pequena e latência alta ❏ PRPL (sigla para push, render, pre-cache e lazy-load) ❏ ➔ Push (enviar) recursos críticos para a rota do URL inicial. ➔ Render (renderizar) a rota inicial. ➔ Pre-cache (armazenar em cache) as demais rotas. ➔ Lazy-load (carregar com atraso) e criar demais rotas de acordo com a ação do usuário.
  • 22. Progressive Web Apps Notificações e Push na Web ❏ As notificações por push na web permitem que os usuários aceitem atualizações dos sites ❏ Push é invocado quando um servidor fornece informações a um service worker ❏ Notificação é a ação de um service worker ou script de página web de exibir informações a um usuário
  • 23. Progressive Web Apps Push Web no Elo7 ❏ Conversão web mobile ~0.9 ❏ Conversão com push web ~2.5
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. Mobile React Native React Native Framework para construir aplicativos nativos
  • 36. React ReactJS & React Native React NativeReactJS VS
  • 37. React ReactJS & React Native javascript library framework React NativeReactJS VS
  • 38. Características ❏ Mobile Web App ❏ HTML5 app ❏ App híbrido ❏ React Native ❏ Indistinguível de apps feitos com Objective-C, Swift, Java ou Kotlin ❏ Permite mesclar com código nativo ❏
  • 39. React Native Vantagens ❏ Compartilhamento de código entre plataformas ❏ Arquitetura bem mais próxima do que é utilizado na web ❏ Mais performático que webview
  • 40. React Native Pontos de Atenção ❏ Outra linguagem de programação - JavaScript ❏ Framework novo - versão beta ❏ Dependência do Facebook em acompanhar evolução das plataformas ❏ Algumas partes do aplicativo vão continuar sendo nativo (Java ou Swift) ❏ Aumento do tamanho dos aplicativos
  • 41. Alguns aplicativos que já utilizam React Native
  • 42. React Native Próximas Etapas no Elo7 ❏ Ampliar a utilização de React ❏ Começar a utilização de React nos aplicativos comprador Android - Elo7 1. iOS Talk7 - 22.3 MB 2. Android Talk7 - 30 MB 3. iOS Elo7 (sem react) - 24.5 MB 4. Android Elo7 (sem react) - 20 MB
  • 43. Kotlin Nova linguagem oficial para desenvolvimento Android nativo Mobile Kotlin
  • 44. Kotlin Hello World package hello fun main(args: Array<String>) { println("Hello World!") }
  • 45. ❏ Linguagem de programação estaticamente tipada que roda na JVM ❏ Funcional e Orientada a Objetos ❏ Lançada em 2011 pela JetBrains ❏ Em 2012 se tornou open source ❏ A versão 1.0 foi lançada em 2016 ❏ No IO'17 Google anuncia suporte oficial do Kotlin no desenvolvimento Android Kotlin Características
  • 47. Conciso POJO com getters, setters, equals(), hashCode(), toString() e copy() em uma linha: Filtrar uma lista usando expressões lambda: Singleton? Criando um objeto: data class Customer(val name: String, val email: String, val company: String) val positiveNumbers = list.filter { it > 0 } object ThisIsASingleton { val companyName: String = "JetBrains" }
  • 48. NullPointerExceptions: Erros com tipos nulos: Auto Cast: Seguro var output: String output = null // Compilation error val name: String? = null // Nullable type println(name.length()) // Compilation error fun calculateTotal(obj: Any) { if (obj is Invoice) obj.calculateTotal() }
  • 50. ❏ Novas capacidades que ainda não há no Java como: ❏ Null safety ❏ Funções estendidas ❏ Lambdas ❏ Imutabilidade ❏ Muitas outras aqui ❏ 100% interoperável com Java, gerando bytecode da JVM ❏ Curva de aprendizado baixa para quem vem do Java Kotlin Vantagens
  • 51. ❏ App maior pois o Kotlin tem sua própria biblioteca que é adicionada ao aplicativo ❏ Tempo de compilação com Gradle mais lento que Java Kotlin Desvantagens
  • 52. ❏ É possível ter código Java e Kotlin em um mesmo aplicativo, estes códigos podem inclusive referenciar e usar um ao outro ❏ O Google implementou funcionalidades no Android Studio para facilitar a interoperabilidade, como por exemplo, copiar código Java e ao colar, é automaticamente transformado em Kotlin ❏ Não é necessário reescrever aplicativos em Kotlin! Kotlin Migração
  • 54. Mão na Massa ➔ https://developers.google.com/web/progressive-web-apps ➔ https://facebook.github.io/react-native ➔ https://kotlinlang.org ➔ https://www.alura.com.br ➔ http://engenharia.elo7.com.br