Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Designing robust APIs in Kotlin
Search
Jaewoong
March 17, 2022
Technology
270
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Designing robust APIs in Kotlin
Designing robust APIs in Kotlin.
Jaewoong
March 17, 2022
More Decks by Jaewoong
See All by Jaewoong
Jetpack Compose Mechanisms
skydoves
3
820
Jetpack Compose メカニズム
skydoves
0
580
Hot Reload on Android with Compose HotSwan
skydoves
0
72
Android Librarian's Guide: Building Robust Libraries and SDKs
skydoves
1
1.3k
[KR] Open-Source Ecosystems
skydoves
0
270
Server Driven Compose With Firebase
skydoves
0
900
[KR] Server Driven Compose With Firebase
skydoves
2
730
[KR] Jetpack Compose Structure and Stability
skydoves
0
210
Jetpack Compose Structure and Stability
skydoves
1
240
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
3
790
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
130
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
460
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
170
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
330
夫婦で子育てするための育児標準化
codmoninc
PRO
0
340
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
150
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
250
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
Classmethod Company Deck
satoshi7
1
690
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
420
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
My Coaching Mixtape
mlcsv
0
360
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Building Adaptive Systems
keathley
44
3.2k
Accessibility Awareness
sabderemane
1
250
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Transcript
Designing robust APIs in Kotlin Jaewoong Eum
About me github.com/skydoves
How to build solid APIs? 🤔
API design API surface
API design Client Client Client Client API surface
API design Client Client Client Client API surface
API design Client Client Client Client API surface
API design Client Client Client Client API surface
API design Minimal API surface area
API design Client Client Client Client Minimal API surface area
API design Client Client Client Client Minimal API surface area
API design Client Client Client Client Minimal API surface area
API visibility private internal importance protected public Visibility modifiers
API visibility public importance Client Client Client private internal protected
Visibility modifiers
API visibility Property
API visibility Property setter getter
API visibility Property // penguin setter getter
API visibility Property setter getter Cannot assign to 'data': the
setter is private in 'MyViewModel`
API visibility Extension
API visibility Extension
API visibility Extension Unresolved reference
API visibility Extension
API visibility Extension 😵
API visibility @JvmSynthetic
API visibility @JvmSynthetic
API visibility @JvmSynthetic Unresolved reference
API visibility @JvmSynthetic
API visibility @PublishedApi
API visibility @PublishedApi
API visibility @PublishedApi
API visibility @PublishedApi
API visibility @PublishedApi
API visibility KEEP
API visibility Explicit API mode
API visibility Explicit API mode
API visibility Explicit API mode (strict)
API visibility Explicit API mode (strict)
API visibility Explicit API mode (strict)
API visibility Explicit API mode (strict)
API visibility Explicit API mode (warning)
API visibility Explicit API mode (warning)
API visibility Binary compatibility validator
API visibility Binary compatibility validator build.gradle module.gradle On terminal
API visibility Binary compatibility validator module.api
API visibility Binary compatibility validator
API visibility metalava
API visibility metalava
Client Client Client Client API maintenance API surface
Client Client Client Client API maintenance API surface
Client Client Client Client API maintenance API surface
Client Client Client Client API maintenance API surface
API maintenance API lifecycle Created Deprecated (warning) Removed Deprecated (error)
API maintenance API lifecycle Created Deprecated (warning) Removed Deprecated (error)
API maintenance @Deprecated (warning)
API maintenance @Deprecated (warning)
API maintenance @Deprecated (warning)
API maintenance @Deprecated (warning)
API maintenance @Deprecated (warning) Show Context Actions
API maintenance @Deprecated (error)
API maintenance API lifecycle Created Deprecated (warning) Removed Deprecated (error)
v4.2.10 v4.2.20 v4.2.21 v4.3.0
API maintenance API lifecycle Created Deprecated (warning) Removed Deprecated (error)
v4.2.10 v4.2.20 v4.2.21 v4.3.0
API maintenance API lifecycle Created Deprecated (warning) Removed Deprecated (error)
v4.2.10 v4.2.20 v4.2.21 v4.3.0 Client
API maintenance API lifecycle Client Client Created Deprecated (warning) Removed
Deprecated (error) v4.2.10 v4.2.20 v4.2.21 v4.3.0
API maintenance API lifecycle Client Client Created Deprecated (warning) Removed
Deprecated (error) v4.2.10 v4.2.20 v4.2.21 v4.3.0
API maintenance Deprecations
Client Client Client Client API maintenance @RequiresOptIn
Client Client Client Client API maintenance @RequiresOptIn Experimental
Client Client Client Client API maintenance @RequiresOptIn @RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn Core module UI module
API maintenance @RequiresOptIn Core module UI module Client Client
API maintenance @RequiresOptIn Core module UI module Client Client
API maintenance @RequiresOptIn Core module UI module Client Client
API maintenance @RequiresOptIn Core module UI module Client Client
API maintenance @RequiresOptIn Core module UI module Client Client
API maintenance @RequiresOptIn
API maintenance @RequiresOptIn
References • Kotlin Docs ◦ https://kotlinlang.org/docs/home.html • Mastering API Visibility
in Kotlin (Márton Braun) ◦ https://zsmb.co/mastering-api-visibility-in-kotlin/ • KEEP - Kotlin Evolution and Enhancement Process ◦ https://github.com/Kotlin/KEEP • Binary Compatibility Validator ◦ https://github.com/Kotlin/binary-compatibility-validator • Effective Kotlin ◦ https://leanpub.com/effectivekotlin • Balloon ◦ https://github.com/skydoves/Balloon • Stream Chat Android ◦ https://github.com/GetStream/stream-chat-android
Reach out
[email protected]
https://github.com/skydoves https://twitter.com/github_skydoves https://medium.com/@skydoves
Thank You!