SlideShare a Scribd company logo
Kotlin в продакшн.
Как и зачем?
Кирилл Бубочкин
11-я конференция .NET разработчиков
31 октября 2015
dotnetconf.ru
2
Что плохо в Java?
● Избыточность
3
Что плохо в Java?
● Избыточность
● NullPointerException
4
Что плохо в Java?
● Избыточность
● NullPointerException
● Нет множественного
наследования
5
Что плохо в Java?
● Избыточность
● NullPointerException
● Нет множественного
наследования
● Еще раз избыточность
6
Что плохо в Java?
● Избыточность
● NullPointerException
● Нет множественного
наследования
● Еще раз избыточность
● Java 8
7
Что плохо в Java?
● Избыточность
● NullPointerException
● Нет множественного
наследования
● Еще раз избыточность
● Java 8… не дождемся
8
Что такое Kotlin?
Statically typed programming language for
the JVM, Android and the browser
● Совместимость
● Корректность
● Лаконичность
9
Kotlin vs Scala
“If you are happy with Scala,
you probably do not need
Kotlin”
Как?
11
Делаем проект на Kotlin
1. Установить плагин
2. Сконвертировать проект
3. Написать код
4. …
5. Profit!
О достоинствах
13
1. Краткость
14
1. Краткость
15
2. Повышение читаемости
16
2. Повышение читаемости
17
3. NullPointerException
? !! ?:
18
3. NullPointerException
19
4. Совместимость с Java
20
и еще:
● Разработчики прислушиваются
к сообществу
● “Нативная” поддержка в
Android Studio
21
и еще:
О недостатках
23
1. Breaking changes
24
2. Нас меньшинство
Вопросов на StackOverflow
Всего Сегодня На этой неделе
Java 946935 906 5495
Scala 42807 44 274
Kotlin 363 0 10
25
и еще:
● Документация могла бы быть
лучше
● Далеко до stable-релиза
● Интеллектуальный режим в IDE
● Прожорливость
Так все-таки, в production?
27
Спасибо за внимание
Кирилл Бубочкин
ookami.kb@gmail.com
plus.google.com/+KirillBubochkin

More Related Content

What's hot

Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
ScrumTrek
 
Гибкие методики разработки. Кто их придумал и почему
Гибкие методики разработки. Кто их придумал и почемуГибкие методики разработки. Кто их придумал и почему
Гибкие методики разработки. Кто их придумал и почему
Dmitry Savchenko
 
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Ontico
 
использование .Net framework
использование .Net frameworkиспользование .Net framework
использование .Net framework
jskonst
 
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
Sergey Ponomarev
 
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
Krivoy Rog IT Community
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
yaevents
 
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
CodeFest
 
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
ScrumTrek
 

What's hot (17)

Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
 
Гибкие методики разработки. Кто их придумал и почему
Гибкие методики разработки. Кто их придумал и почемуГибкие методики разработки. Кто их придумал и почему
Гибкие методики разработки. Кто их придумал и почему
 
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
 
использование .Net framework
использование .Net frameworkиспользование .Net framework
использование .Net framework
 
Знакомьтесь, Kotlin
Знакомьтесь, KotlinЗнакомьтесь, Kotlin
Знакомьтесь, Kotlin
 
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
 
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
 
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
 
Copy of презентация
Copy of презентацияCopy of презентация
Copy of презентация
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
 
Релизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous deliveryРелизимся чаще, или тернистый путь к continuous delivery
Релизимся чаще, или тернистый путь к continuous delivery
 
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
Александр Сербул. Прикладное XP в «1С-Битрикс»: как развивать продукт более 1...
 
About emacs
About emacsAbout emacs
About emacs
 

Viewers also liked

Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ...
 Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ... Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ...
Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ...
it-people
 
Android opetuksessa 11.9.14
Android opetuksessa 11.9.14Android opetuksessa 11.9.14
Android opetuksessa 11.9.14
Matleena Laakso
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять...
 Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять... Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять...
Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять...
it-people
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
Bartosz Kosarzycki
 

