Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
220
Designing robust APIs in Kotlin
Designing robust APIs in Kotlin.
Jaewoong
March 17, 2022
Tweet
Share
More Decks by Jaewoong
See All by Jaewoong
Android Librarian's Guide: Building Robust Libraries and SDKs
skydoves
1
1.1k
[KR] Open-Source Ecosystems
skydoves
0
210
Server Driven Compose With Firebase
skydoves
0
820
[KR] Server Driven Compose With Firebase
skydoves
2
620
[KR] Jetpack Compose Structure and Stability
skydoves
0
140
Jetpack Compose Structure and Stability
skydoves
1
150
[KR] 2024 DroidKnights: Compose 성능 최적화를 위한 Stability 마스터하기
skydoves
1
1.5k
[KR] What an Android Developer Does
skydoves
1
330
Jetpack Compose Mechanism
skydoves
3
2.2k
Other Decks in Technology
See All in Technology
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
540
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
710
AWS Security Agentの紹介/introducing-aws-security-agent
tomoki10
0
250
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
320
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
250
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
180
mairuでつくるクレデンシャルレス開発環境 / Credential-less development environment using Mailru
mirakui
5
490
Jakarta Agentic AI Specification - Status and Future
reza_rahman
0
100
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
390
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
320
AWSセキュリティアップデートとAWSを育てる話
cmusudakeisuke
0
280
AWS Bedrock AgentCoreで作る 1on1支援AIエージェント 〜Memory × Evaluationsによる実践開発〜
yusukeshimizu
6
400
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Language of Interfaces
destraynor
162
25k
Producing Creativity
orderedlist
PRO
348
40k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Pragmatic Product Professional
lauravandoore
37
7.1k
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!