Kotlin для розробки Android
Артем Клєйншмідт,
Android developer, MindK
Що таке Kotlin
Kotlin - статично типізована мова програмування від компанії
JetBrains.
2011 - вперше представлена
2016 - перший стабільний реліз
2017 - компанія Google оголосила Kotlin офіційно підтримуваною
мовою програмування для платформи Android
Переваги Kotlin
● Повна зворотня зумісність з Java
● Null-safe на рівні компіляції
● Data класи
● Підтримка як ООП, так і функціональної парадигми
● Зручна стандартна бібліотека
● Малий розмір (додає приблизно 100КБ до android
додатків)
Базовий синтаксис
Функція
Read-only змінна
Змінна
Клас, інтерфейс
Data класи
Містить автоматично згенеровані getters, setters, toString(), copy(),
hashCode(), equals()
Зворотня сумісність з Java
Класи, написані на Kotlin можна використовувати в Java, і
навпаки
Null Safety
Кожне посилання має бути явно указано як nullable або non-null
Null Safety
Елвіс оператор ?:
Безпечні виклики ?.
Null Safety
Приклад
Java
Kotlin
Control Flow
If є виразом, повертає значення
When - заміна switch з Java
Функції
Лямбда - анонімна функція
Java 7
Kotlin
Функції
Функція вищого порядку - функція, що приймає іншу функцію як
аргумент, або повертає функцію
Функції
Inline operator
Функції
Параметри за замовчуванням
Делегація
Kotlin має вбудовану підримку паттерна Delegation.
Делегація
Delegated Properties
Можна створити власний делегат
Делегація
Lazy делегат
Результат:
computed!
Hello
Hello
Smart casts
Java
Kotlin
Collections
Kotlin collections API - по факту огортка над Java колекціями.
Collections
Колекції мають вбудовані зручні utils функції, такі як first(), last(),
filter(), sort(), zip() і т.п.
Стандартна бібліотека
Стандартна бібліотека містить також набір корисних функцій, які
можна застосовувати до об’єктів будь-яких типів
Стандартна бібліотека
Extension functions
В Kotlin є можливість додавати методи до класів, не створюючи
при цьому нащадків
Android SDK
Add some Kotlin magic
Wrapping 3d party API
Наприклад, обробка дерева View (Android SDK)
Java Kotlin
Wrapping 3d party API
Мінуси міграції на Kotlin
● Втрата історії git при конвертації файла
● Нестача Kotlin спеціалістів
● Менше інформації в мережі в порівнянні з Java
● Порушення null-safety при використанні Java і Kotlin разом
● Уповільнення швидкості зборки проекту за деяких умов
Менше інформації в мережі в порівнянні з Java
StackOverflow: Java ~1 300 000 питань, Kotlin ~5000
Менше тредів на форумах
Менше opensource проектів: github Java ~1 000 000, Kotlin ~2000
Менше книжок
Порушення null-safety
Уповільнення швидкості зборки проекту
Час білда проекта з чистими build папками
Простий проект:
Java ~25 с.
Kotlin ~27c.
+ Dagger 2 + Data binding
Java: 42 c., 29 c., 26 c.
Kotlin: 55 c., 33 c., 32 c.
Курси MindK
SINGLE PAGE APPLICATIONS
● REST API
● SPA
● Vue.js
● Webpack,
● Asynchronous Programming
● JSON Web Tokens
● Full Stack
Реєстрація триває до 10 жовтня -> learn.mindk.com
Sumy Tech Battles
Coming soon
Tech Battle #8:
?
Приєднуйтесь до нас в соц. мережах
facebook.com/mindklab
instagram.com/mindklab
twitter.com/mindklab
linkedin.com/company/mindk
Дякую за увагу!

More Related Content

PDF
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
PPTX
Presentation
PDF
"Rethinking Continuous Delivery", Andrii Nasinnyk
PDF
iPhone Objective-C Development (ukr) (2009)
ODP
Grok web application framework
PDF
Golang
PPTX
Stfalcon QA Meetup 31.01.2020
PPTX
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
Presentation
"Rethinking Continuous Delivery", Andrii Nasinnyk
iPhone Objective-C Development (ukr) (2009)
Grok web application framework
Golang
Stfalcon QA Meetup 31.01.2020
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...

Similar to Kotlin для розробки Android (17)

