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
KMP with non-Kotlin languages (Droidcon NYC 2025)
jakewharton
PRO
0
5
Compose UI for... a light switch? (KotlinConf 2024)
jakewharton
PRO
3
1.8k
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.6k
Other Decks in Technology
See All in Technology
Azure AI Foundryでマルチエージェントワークフロー
seosoft
0
180
IIWレポートからみるID業界で話題のMCP
fujie
0
780
20250623 Findy Lunch LT Brown
3150
0
850
“社内”だけで完結していた私が、AWS Community Builder になるまで
nagisa53
1
360
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
410
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
140
SalesforceArchitectGroupOsaka#20_CNX'25_Report
atomica7sei
0
140
A2Aのクライアントを自作する
rynsuke
1
170
Wasm元年
askua
0
140
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.1k
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
220
PostgreSQL 18 cancel request key長の変更とRailsへの関連
yahonda
0
120
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
24
1.7k
How to Ace a Technical Interview
jacobian
277
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Building Applications with DynamoDB
mza
95
6.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Bash Introduction
62gerente
614
210k
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