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
200
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
150
Server Driven Compose With Firebase
skydoves
0
750
[KR] Server Driven Compose With Firebase
skydoves
2
480
[KR] Jetpack Compose Structure and Stability
skydoves
0
99
Jetpack Compose Structure and Stability
skydoves
1
92
[KR] 2024 DroidKnights: Compose 성능 최적화를 위한 Stability 마스터하기
skydoves
1
1.4k
[KR] What an Android Developer Does
skydoves
1
290
Jetpack Compose Mechanism
skydoves
3
1.9k
Google I/O Extended 2023: What's New in Kotlin for Android
skydoves
4
990
Other Decks in Technology
See All in Technology
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
1
220
Рекомендации с нуля: как мы в Lamoda превратили главную страницу в ключевую точку входа для персонализированного шоппинга. Данил Комаров, Data Scientist, Lamoda Tech
lamodatech
0
740
AWS Control Towerを 数年運用してきての気づきとこれから/aws-controltower-ops-tips
tadayukinakamura
0
160
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
290
AWSの新機能検証をやる時こそ、Amazon Qでプロンプトエンジニアリングを駆使しよう
duelist2020jp
1
250
Amazon CloudWatch Application Signals ではじめるバーンレートアラーム / Burn rate alarm with Amazon CloudWatch Application Signals
ymotongpoo
5
530
クラウド開発環境Cloud Workstationsの紹介
yunosukey
0
180
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
1
600
Spring Bootで実装とインフラをこれでもかと分離するための試み
shintanimoto
7
840
YOLOv10~v12
tenten0727
4
960
SDカードフォレンジック
su3158
1
620
Writing Ruby Scripts with TypeProf
mame
0
170
Featured
See All Featured
Side Projects
sachag
452
42k
Scaling GitHub
holman
459
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Agile that works and the tools we love
rasmusluckow
328
21k
Visualization
eitanlees
146
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Gamification - CAS2011
davidbonilla
81
5.2k
A designer walks into a library…
pauljervisheath
205
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!