55
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin David Robert - Elo7

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

Embed Size (px)

Citation preview

Page 1: 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 comReact Native e Kotlin

David Robert - Elo7

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

David Robertlinkedin.com/in/[email protected]

❏ 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

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

Elo7Android

Talk7Android

Elo7Web Mobile

MobileArquitetura Mobile

Elo7iOS

Talk7iOS

Talk7Web Mobile

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

Web Mobile

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

❏ 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

Page 7: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 8: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 9: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 10: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin

OfflineLocal Storage

localStorage.setItem("bgcolor", "red")

var currentColor = localStorage.getItem("bgcolor")

localStorage.removeItem("bgcolor")

❏ Amplo suporte nos navegadores❏ Sincrono❏ Limite de capacidade de armazenamento

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

OfflineApplication 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">

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

Progressive Web AppsService 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

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

Progressive Web AppsService 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"]);

})

);

});

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

Progressive Web AppsService Workers & Cache Storage

self.addEventListener('fetch', function(event) {

event.respondWith(

caches.match(event.request).then(function(response){

return response || fetch(event.request.clone());

})

);

});

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

❏ 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 AppsConfiável

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

❏ 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 AppsRápido

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

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 AppsCativante

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

Progressive Web AppsDesempenho

❏ 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)❏

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

Progressive Web AppsDesempenho

❏ 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)❏

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

Progressive Web AppsDesempenho

❏ 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)

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

Progressive Web AppsDesempenho

❏ 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.

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

Progressive Web AppsNotificaçõ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

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

Progressive Web AppsPush Web no Elo7

❏ Conversão web mobile ~0.9❏ Conversão com push web ~2.5

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

Native Mobile

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

Elo7Android

Talk7Android

Elo7Web Mobile

MobileArquitetura Mobile

Elo7iOS

Talk7iOS

Talk7Web Mobile

Page 26: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 27: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 28: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 29: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 30: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 31: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 32: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 33: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 34: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
Page 35: O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin

MobileReact Native

React NativeFramework para construir aplicativos nativos

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

ReactReactJS & React Native

React NativeReactJS

VS

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

ReactReactJS & React Native

javascript library frameworkReact NativeReactJS

VS

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

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

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

React NativeVantagens

❏ Compartilhamento de código entre plataformas

❏ Arquitetura bem mais próxima do que é utilizado na web

❏ Mais performático que webview

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

React NativePontos 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

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

Alguns aplicativos que já utilizamReact Native

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

React NativePró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 MB2. Android Talk7 - 30 MB3. iOS Elo7 (sem react) - 24.5 MB4. Android Elo7 (sem react) - 20 MB

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

KotlinNova linguagem oficial para desenvolvimento

Android nativo

MobileKotlin

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

KotlinHello World

package hello

fun main(args: Array<String>) {

println("Hello World!")

}

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

❏ 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

KotlinCaracterísticas

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

KotlinCaracterísticas

Conciso Seguro FerramentasAmigáveis

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

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"

}

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

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()

}

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

Android Studio

FerramentasAmigáveis

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

❏ 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

KotlinVantagens

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

❏ App maior pois o Kotlin tem sua própria biblioteca que é adicionada ao aplicativo

❏ Tempo de compilação com Gradle mais lento que Java

KotlinDesvantagens

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

❏ É 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!

KotlinMigração

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

Por onde começar

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

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

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

David Robertlinkedin.com/in/[email protected]

Obrigado!