Kotlin — современный язык для JVM, Android и мультиплатформенной разработки
Kotlin — это статически типизированный язык, созданный JetBrains, который работает поверх JVM (как Java), компилируется в JavaScript или нативный код (Kotlin/Native), а также поддерживает мультиплатформенную разработку (KMP).
🔥 Почему Kotlin?
✔ Лаконичнее Java (меньше шаблонного кода).
✔ Полная совместимость с Java (можно использовать вместе).
✔ Официальный язык для Android (с 2017 года).
✔ Поддержка корутин (асинхронность без callback hell).
✔ Null-безопасность на уровне языка.
🚀 Основные возможности Kotlin
1. Синтаксис и базовые конструкции
🔹 Переменные:
val immutable = 10 // Неизменяемая (как final в Java)
var mutable = "Hello" // Изменяемая
🔹 Функции:
fun sum(a: Int, b: Int): Int = a + b // Сокращённая форма
fun printMessage(msg: String) { println(msg) }
🔹 Условные операторы:
val max = if (a > b) a else b // if-else как выражение
2. Null-безопасность
var name: String? = null // "?" обозначает nullable-тип
val length = name?.length ?: 0 // Elvis-оператор (если null, то 0)
3. Коллекции
val list = listOf("A", "B", "C") // Неизменяемый список
val filtered = list.filter { it != "A" } // Лямбда-выражение
4. Корутины (асинхронность)
import kotlinx.coroutines.*
fun main() = runBlocking {
launch { // Запуск корутины
delay(1000) // Неблокирующая задержка
println("World!")
}
println("Hello")
}
// Вывод: Hello -> World!
5. Классы и ООП
class Person(val name: String, var age: Int) { // Автоматические геттеры/сеттеры
fun greet() = println("Hi, I'm $name")
}
// data-класс (авто-generate toString, equals, hashCode)
data class User(val id: Int, val email: String)
6. Расширения (Extensions)
fun String.addExclamation() = "$this!" // Добавляем метод к String
println("Hi".addExclamation()) // "Hi!"
📱 Kotlin для Android
- Полная замена Java в Android-разработке.
- Android KTX — набор Kotlin-расширений от Google.
- Jetpack Compose — современный UI-фреймворк на Kotlin.
🔹 Пример Android-кода (Activity):
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
Toast.makeText(this, "Clicked!", Toast.LENGTH_SHORT).show()
}
}
}
🌍 Kotlin Multiplatform (KMP)
Позволяет писать общий код для:
- Android и iOS (через Kotlin/Native).
- Веб-фронтенд (Kotlin/JS).
- Бэкенд (Ktor, Spring Boot).
🔹 Пример общего модуля (KMP):
expect fun platformName(): String // Объявление (ожидаем реализацию на каждой платформе)
fun greet() = "Hello from ${platformName()}" // Общий код
⚡ Kotlin vs. Java
Критерий | Kotlin | Java |
---|---|---|
Null-безопасность | ✅ (типы String? ) | ❌ (NullPointerException ) |
Синтаксис | Лаконичный (data-классы, лямбды) | Много шаблонного кода |
Корутины | Встроенная поддержка | CompletableFuture/RxJava |
Функциональное | Коллекции + higher-order функции | Stream API (с Java 8+) |
🛠 Как начать?
- Установка:
- IntelliJ IDEA (лучшая поддержка Kotlin).
- Android Studio (для Android-разработки).
- Первый проект:
- Hello World:
kotlin fun main() { println("Hello, Kotlin!") }
- Документация: kotlinlang.org.
📊 Плюсы и минусы Kotlin
✅ Преимущества
✔ Совместимость с Java (можно мигрировать постепенно).
✔ Поддержка Google (Android, Firebase).
✔ Мультиплатформенность (KMP).
❌ Недостатки
❌ Скорость компиляции (медленнее Java в некоторых случаях).
❌ Меньше ресурсов для KMP, чем для нативных технологий.
🚀 Где используется?
- Android-приложения (Pinterest, Trello, Airbnb).
- Бэкенд (Spring Boot + Kotlin).
- Desktop (TornadoFX).
- Kotlin/Native (мобильные и embedded-системы).
🔥 Вывод
Kotlin — это современная альтернатива Java с:
✔ Улучшенным синтаксисом.
✔ Безопасностью и асинхронностью.
✔ Поддержкой мультиплатформенности.
Что учить дальше?
- Kotlin Coroutines (для асинхронного кода).
- Ktor (фреймворк для бэкенда).
- Jetpack Compose (декларативный UI для Android).