Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Blurring the Line Between Native and Web (Droid...
Search
Jake Wharton
PRO
June 26, 2018
Technology
16
4.7k
Blurring the Line Between Native and Web (Droidcon DE 2018)
Video:
https://youtu.be/yd-Xztr4fyY
Jake Wharton
PRO
June 26, 2018
Tweet
Share
More Decks by Jake Wharton
See All by Jake Wharton
Compose UI for... a light switch? (KotlinConf 2024)
jakewharton
PRO
3
1.7k
Releasing faster with Kotlin multiplatform (DPE Summit 2023)
jakewharton
PRO
2
1.4k
Playing in the Treehouse with Redwood and Zipline (KotlinConf 2023)
jakewharton
PRO
1
1.7k
Native UI with Multiplatform Compose (Droidcon NYC 2022)
jakewharton
PRO
2
6.9k
What's new in Java 19: The end of Kotlin? (KotlinConf 2019)
jakewharton
PRO
6
9.8k
Diffusing Changes in Your APKs (Droidcon Toronto 2019)
jakewharton
PRO
5
4.8k
Using Kotlin/JS and Kotlin/Native on Android (Droidcon NYC 2019)
jakewharton
PRO
4
7.5k
Mechanisms of Metaprogramming (Chicago Roboto 2019)
jakewharton
PRO
5
8.5k
Kotlin: Write Once, Run Actually Everywhere (QCon SF 2018)
jakewharton
PRO
19
4.3k
Other Decks in Technology
See All in Technology
Part1 GitHubってなんだろう?その1
tomokusaba
3
750
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
PRO
0
730
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2025年版)
infiniteloop_inc
4
15k
本当に必要なのは「QAという技術」だった!試行錯誤から生まれた、品質とデリバリーの両取りアプローチ / Turns Out, "QA as a Discipline" Was the Key!
ar_tama
9
4.1k
雑に疎通確認だけしたい...せや!CloudShell使ったろ!
alchemy1115
0
210
newmo の創業を支える Software Architecture と Platform Engineering
110y
4
420
Асинхронная коммуникация в Go: от понятного к душному. Дима Некрасов, Otello, 2ГИС
lamodatech
0
2.1k
Pythonデータ分析実践試験 出題傾向や学習のポイントとテクニカルハイライト
terapyon
1
140
kernelvm-brain-net
raspython3
0
510
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
650
自動化の第一歩 -インフラ環境構築の自動化について-
smt7174
1
120
Google Cloud Next 2025 Recap アプリケーション開発を加速する機能アップデート / Application development-related features of Google Cloud
ryokotmng
0
110
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The World Runs on Bad Software
bkeepers
PRO
68
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
179
53k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
How to train your dragon (web standard)
notwaldorf
91
6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
KATA
mclloyd
29
14k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
Transcript
#NATIVE&WEB @JAKEWHARTON
None
None
None
None
None
None
None
JavaScriptCore
JavaScriptCore JNI
JavaScriptCore VM / Main Thread JNI
JavaScriptCore UI Toolkit VM / Main Thread JNI
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit V8
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit V8 DOM
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit V8 DOM
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit V8 DOM
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit V8 DOM
JavaScriptCore UI Toolkit VM / Main Thread JNI JavaScriptCore Runtime
Main Thread UI Toolkit V8 DOM
JavaScriptCore JNI JavaScriptCore Runtime V8
V8 JNI JavaScriptCore Runtime V8
Duktape JNI JavaScriptCore Runtime V8
Duktape JNI JavaScriptCore Runtime V8
Duktape JNI JavaScriptCore Runtime V8
React Native Platform Duktape JNI JavaScriptCore Runtime V8
JS Engine + Abstraction Your App Duktape JNI JavaScriptCore Runtime
V8
None
None
None
None
Shared Library + Abstraction Your App
Shared Library + Abstraction Your App ????
None
None
None
None
Multiplatform Abstraction Your App
Your App
Your App
J2ObjC
J2ObjC
J2ObjC
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
app feature 1 feature 2 feature 3
app feature 1 feature 2 feature 3 myapp.apk
app feature 1 feature 2 feature 3 myapp.apk base.apk
app feature 1 feature 2 feature 3 myapp.apk base.apk feature1.apk
app feature 1 feature 2 feature 3 myapp.apk base.apk feature1.apk
HTML CSS JS PNG PNG /index.html HTML /feature1.html
app feature 1 feature 2 feature 3
feature 1 feature 2 feature 3
feature 2 feature 3
feature 3
None
DEX DEX DEX DEX
DEX ARM x86 DEX DEX DEX
DEX ARM x86 en-US de DEX DEX DEX en-US en-US
en-US de de de
app_arm_en-US.apk DEX ARM en-US DEX en-US DEX en-US DEX en-US
DEX en-US de DEX en-US de ARM x86 en-US de DEX en-US de DEX
app_arm_en-US.apk DEX ARM en-US DEX en-US DEX en-US DEX en-US
DEX en-US de DEX en-US de ARM x86 en-US de DEX en-US de DEX de de de de app_de.apk
DEX en-US de DEX en-US de ARM x86 en-US de
DEX en-US de DEX ARM en-US DEX DEX en-US de
DEX en-US de DEX en-US de ARM x86 en-US de
DEX en-US de DEX ARM en-US DEX base_arm_en-US.apk DEX en-US
DEX en-US de DEX en-US de ARM x86 en-US de
DEX en-US de DEX ARM en-US DEX base_arm_en-US.apk DEX en-US feature1_arm_en-US.apk
ARM en-US DEX base_arm_en-US.apk DEX en-US feature1_arm_en-US.apk HTML CSS JS
PNG PNG /index.html HTML /feature1.html
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
native_app.apk DEX ... ART
native_app.apk DEX ... ART Int JIT AOT
native_app.apk DEX ... ART Int JIT AOT CPU
native_app.apk DEX ... ART ART Int JIT AOT CPU chrome.apk
... DEX
native_app.apk DEX ... ART ART V8 Int JIT AOT CPU
chrome.apk ... DEX
native_app.apk DEX ... ART ART V8 Int JIT AOT CPU
chrome.apk ... DEX ... JS cache/
native_app.apk DEX ... ART ART V8 Int JIT AOT CPU
Int JIT chrome.apk ... DEX ... JS cache/
native_app.apk DEX ... ART ART V8 Int JIT AOT CPU
CPU Int JIT chrome.apk ... DEX ... JS cache/
native_app.apk DEX ... ART ART V8 Int JIT AOT CPU
CPU Int JIT JIT & AOT cache chrome.apk ... DEX ... JS cache/
native_app.apk DEX ... ART ART V8 Int JIT AOT CPU
CPU Int JIT JIT & AOT cache chrome.apk ... DEX ... JS cache/
None
Shared Library + Abstraction Your App ????
Shared Library + Abstraction Your App WASM
Multiplatform Abstraction Your App
Multiplatform Abstraction Your App WASM
ART V8 CPU Int JIT chrome.apk ... DEX ... JS
cache/
ART V8 CPU Int JIT chrome.apk ... DEX ... JS
cache/
ART V8 CPU Int JIT chrome.apk ... DEX ... JS
cache/ airhorner.apk ... DEX
None
None
None
None
ART V8 CPU Int JIT chrome.apk ... DEX ... JS
cache/
ART V8 CPU Int JIT airhorner.apk ... DEX ... JS
cache/
ART V8 CPU Int JIT airhorner.apk ... DEX ... JS
cache/ JIT & AOT cache
None
None
None
None
None
app.apk
app.aab app.apk
app.aab app.apk
app.aab app.apk
app.ipa app.aab app.apk
app.ipa app.aab app.apk
app.ipa app.aab app.apk
website/ index.html feature1.html feature2.html feature3.html app.js styles.css app.ipa app.aab app.apk
app-fat.jar website/ index.html feature1.html feature2.html feature3.html app.js styles.css app.ipa app.aab
app.apk
None
None
apk via aab via url
apk via aab via url
apk via aab via url apk via aab via url
apk via aab via url apk via aab via url
apk apk via aab via url apk via aab via
url
apk apk via aab via url apk via aab via
url
apk via aab apk apk via aab via url apk
via aab via url
apk via aab apk apk via aab via url apk
via aab via url
apk via aab apk via aab apk apk via aab
via url apk via aab via url
apk via aab apk via aab apk apk via aab
via url apk via aab via url
apk via aab apk via aab apk apk via aab
via url apk via aab via url Chrome app
apk via aab apk via aab apk apk via aab
via url apk via aab via url Chrome app
apk via aab apk via aab apk apk via aab
via url apk via aab via url Chrome app url
apk via aab apk via aab apk apk via aab
via url apk via aab via url Chrome app url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url pwa ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url pwa ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url pwa ipa ipa url
apk via aab apk via aab apk webapk apk via
aab via url apk via aab via url Chrome app url url pwa ipa ipa url
apk via aab apk via aab apk webapk apk via
aab via url url apk via aab via url Chrome app url url pwa ipa ipa url url
#NATIVE&WEB @JAKEWHARTON