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
71
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
300
State of Kotlin - Droidcon NYC
zmarkan
1
65
State of Kotlin - Droidcon Berlin 2018
zmarkan
1
140
Building DSLs in Kotlin for Fun and Profit
zmarkan
2
500
Push Notifications That Don't Suck
zmarkan
3
380
10-ish Things about Android Library Development
zmarkan
0
98
Other Decks in Programming
See All in Programming
PLoP 2024: The evolution of the microservice architecture pattern language
cer
PRO
0
1.6k
C#/.NETのこれまでのふりかえり
tomokusaba
1
160
qmuntal/stateless のススメ
sgash708
0
120
cXML という電子商取引の トランザクションを支える プロトコルと向きあっている話
phigasui
3
2.3k
Go言語でターミナルフレンドリーなAIコマンド、afaを作った/fukuokago20_afa
monochromegane
2
140
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
920
Vue3の一歩踏み込んだパフォーマンスチューニング2024
hal_spidernight
3
3.1k
Vue SFCのtemplateでTypeScriptの型を活用しよう
tsukkee
3
1.5k
役立つログに取り組もう
irof
26
8.7k
Progressive Web Apps für Desktop und Mobile mit Angular (Hands-on)
christianliebel
PRO
0
110
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
4
1.6k
GCCのプラグインを作る / I Made a GCC Plugin
shouth
1
150
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
4 Signs Your Business is Dying
shpigford
180
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
Music & Morning Musume
bryan
46
6.1k
We Have a Design System, Now What?
morganepeng
50
7.2k
Happy Clients
brianwarren
97
6.7k
Building Adaptive Systems
keathley
38
2.2k
Visualization
eitanlees
144
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
3
370
Scaling GitHub
holman
458
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