Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
26 Мар 2024
7 мин
1747

Kotlin for Android — обзор на популярный язык программирования

Пройдите тест, узнайте какой профессии подходите

Kotlin лучше Java? Как такой молодой язык программирования смог набрать популярность? В статье рассказываем о преимуществах Kotlin, разбираем примеры и сравниваем

Что такое Kotlin

Kotlin — кросс-платформенный объектно ориентированный, статически типизированный язык программирования общего назначения. Это язык, в котором собрали все преимущества Java и убрали все его недостатки.

В 2019 году, на конференции Google I/O, команда Android объявила, что Kotlin будет основным языком программирования для приложений под Android. Код на Kotlin можно компилировать в байт-код JVM, транспонировать в JavaScript и даже компилировать для нативной работы без виртуальной машины.

Что можно писать на Kotlin

Kotlin — это мощный и универсальный язык программирования, его активно используют в разных сферах разработки. В Kotlin сочетается лаконичность, безопасность и совместимость с Java.

  1. Приложения для Android
    Kotlin — официальный язык для разработки Android-приложений. Он упрощает работу с API, уменьшает количество шаблонного кода и снижает вероятность ошибок: в Kotlin есть встроенная система обработки null-значений. Большинство современных Android-приложений разрабатываются именно на Kotlin.
  2. Серверные приложения
    Kotlin отлично подходит для разработки бэкенд-систем. Он поддерживает фреймворки Ktor, Spring Boot и Micronaut, поэтому на нём создают высокопроизводительные веб-сервисы и микросервисную архитектуру. Kotlin легко интегрируется в существующие серверные проекты — он полностью совместим с языком Java.
  3. Веб-приложения (фронтенд)
    Kotlin традиционно используют для серверной и мобильной разработки. Но еще его применяют, чтобы написать код для фронтенда — внешней части сайта. Можно компилировать (перевести) Kotlin в JavaScript и использовать его в веб-приложениях, создавать интерактивные пользовательские интерфейсы с поддержкой популярных фреймворков, например React.
  4. Кросс-платформенные мобильные приложения
    На Kotlin Multiplatform разработчики создают мобильные приложения, которые работают и на Android, и на iOS. Так можно переиспользовать код для бизнес-логики и сетевых запросов и сильно снизить затраты на поддержку двух отдельных кодовых баз.
  5. Наука и большие данные
    Kotlin используют и в области научных исследований, анализа данных и машинного обучения. Фреймворк Kotlin DataFrame и интеграция с библиотеками Java, например Apache Spark, дают работать с большими объемами информации и строить сложные аналитические модели.

Преимущества

Вот основные плюсы языка Kotlin.

Компиляция в байт-код JVM и импорт Java-кода

Вы сможете запускать код на Kotlin в любой среде, где доступна JVM. Kotlin умеет нативно импортировать Java-код, то есть использовать любые существующие фреймворки, библиотеки или бизнес-логику.

Умная компиляция

Компилятор Kotlin находит ошибки в момент компиляции, а не в момент выполнения программ. А анализатор кода поможет найти неинициализированные переменные и возможные утечки памяти.

Нацеленность на продуктивность разработчика

Разработчик с помощью безопасных вызовов может забыть о NullPointerException, а с помощью умного приведения типов сделает код компактным.
Некоторые паттерны программирования встроены в сам язык: Singleton, Companion object и Delegated properties. Всё это создается в интуитивном синтаксисе, его легко применять в работе.

самые популярные языки программирования в Яндекс Вордстат

Kotlin не самый популярный язык программирования, но им часто пользуются, и специалистов не так уж и много. Значит, конкуренция на рынке тоже невысокая
Источник: iaassaaspaas.ru

Что нужно для начала работы

Исходный код компилятора Kotlin открыт и доступен на GitHub. Есть две опции, как скомпилировать и запустить код на Kotlin:

  • Из командной строки. Все релизы компилятора доступны на GitHub.
  • С помощью IntelliJ IDEA, которую можно загрузить на официальном сайте JetBrains.

Сгенерированный проект в IntelliJ IDEA содержит файл с функцией main:
здесь код из статьи, не могу скопировать нормально
В отличие от Java, где доступен только объектно ориентированный код, Kotlin поддерживает процедурное программирование и позволяет создавать функции вне классов.

Приходите на курс Skypro «Java-разработчик», если хотите сначала изучить Java.
Узнаете, как проектировать архитектуру приложений, разрабатывать информационные системы и оптимизировать работу сайтов. Выполните практические проекты, получите диплом и гарантию трудоустройства.

Как работает Kotlin

Разберем необходимый минимум для начала работы.

Переменные

Различия между Java и Kotlin начинаются уже с синтаксиса объявления переменных:

1 var <имя переменной>:<тип переменной> = <значение>

и констант:

1 val <имя переменной>:<тип переменной> = <значение>

Базовые типы переменных:

  • числа (Float, Double, Byte, Short, Int, Long и их беззнаковые аналоги),
  • boolean,
  • char,
  • строки,
  • массивы.

Все базовые объекты в Kotlin — классы.

Null-безопасность

Предыдущий пример создания переменной подразумевает, что в нее нельзя записать null. Такой код выдаст ошибку при попытке его скомпилировать:

1 var nonNullVariable:Int = null

Синтаксис объявления переменной, которая может принимать null:

1 var nullableVariable: int? = null

Используя такой тип переменных, мы можем создать более безопасный код:

1 println(nullableVariable?.toString())

