Мови програмування
Kotlin
Сучасна лаконічна мова для JVM, Android і мультиплатформної розробки, повністю сумісна з Java.
Що це
Kotlin створила компанія JetBrains. Мову анонсували у 2011 році, стабільна версія 1.0 вийшла у 2016. У 2019 Google оголосив Kotlin основною мовою Android-розробки.
Вона компілюється в байткод JVM, а також у JavaScript і нативний код (Kotlin Multiplatform). Код на Kotlin і Java вільно викликає один одного, тому міграція йде поступово.
Мова усуває типовий для Java шум: data class, null safety в системі типів, extension-функції, корутини для асинхронності. Застосовується в Android, на бекенді (Spring, Ktor) і в Compose Multiplatform.
Коли брати
- Нативний Android-застосунок: це рекомендована мова.
- Бекенд на JVM, де хочеться менше шаблонного коду, ніж у Java.
- Спільна бізнес-логіка між Android, iOS і вебом через Kotlin Multiplatform.
Коли не варто
- Команда без досвіду JVM і з вимогою мінімального часу збірки: компіляція повільніша за Java.
- Жорсткі обмеження на розмір бінарника чи старт, як у маленьких CLI.
Ключові поняття
- Null safety
- Тип
Stringне може бути null, аString?може. Компілятор змушує перевіряти. - Data class
- Клас для даних із автоматичними equals, hashCode, toString і copy.
- Coroutines
- Легка асинхронність через
suspend-функції замість колбеків і потоків. - Extension function
- Додає метод до існуючого типу без наслідування.
- Kotlin Multiplatform
- Спільний код для JVM, Android, iOS і вебу з платформо-специфічними частинами.
Приклад
Питання на співбесіді
1. Як Kotlin вирішує проблему null?
Nullable-типи позначаються
?. Компілятор не дозволяє викликати метод на nullable без перевірки, а оператори?.,?:іletроблять це зручним. Це прибирає більшість NullPointerException.2. Що таке корутини?
Це механізм асинхронності, де
suspend-функція може призупинитись, не блокуючи потік. Код виглядає послідовно, а запускається черезlaunchчиasyncу scope.3. val чи var?
valце незмінне посилання,varзмінне. Стиль Kotlin радитьvalза замовчуванням.4. Чи можна змішувати Kotlin і Java в одному проєкті?
Так, вони компілюються в той самий байткод і взаємно викликаються. Тому проєкти мігрують поступово.
Схожі технології
Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).