Котлин
в реальном Android проекте
Антон Руткевич
Привет, Яндекс!
Как у вас
дела-то ? :)
Обо мне
- Работал в Яндексе :)
- Android
- Java, Kotlin, Groovy
- Gradle, mobile CI
Антон Руткевич
Котлин-опыт
9 месяцев
Андроид разработки
на Котлине
в команде из 8 человек
Да ладно,
еще один JVM язык?
Зачем?
Kotlin
- Open source, статически-типизированный JVM язык от JetBrains
- "Effective Java" на уровне языка
- Хорошая поддержка/community
История
- Анонсирован в 2011
- Сейчас 1.0-RC (Февраль 2015)
- 1.0 вот уже совсем скоро :)
Для Android
- Android Studio - "родная" IDE
- Хороший саппорт от JB
- Просто работать с Java
- Java библиотеки работают
- < 1Mb jar ; ~ 8 K методов
Shut up and take my money method count
Library | Size | Method count |
---|---|---|
scala-library-2.11.7 | 5.7 Mb | 50811 |
groovy-2.4.4 | 4.6 Mb | 28768 |
kotlin-runtime-1.0.0-rc-1036 | 225 Kb | 924 |
kotlin-stdlib-1.0.0-rc-1036 | 705 Kb | 6961 |
Безопасность
&
Чистый код
Безопасность
Compile time безопасность
Compile time safety
Null safety
( Демо 1 )
Простая иммутабельнсть
( Демо 2 )
Чистый код
Функции высших порядков
( Демо 3 )
Extension функции
( Демо 4 )
Inlined функции
( Демо 5 )
Extension функции
+ RxJava
( Демо 6 )
Много других плюшек
- Inferred types
- String templates
- Properties
- When (upgraded switch)
- Return if / when / try
- Ranges
- Unchecked exceptions
- Delegates
- Operator overloading
- Type-safe builders
- ...
Недостатки
Tooling
- Компилируется чуть медленнее Java
- Android Studio чуть менее умна чем с Java
- Нету Lint
Код
- Тяжелее писать "кривые" тесты
- Нужно быть аккуратным при работе с Java
Спасибо!
Вопросы?
Антон Руткевич,
Блог: kotlin4android.com
@AntonRutkevich
+AntonRutkevich
anton.rutkevich
- http://kotlinlang.org
- Google "Kotlin Koans" - отличные упражнения
- YouTube "Andrey Breslav - Flexible Types in Kotlin"
- http://www.slideshare.net/intelliyole/kotlin-why-do-you-care
Kotlin in a real-world Android project @ Yndx
By Anton Rutkevich
Kotlin in a real-world Android project @ Yndx
Kotlin in a real-world Android project @Yndx Feb 2016
- 1,077