PPTX
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
PPTX
Kateryna Hrytsaienko: Kubernetes для хостингу AI моделей: як, чому, навіщо? (UA)
PPTX
PPTX
Kateryna Hrytsaienko: Kubernetes для хостингу AI моделей: як, чому, навіщо? (UA)
PDF
AI від Google: нові можливості для вашого бізнесу
PPTX
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
PPTX
Руйнуємо .NET Міфи
PDF
Павло Юрійчук — Перехід на Angular.js. Howto
PDF
Global logic tech talk switching to Angular.js
PDF
Continious integration jet brains teamcity. Віталій Галушка
PDF
Lecture 06. iOS Programming. Основи Objective-C
PPTX
" GraphQL_ The Good parts", Sergii Lischuk.pptx
PDF
Alexey Borisenko - Network Programmability using Python
PPTX
Patterns.pptx
PDF
"Elements of functional programming in C# based on Language-Ext library as an...
PPTX
.NET Platform. C# Basics
PPTX
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
Kateryna Hrytsaienko: Kubernetes для хостингу AI моделей: як, чому, навіщо? (UA)
Kateryna Hrytsaienko: Kubernetes для хостингу AI моделей: як, чому, навіщо? (UA)
AI від Google: нові можливості для вашого бізнесу
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
Руйнуємо .NET Міфи
Павло Юрійчук — Перехід на Angular.js. Howto
Global logic tech talk switching to Angular.js
Continious integration jet brains teamcity. Віталій Галушка
Lecture 06. iOS Programming. Основи Objective-C
" GraphQL_ The Good parts", Sergii Lischuk.pptx
Alexey Borisenko - Network Programmability using Python
Patterns.pptx
"Elements of functional programming in C# based on Language-Ext library as an...
.NET Platform. C# Basics
Ad

More from UP2IT (18)

PDF
Microservices. Mastering Chaos
PPTX
Сочетание классической и гибкой методологий управления проектами
PPTX
Go для веба глазами PHP-разработчика
PPTX
Дизайнер в эпоху цифровых перемен
PPTX
Продуктовий дизайн і UX / UI дизайн процеси при розробці цифрових продуктів
PPTX
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
PPTX
VR/AR в бизнесе
PPTX
Native DB transactions
PDF
Hell 2 Heaven or Choosing Cloud Provider
PPTX
Automation pyramid within CI process
PPTX
Containers, containers, containers...
PPTX
React. Learn once, write anywhere
PPTX
Сложности и специфика построения систем раздачи адалт видео контента
PPTX
H2H Communication in IT
PPTX
Как я не стал барабанщиком или Как менеджер создает ценность
PPTX
Epic Sales Fails Compilation
PDF
Design Thinking
PPTX
Как настроенные процессы повышают прибыльность и снижают стресс
Microservices. Mastering Chaos
Сочетание классической и гибкой методологий управления проектами
Go для веба глазами PHP-разработчика
Дизайнер в эпоху цифровых перемен
Продуктовий дизайн і UX / UI дизайн процеси при розробці цифрових продуктів
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
VR/AR в бизнесе
Native DB transactions
Hell 2 Heaven or Choosing Cloud Provider
Automation pyramid within CI process
Containers, containers, containers...
React. Learn once, write anywhere
Сложности и специфика построения систем раздачи адалт видео контента
H2H Communication in IT
Как я не стал барабанщиком или Как менеджер создает ценность
Epic Sales Fails Compilation
Design Thinking
Как настроенные процессы повышают прибыльность и снижают стресс
Ad

Kotlin для розробки Android

Editor's Notes

  • #3: Код проекту є у вільному доступі на github Може використовуватись як мова для JVM - компілиться в Java 6/8 байткод, також може бути скомпільована в JavaScript, і в native code Android studio 3.0
  • #6: IDE дають можливість згенерувати toString, equals, hashcode. Але коли ви додаєте, прибираєте, або змінюєте одне з полей класа, то ви маєте згенерувати ці методи наново. І якщо ви забудете це зробити, то матимете дуже цікавий баг.
  • #7: Зверніть увагу, в Kotlin властивості класів завжди доступні через поля, а не через методи
  • #11: Тернарного оператора в Kotlin не існує, так як if повертає значення
  • #15: При використовуванні іменованих параметрів, порядок можна змінювати