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
The State of Kotlin
Search
Zan Markan
March 29, 2018
Programming
0
180
The State of Kotlin
State of the Kotlin Ecosystem
Zan Markan
March 29, 2018
Tweet
Share
More Decks by Zan Markan
See All by Zan Markan
High-Performing Engineering Teams and the Holy Grail
zmarkan
0
72
A Practical Introduction to CI/CD
zmarkan
0
31
The Need for Speed - Practical Tips for Optimising your CI/CD Pipeline
zmarkan
0
57
Chat app with React, Auth0, and Pusher Chatkit
zmarkan
0
320
State of Kotlin - Droidcon NYC
zmarkan
1
66
State of Kotlin - Droidcon Berlin 2018
zmarkan
1
140
Building DSLs in Kotlin for Fun and Profit
zmarkan
2
520
Push Notifications That Don't Suck
zmarkan
3
390
10-ish Things about Android Library Development
zmarkan
0
99
Other Decks in Programming
See All in Programming
php-conference-japan-2024
tasuku43
0
430
ErdMap: Thinking about a map for Rails applications
makicamel
1
630
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
170
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
Amazon Nova Reelの可能性
hideg
0
200
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
DMMオンラインサロンアプリのSwift化
hayatan
0
180
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
220
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
150
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
950
Featured
See All Featured
Site-Speed That Sticks
csswizardry
2
270
Large-scale JavaScript Application Architecture
addyosmani
510
110k
We Have a Design System, Now What?
morganepeng
51
7.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Adopting Sorbet at Scale
ufuk
74
9.2k
GraphQLとの向き合い方2022年版
quramy
44
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Bash Introduction
62gerente
610
210k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
KATA
mclloyd
29
14k
Scaling GitHub
holman
459
140k
Transcript
The State of KOTLIN ZAN MARKAN DEVELOPER EVANGELIST @ PUSHER
The State of KOTLIN ZAN MARKAN DEVELOPER EVANGELIST @ PUSHER
KOTLIN @ PUSHER Used for all new SDK development for
Android ▸ Chatkit ▸ Push Notifications ▸ Feeds © @zmarkan 2018 | @pusher
SURVEY GOALS ▸ Learning ▸ Promote Kotlin usage ▸ Give
back to the community ▸ Hoping for 1000 responses © @zmarkan 2018 | @pusher
DOING THE SURVEY ▸ December - Jan -> Questions ▸
Jan - March -> Survey running ▸ prize -> Nikola Curilovic © @zmarkan 2018 | @pusher
2744 RESPONSES © @zmarkan 2018 | @pusher
33% COMPLETION RATE © @zmarkan 2018 | @pusher
13M14S AVG TIME TO COMPLETE © @zmarkan 2018 | @pusher
CATEGORIES SURVEYED ▸ Usage ▸ Learning ▸ Features ▸ Zeitgeist
▸ Demographics © @zmarkan 2018 | @pusher
STATE OF KOTLIN © @zmarkan 2018 | @pusher
KOTLIN USAGE © @zmarkan 2018 | @pusher
58% CURRENTLY USE KOTLIN ON A PROJECT © @zmarkan 2018
| @pusher
HAVE YOU EVER USED KOTLIN? © @zmarkan 2018 | @pusher
ON WHAT KIND OF PROJECTS? © @zmarkan 2018 | @pusher
80% OF PEOPLE USE IT FOR ANDROID APPS © @zmarkan
2018 | @pusher
WORK PROJECTS © @zmarkan 2018 | @pusher
OTHER PROJECTS ▸ Games ▸ Scripting ▸ Experiments ▸ Learning
& Koans ▸ Data Science © @zmarkan 2018 | @pusher
55% vs 25% KOTLIN-ONLY PROJECTS © @zmarkan 2018 | @pusher
KOTLIN IN WORK PROJECTS © @zmarkan 2018 | @pusher
KOTLIN IN SIDE PROJECTS © @zmarkan 2018 | @pusher
Other programming languages OF KOTLIN COMMUNITY © @zmarkan 2018 |
@pusher
JAVA, SWIFT, JS, NODE, PYTHON, ... © @zmarkan 2018 |
@pusher
MIGRATIONS FROM JAVA TO KOTLIN (and back again) © @zmarkan
2018 | @pusher
87% MIGRATED JAVA TO KOTLIN © @zmarkan 2018 | @pusher
HOW HAVE YOU DONE THE MIGRATION? © @zmarkan 2018 |
@pusher
25% REVERTED MIGRATION © @zmarkan 2018 | @pusher
None
REASONS ▸ Reflection, dependencies - Dagger, GreenDAO, Realm & Data
classes ▸ Early days: Spring DI and JaxRS ▸ Organisational reasons © @zmarkan 2018 | @pusher
"Made to do it due to organizational rules" !
"Another team took the code and didn’t want Kotlin" !
"Migration tri!ered a number of changes in the Java code"
!
"Migration doesn't provide idiomatic kotlin and puts lot of nu!
assertions" !
LEARNING KOTLIN © @zmarkan 2018 | @pusher
WHEN DID YOU PICK UP KOTLIN? © @zmarkan 2018 |
@pusher
WHY? ▸ Google, JetBrains support ▸ Tooling support ▸ Community
folk: Jake Wharton, Christina Lee, Antonio Leiva ▸ JB folk: Hadi Hariri, Svetlana Isakova, Andrey Breslav © @zmarkan 2018 | @pusher
"The popularity of Kotlin in a short period of time"
!
"Java was very verbose and Kotlin is just "
"It's like Java++"
TOP LEARNING RESOURCES © @zmarkan 2018 | @pusher
DEVELOPER BACKGROUNDS © @zmarkan 2018 | @pusher
FAVOURITE FEATURES © @zmarkan 2018 | @pusher
FAVOURITE FEATURES © @zmarkan 2018 | @pusher
Other FAVOURITE FEATURES ▸ when ▸ reified ▸ sealed classes
▸ lambdas © @zmarkan 2018 | @pusher
FIRST ORDER FUNCTIONS? © @zmarkan 2018 | @pusher
77% HAVE USED EXTENSION FUNCTIONS © @zmarkan 2018 | @pusher
WHAT FOR? ▸ Reducing Android boilerplate ▸ Replacing Util classes
▸ “nicer” FP ▸ Conversions → strings, etc… ▸ DSLs © @zmarkan 2018 | @pusher
"We felt like going overboard with them Now trying to
find a happy medium" !
"The most important use case is lambda parameters for DSL-
style builders." !
"For clean code mostly They make the code more readable"
!
29% HAVE USED COROUTINES © @zmarkan 2018 | @pusher
WHAT FOR? ▸ Threading, I/O, UI ▸ Replacement for RxJava
▸ Lazy generators ▸ Serverside - with Ktor ▸ C# "expats" © @zmarkan 2018 | @pusher
"I've used it with the library Arrow" !
"Stopped using it because it’s experimental" ⚗
"Fu!y in production for a fintech solution" !
"They provide a very funny API when used to wrap
JS promises" !
26% USED NON-JVM FEATURES © @zmarkan 2018 | @pusher
NON-JVM FEATURES © @zmarkan 2018 | @pusher
BUILD TOOLS © @zmarkan 2018 | @pusher
41% HAVE USED A DSL © @zmarkan 2018 | @pusher
DSL USAGE © @zmarkan 2018 | @pusher
24% HAVE DEVELOPED A DSL THEMSELVES © @zmarkan 2018 |
@pusher
WHAT FOR? ▸ ML & AI ▸ Jake Wharton's Testing
Robots ▸ UI Declarations (Android & Java) ▸ Configurations, tooling ▸ Custom Data Structures - typed JSON © @zmarkan 2018 | @pusher
REPLACING C WITH K? © @zmarkan 2018 | @pusher
© @zmarkan 2018 | @pusher
KOTLIN ZEITGEIST © @zmarkan 2018 | @pusher
29% ARE MISSING THINGS IN KOTLIN © @zmarkan 2018 |
@pusher
MOST MISSED ▸ Ternary operator ▸ SAM for Kotlin classes
▸ Pattern matching ▸ More syntax sugar ▸ LINQ © @zmarkan 2018 | @pusher
MORE MISSED... ▸ Literal bitwise operations ▸ Custom operations ▸
Single multiplatform IDE ▸ VueJS support ▸ Swift’s guard © @zmarkan 2018 | @pusher
21% DISLIKE FEATURES... © @zmarkan 2018 | @pusher
MOST HATED ▸ Companion objects / statics ▸ Too many
"exotic" keywords ▸ Public by default ▸ No package-local modifier ▸ Not a dynamic language © @zmarkan 2018 | @pusher
WHAT DO YOU LIKE THE MOST? ▸ Features ▸ moden
programming language, similar to Swift, NOT Java ▸ Syntactic sugar, stdlib, easy to learn ▸ It's fun ▸ Platform independent © @zmarkan 2018 | @pusher
None
"It can be read like a story" !
"I smile again when writing code" !
"The language doesn't get in the way of getting the
job done" !
"Mortal Kombat: The Programming Language" !
DEMOGRAPHICS © @zmarkan 2018 | @pusher
KOTLINERS ARE EVERYWHERE ! " © @zmarkan 2018 | @pusher
EMPLOYMENT © @zmarkan 2018 | @pusher
YEARS WORKING AS DEVELOPER OR SWE © @zmarkan 2018 |
@pusher
NUMBER OF PEOPLE YOUR ORG © @zmarkan 2018 | @pusher
KOTLIN DEVS IN YOUR ORG © @zmarkan 2018 | @pusher
SECTORS AND INDUSTRY © @zmarkan 2018 | @pusher
FUTURE OF STATE OF KOTLIN? WHAT WOULD YOU LIKE TO
ASK? © @zmarkan 2018 | @pusher
Zan Markan
[email protected]
@zmarkan © @zmarkan 2018 | @pusher
REFERENCES ▸ JW's whitepaper from Square: docs.google.com/document/d/ 1ReS3ep-hjxWA8kZi0YqDbEhCqTt29hG8P44aA9W0DM8 ▸ Kotlin
Future Features survey: blog.jetbrains.com/kotlin/2017/06/ kotlin-future-features-survey-results ▸ StackOvervlow Survey: insights.stackoverflow.com/survey/2018 © @zmarkan 2018 | @pusher