Метод toString будет вызван только в случае, если nullableVariable не содержит null.

Методы

Синтаксис для объявления процедур и методов:

fun <имя метода>(<список аргументов>):<тип возвращаемого значения> {
<тело функции>
return <возвращаемое значение>
}

Функция будет объявлена как void, если тип возвращаемого значения не указан.

Циклы

У Kotlin есть три типа циклов:

  • for,
  • while,
  • do-while.

Цикл for позволяет перебирать элементами коллекций:

val items: IntArray = intArrayOf(1, 2, 3)
for (item: Int in items) {
println(item)
}

либо диапазоном чисел:

for (item: Int in 1..3) {
println(item)
}

while- и do-while-циклы работают аналогично циклам в Java.

var index: Int = 1
while (index >= 3) {
println(index)
index += 1
}

do {
println("this text will be printed only once")
} while (false)

Классы

Синтаксис объявления классов пошел от Java:

class <имя класса> {
}

Приходите на курс Skypro «Java-разработчик» и познакомьтесь с языком Java. На реальных задачах научитесь работать с классами, кодом, библиотеками, коллекциями. Опытные преподаватели объяснят всё доступным языком с примерами из своей практики. А наставники ответят на вопросы и помогут справиться со сложными заданиями.

По умолчанию создастся final class, который нельзя унаследовать. Сделаем класс доступным для наследования — добавим ключевое слово open:

open class Base {
}

class Derived : Base() {
}

Классы в Kotlin могут иметь один и более конструкторов. Главный конструктор объявляется в сигнатуре самого класса:

open class Base constructor(firstProperty: Int, secondProperty: Int) {
}

class Derived : Base {
constructor(firstProperty: Int, secondProperty: Int) : super(firstProperty, secondProperty)
}

Все дополнительные конструкторы могут быть перечислены в теле самого класса:

open class Base constructor(firstProperty: Int, secondProperty: Int) {
constructor(firstProperty: Int) : this(firstProperty, 0)
}

class Derived : Base {
constructor(firstProperty: Int, secondProperty: Int) : super(firstProperty, secondProperty)
constructor(firstProperty: Int) : super(firstProperty)
}

Чтобы выполнить код при создании экземпляра класса, используют блоки инициализации:

open class Base constructor(firstProperty: Int, secondProperty: Int) {
constructor(firstProperty: Int) : this(firstProperty, 0)

init {
println("Base class was just created")
}
}

Если таких блоков несколько, они будут выполнены в том порядке, в котором объявлены в теле класса:

open class Base constructor(firstProperty: Int, secondProperty: Int) {
constructor(firstProperty: Int) : this(firstProperty, 0)

init {
println("Base class was just created")
}

init {
println("this init block executed later")
}
}

Отличия от Java

Kotlin проектировали как преемника Java — его более современную версию — и добавили в него новые конструкции, недоступные в Java.

Java и Kotlin

Источник: Хабр

Если вы не знакомы с функционалом Java, запишитесь на курс Skypro «Java-разработчик». Освоите релевантные навыки, составите портфолио и получите диплом установленного образца.

Extension functions

Эти опции дают расширять классы новыми методами. Это статически типизированные методы, которые можно вызывать как другие методы класса:

class ExtendMe {
}

fun ExtendMe.extension() {
println("Extension function for ExtendMe class")
}

fun main(args: Array) {
val instance:ExtendMe = ExtendMe()
instance.extension()
}

Форматирование строк

Вот как выглядит форматирование строки средствами самого языка:

val number: Int = 10
val bit: Boolean = false
println("number: $number, bit: $bit")
println("calculated hash code: ${number.hashCode()}")

Корутины

Корутины — это неблокирующие функции, которые позволяют писать асинхронный код:

fun nonBlockingMethod() = runBlocking {
launch {
delay(1000L)
println("this text will be printed later")
}
println("text to print first")
}

Делегирование

Альтернатива наследованию, позволяет передавать ответственность за выполнение методов другому классу:

interface IBase {
fun print()
}

class BaseImplementation() : IBase {
override fun print() {
println("BaseImplementation class")
}
}

class Derived(baseInstance: IBase) : IBase by baseInstance

fun main(args: Array) {
val instance: BaseImplementation = BaseImplementation()
Derived(instance).print()
}

Data-классы

Позволяют создавать классы, которые предназначены исключительно для хранения данных:

data class Storage(val type: String, val size: Int)

Перегрузка операторов

Операторы можно научить работать с классами:

class Number constructor(val value: Int) {
operator fun plus(other: Int): Number {
return Number(value + other)
}

override fun toString(): String {
return this.value.toString()
}
}

fun main(args: Array) {
println("5 + 10 is ${Number(5) + 10}")
}

Подборка обучающих материалов

У Kotlin есть подробная документация, которая поможет стартовать в изучении языка. И неофициальная версия на русском языке.

Kotlin docs

Так выглядит интерфейс официальной документации на языке Kotlin

Компания Google подготовила материал по созданию приложений для Android. В нём базовые примеры языка и детали, специфичные для Android.

А еще у Kotlin большое сообщество, которое собирает разные курсы и помогает в обучении.

Коротко о главном

  • Kotlin — отлично спроектированный язык программирования с большой аудиторией.
  • Его популярность растет не только в устройствах на Android, но и в серверной разработке, вытесняя Java.
  • Программисты на Kotlin уже сейчас востребованы на рынке. Только на хедхантере больше 700 вакансий, и количество будет расти.

Добавить комментарий