Viewers also liked (20)

Taking Kotlin to production, Seriously
Taking Kotlin to production, SeriouslyTaking Kotlin to production, Seriously
Taking Kotlin to production, Seriously
 
Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ...
 Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ... Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ...
Как выжить в диких условиях сложного развивающегося продукта. Что полюбить, ...
 
Как в E96.ru устроено продуктивное окружение, Данила Штань, ex-e96.ru
 Как в E96.ru устроено продуктивное окружение, Данила Штань, ex-e96.ru  Как в E96.ru устроено продуктивное окружение, Данила Штань, ex-e96.ru
Как в E96.ru устроено продуктивное окружение, Данила Штань, ex-e96.ru
 
DUMP-2015: «Кривая обучения в настольных играх» Сергей Абдульманов, Мосигра, ...
DUMP-2015: «Кривая обучения в настольных играх» Сергей Абдульманов, Мосигра, ...DUMP-2015: «Кривая обучения в настольных играх» Сергей Абдульманов, Мосигра, ...
DUMP-2015: «Кривая обучения в настольных играх» Сергей Абдульманов, Мосигра, ...
 
Android opetuksessa 11.9.14
Android opetuksessa 11.9.14Android opetuksessa 11.9.14
Android opetuksessa 11.9.14
 
Scala Day by Day
Scala Day by DayScala Day by Day
Scala Day by Day
 
Scala
ScalaScala
Scala
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
Kotlin Overview
Kotlin OverviewKotlin Overview
Kotlin Overview
 
Intro to kotlin
Intro to kotlinIntro to kotlin
Intro to kotlin
 
Infinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using KotlinInfinum Android Talks #20 - Benefits of using Kotlin
Infinum Android Talks #20 - Benefits of using Kotlin
 
Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять...
 Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять... Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять...
Процесс качественного дизайна web-продукта. Его тяжело найти, легко потерять...
 
Do Languages Matter?
Do Languages Matter?Do Languages Matter?
Do Languages Matter?
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
 
Programming in scala - 1
Programming in scala - 1Programming in scala - 1
Programming in scala - 1
 
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
 
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?Kotlin: Why Do You Care?
Kotlin: Why Do You Care?
 
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: Kotlin: From Null Dereference to Smart CastsTMPA-2015: Kotlin: From Null Dereference to Smart Casts
TMPA-2015: Kotlin: From Null Dereference to Smart Casts
 
Scala in practice
Scala in practiceScala in practice
Scala in practice
 
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
 

Similar to Kotlin в production. Как и зачем?

От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
PCampRussia
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
Yandex
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
Ivan Mosiev
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradle
Evgeny Borisov
 

Similar to Kotlin в production. Как и зачем? (20)

Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
 
Joker2014
Joker2014Joker2014
Joker2014
 
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»
 
Can we have some more quality - Russian version
Can we have some more quality - Russian versionCan we have some more quality - Russian version
Can we have some more quality - Russian version
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 
Как стать героем
Как стать героемКак стать героем
Как стать героем
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
reactive dotNet
reactive dotNetreactive dotNet
reactive dotNet
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчей
 
Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NET
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всем
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradle
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
 
Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»
 

More from DotNetConf

More from DotNetConf (18)

Как грабить корованы
Как грабить корованыКак грабить корованы
Как грабить корованы
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
 
К искусству записи пользовательских историй
К искусству записи пользовательских историйК искусству записи пользовательских историй
К искусству записи пользовательских историй
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Кроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и противКроссплатформенная библиотека для Android и iOS: за и против
Кроссплатформенная библиотека для Android и iOS: за и против
 
Быстрый бэкенд с parse.com
Быстрый бэкенд с parse.comБыстрый бэкенд с parse.com
Быстрый бэкенд с parse.com
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
Робототехника для прикладных программистов
Робототехника для прикладных программистовРобототехника для прикладных программистов
Робототехника для прикладных программистов
 
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаРазработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
 
Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NET
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NET
 

Kotlin в production. Как и зачем?