Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
2
570
Compose UI for... a light switch? (KotlinConf 2024)
jakewharton
PRO
3
2k
Releasing faster with Kotlin multiplatform (DPE Summit 2023)
jakewharton
PRO
3
1.5k
Playing in the Treehouse with Redwood and Zipline (KotlinConf 2023)
jakewharton
PRO
1
1.9k
Native UI with Multiplatform Compose (Droidcon NYC 2022)
jakewharton
PRO
2
7.2k
What's new in Java 19: The end of Kotlin? (KotlinConf 2019)
jakewharton
PRO
6
9.9k
Diffusing Changes in Your APKs (Droidcon Toronto 2019)
jakewharton
PRO
5
4.9k
Using Kotlin/JS and Kotlin/Native on Android (Droidcon NYC 2019)
jakewharton
PRO
4
7.7k
Mechanisms of Metaprogramming (Chicago Roboto 2019)
jakewharton
PRO
6
8.8k
Other Decks in Technology
See All in Technology
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
GitHub を組織的に使いこなすために ソニーが実践した全社展開のプラクティス
sony
17
8.8k
事業部のプロジェクト進行と開発チームの改善の “時間軸" のすり合わせ
konifar
7
1.3k
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
13
8.3k
Codeer.LowCode.Blazor 紹介と成長録
wadawada
0
110
ページの可視領域を算出する方法について整理する
yamatai1212
0
110
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
45k
Android Studio Otter の最新 Gemini 機能 / Latest Gemini features in Android Studio Otter
yanzm
0
490
『ソフトウェア』で『リアル』を動かす:クレーンゲームからデータ基盤までの統一アーキテクチャ / アーキテクチャConference 2025
genda
0
2k
生成AIシステムとAIエージェントに関する性能や安全性の評価
shibuiwilliam
2
270
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
21k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
360
Done Done
chrislema
186
16k
Site-Speed That Sticks
csswizardry
13
970
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How STYLIGHT went responsive
nonsquared
100
5.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Speed Design
sergeychernyshev
33
1.3k
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