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
Designing robust APIs in Kotlin
Search
Jaewoong
March 17, 2022
Technology
2
210
Designing robust APIs in Kotlin
Designing robust APIs in Kotlin.
Jaewoong
March 17, 2022
Tweet
Share
More Decks by Jaewoong
See All by Jaewoong
[KR] Open-Source Ecosystems
skydoves
0
170
Server Driven Compose With Firebase
skydoves
0
780
[KR] Server Driven Compose With Firebase
skydoves
2
570
[KR] Jetpack Compose Structure and Stability
skydoves
0
130
Jetpack Compose Structure and Stability
skydoves
1
120
[KR] 2024 DroidKnights: Compose 성능 최적화를 위한 Stability 마스터하기
skydoves
1
1.5k
[KR] What an Android Developer Does
skydoves
1
320
Jetpack Compose Mechanism
skydoves
3
2.1k
Google I/O Extended 2023: What's New in Kotlin for Android
skydoves
4
1k
Other Decks in Technology
See All in Technology
[CVPR2025論文読み会] Linguistics-aware Masked Image Modelingfor Self-supervised Scene Text Recognition
s_aiueo32
0
210
[OCI Skill Mapping] AWSユーザーのためのOCI(2025年8月20日開催)
oracle4engineer
PRO
2
150
見てわかるテスト駆動開発
recruitengineers
PRO
5
470
JOAI発表資料 @ 関東kaggler会
joai_committee
1
360
Gaze-LLE: Gaze Target Estimation via Large-Scale Learned Encoders
kzykmyzw
0
320
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
4
1.1k
KiroでGameDay開催してみよう(準備編)
yuuuuuuu168
1
130
会社にデータエンジニアがいることでできるようになること
10xinc
9
1.6k
人と組織に偏重したEMへのアンチテーゼ──なぜ、EMに設計力が必要なのか/An antithesis to the overemphasis of people and organizations in EM
dskst
6
620
知られざるprops命名の慣習 アクション編
uhyo
11
2.6k
AIエージェントの開発に必須な「コンテキスト・エンジニアリング」とは何か──プロンプト・エンジニアリングとの違いを手がかりに考える
masayamoriofficial
0
410
マイクロモビリティシェアサービスを支える プラットフォームアーキテクチャ
grimoh
1
240
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Speed Design
sergeychernyshev
32
1.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Site-Speed That Sticks
csswizardry
10
790
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Scaling GitHub
holman
462
140k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Making Projects Easy
brettharned
117
6.3k
Navigating Team Friction
lara
189
15k
Building Applications with DynamoDB
mza
96
6.6k
Designing Experiences People Love
moore
142
24k
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!