Name already in use
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Котлин как первый язык программирования
Решите приведённые в проекте задачи, чтобы научиться программировать на Котлине. Сейчас доступны двенадцать групп задач (уроков).
- Простые функции.
- Ветвления.
- Циклы.
- Работа со списками.
- Работа с ассоциативными массивами (Maps).
- Разбор строк.
- Работа с файлами.
- Простые классы.
- Сложные классы на примере матриц.
- Доп. главы (синтаксический разбор, Kotlin DSL).
- Классы с арифметическими операциями.
- Классы-контейнеры.
В директории tutorial имеется учебное пособие по Котлину на русском языке. Оно содержит введение и девять разделов, каждый из которых относится к соотвествующему уроку в проекте. Разделы 11 и 12 находятся в разработке. Также пособие включает дополнительные разделы, не включающие задач:
Основы Kotlin. Введение
Языки программирования — интереснейшая область современной техники. За последние 30-40 лет информационные технологии разрослись до невероятных пределов, и сейчас мало кто в состоянии обозреть эту область в полном объёме. Компьютерные программы выросли с нескольких сотен строк до десятков миллионов строк, применяются сейчас в самых разных областях и запускаются на самых разных платформах, например:
- обыкновенные программы для персонального компьютера, часто называемые desktop-программами;
- web-программы, которые делятся, в свою очередь, на клиентскую часть, выполняющуюся на компьютере пользователя, и серверную, выполняющуюся на сервере;
- мобильные приложения для планшетов, смартфонов и других мобильных устройств;
- системные программы, являющиеся частью операционной системы;
- встраиваемые программы, являющиеся частью встраиваемых систем управления (применяемые, например, в транспорте, банкоматах, станках с программным управлением, при программировании роботов).
Языки программирования
Для написания разных видов программ сейчас применяются разные языки программирования. Например, в сфере разработки мобильных приложений основными являются языки Java и Kotlin (устройства под управлением Android), а также Swift (мобильные устройства под управлением iOS).
Системные программы, как правило, пишутся на языках C или C++. Эти же языки долгое время использовались и для создания встраиваемых программ, но в последние годы в этой области набирает популярность язык Java. Для написания web-клиентов часто используется JavaScript, а в простых случаях — язык разметки страниц HTML. Web-серверы используют опять-таки Java (в сложных случаях), а также Python и PHP (в более простых). Наконец, простые desktop-программы сейчас могут быть написаны на самых разных языках, и выбор во многом зависит от сложности программы, области её использования, предполагаемой операционной системы. В первую очередь следует назвать языки Java, C++, C#, Python, Visual Basic, Ruby, Swift.
В каком-то смысле самым универсальным и одновременно самым распространённым языком программирования на данный момент следует считать язык Java. Java в широком смысле — не только язык, но и платформа для выполнения программ под самыми разными операционными системами и на разной аппаратуре. Такая универсальность обеспечивается наличием виртуальной машины Java — специальной системной программы, интерпретирующей Java байт-код в машинные коды конкретного компьютера или системы. Java также включает богатейший набор библиотек для разработки.
Почему Kotlin
Однако для начинающих язык Java является несколько многословным и сложным. Это пособие посвящено другому языку программирования, спутнику Java — языку Котлин. Котлин — молодой, лёгкий для изучения язык программирования, позволяющий писать программы под платформы JVM и Android более лаконично, просто и с меньшим количеством ошибок по сравнению с языком Java. Котлин и Java — полностью интероперабельные языки, поэтому одна и та же программа может быть частично написана на Котлине, частично на Java. Программы на Котлине могут использовать все имеющиеся Java-библиотеки, и наоборот. На данный момент программы на Котлине пишут сотни тысяч программистов, основная ниша его промышленного применения — мобильные приложения под платформу Android и, в несколько меньшей степени, web-разработка.
В ходе изучения Котлина мы изучим также многие элементы стандартной библиотеки Java, а понимание работы программ на Котлине во многом упростит понимание работы Java-программ. После освоения основ языка Kotlin вы сможете уверенно освоить уроки по разработке андроид-приложений на языке Котлин.
Также на нашем сайте есть Продвинутые курсы по созданию реальных андроид-приложений на языке Котлин
Что требуется для начала
Самый простой способ начать программировать на Котлине — зайти на сайт http://try.kotlinlang.org. Имеющаяся там “песочница” позволяет писать программы прямо в браузере, с возможностью выполнять и сохранять свои программы и проходить обучающие курсы.
Масштабы песочницы, однако, достаточны только для небольших программ, а более-менее серьёзные программы, как правило, разрабатываются в интегрированной среде (IDE). Разработка под платформу Java в любом случае требует установки пакета JDK, который необходимо скачать с сайта компании Oracle. Первое время вам потребуется Java Platform, Standard Edition, рекомендуется 8-я её редакция, на сентябрь 2018 года последняя её версия — Java SE 8u181.
Среда разработки IntelliJ IDEA
В качестве интегрированной среды разработки рекомендую установить IntelliJ IDEA Community Edition, её следует брать отсюда. Community Edition является полностью бесплатной, базовая версия обеспечивает поддержку программирования на Java, Kotlin, Scala, Groovy, поддержку систем контроля версий Git, Mercurial, SVN, интеграцию с системами сборки Maven и Gradle.
Для интеграции IDEA с системой контроля версий Git необходимо установить один из клиентов Git. Таких клиентов существует много; “родной” Git клиент можно скачать здесь. Имейте в виду, что в IDEA интегрирован собственный Git-плагин, уже имеющий графический интерфейс, поэтому скачивать и устанавливать клиенты Git с графическим интерфейсом (GUI Clients) необязательно.
Учебный проект
В ходе обучения мы будем активно использовать проект “Котлин как первый язык программирования”, содержащий текст данного пособия и около сотни различных задач на языке Kotlin. Оригинальный код данного проекта доступен по адресу https://github.com/Kotlin-Polytech/KotlinAsFirst2018 на сайте GitHub, который является специализированным хранилищем программных кодов и основан на системе контроля версий Git. Для того, чтобы начать работать с этим проектом, Вам необходимо выполнить следующие действия.
- Зарегистрироваться на https://github.com/ (в случае, если у Вас еще нет GitHub аккаунта). Далее выбранное Вами имя будет обозначаться как <USERNAME>.
- Создать специальную копию репозитория проекта — форк. Для этого достаточно зайти на страницу проекта https://github.com/Kotlin-Polytech/KotlinAsFirst2018 и нажать кнопку Fork в правом верхнем углу страницы. После этого Ваша персональная копия проекта станет доступна по адресу https://github.com/<USERNAME>/KotlinAsFirst2018, и всю работу по решению различных задач Вы должны выполнять именно с Вашей копией.
- Для загрузки проекта в IntelliJ IDEA следует выполнить команду Check out from Version Control → GitHub из окна Welcome to Intellij IDEA (или File → New → Project from Version Control → GitHub из окна проекта), в появившемся окне ввести Git Repository URL https://github.com/<USERNAME>/KotlinAsFirst2018 и место на компьютере, куда будет скачан проект (Parent Directory).
- Далее следуйте инструкциям среды для настройки проекта. Подробное руководство вы можете найти здесь.
Проект содержит задачи, разбитые на девять уроков (lesson). Тексты задач доступны через окно Project в IntelliJ IDEA (открывается комбинацией клавиш Alt + 1 ). В папках src/lessonX , где X — номер урока, находятся примеры решённых задач к данному уроку, тексты задач, которые необходимо решить, и готовые заглушки функций для написания решения. В папках test/lessonX находятся тестовые функции к задачам. Подробнее о задачах и тестах см. раздел 1 этого пособия.
Список уроков по основам Котлин
Вопросы
В ходе изучения нового языка у вас, конечно, будут возникать вопросы, не стесняйтесь их задавать. У вас есть следующие возможности:
- посмотреть “часто задаваемые вопросы” далее по тексту
- поискать ответ на вопрос с помощью поисковой системы в Интернете
- почитать разнообразную информацию о Котлине в его документации
- русскоязычная документация по Котлину здесь
- задать нам вопрос в Kotlin Slack (получить приглашение можно здесь) в канале russian-kotlinasfirst
- воспользоваться другими ресурсами для общения
Kotlin Slack — это система общения, созданная специально для программистов на Котлине. Система состоит из множества каналов, посвящённых разным аспектам программирования на Котлине — в большинстве из них общение идёт на английском языке. Нашему курсу посвящён канал russian-kotlinasfirst, и там вы сможете задать любые вопросы по этому курсу на русском языке. В качестве других важных каналов имеется general — канал с общими обсуждениями, касающимися Котлина, и russian — общий канал для русскоязычных Котлин-программистов.
Часто задаваемые вопросы (F.A.Q.)
- Что делать, если при открытии файла расширением .kt из учебного проекта (например, Simple.kt) вы видите сообщение над ним Project SDK is not defined ?
Нажмите на ссылку Setup SDK в правой части сообщения. Выберете JDK 1.8 для работы с проектом в появившемся окне. Если список JDK в окне пуст или не содержит JDK 1.8, следует нажать на клавишу Configure , затем зелёный плюс в верхнем левом углу и зарегистрировать установленную на Вашем компьютере JDK 1.8 в Intellij IDEA. Если Вы забыли установить JDK, это следует сделать, предварительно скачав её с сайта Oracle.
- Что делать, если отсутствует зелёный треугольник напротив функции main и тестовых функций?
Откройте окно Maven Projects на панели в правой части окна IDEA (если вы не видите там такой надписи, откройте его через меню — View > Tool Windows > Maven Projects) и нажмите в нём на кнопку с изображением двух стрелок в круге. Дождитесь окончания импортирования Maven-проекта (наблюдайте за надписями в нижней части окна IDEA), после чего зелёные треугольники должны появиться. Проверьте также отсутствие надписи Project SDK is not defined в верхней части окна (см. вопрос выше).
Если вам не удаётся открыть окно Maven Projects, попробуйте выйти из Intellij IDEA и войти в неё заново.
Что дальше?
Уроки создания андроид-приложений на Kotlin
Раздел с уроками по андроид разработке на языке Котлин на нашем сайте по ссылке.
Также предлагаем Продвинутые курсы:
Использованы материалы онлайн-курса “Котлин как первый язык программирования” в соответствии с лицензией
Введение в Котлин

Ashraff Hathibelagal Last updated Jun 22, 2015
Введение
С тех пор, как Apple выпустила язык программирования Swift для iOS, многие разработчики Android хотели использовать аналогичный язык для разработки Android. Если вы один из тех разработчиков, вам понравится Kotlin, язык JVM, который очень похож на Swift.
Kotlin — это статически типизированный язык, разработанный JetBrains, синтаксис которого более выразителен и краток, чем язык Java. С такими возможностями, как функции более высокого порядка, лямбда выражения, перегрузка операторов, строковые шаблоны и т.д., у Kotlin есть намного больше возможностей, чем Java. Поскольку Java и Kotlin очень совместимы, их можно использовать вместе в одном проекте.
Если вы являетесь компетентным программистом на Java, вы сможете научиться Kotlin за очень короткое время. В этом уроке я расскажу вам, как использовать наиболее часто используемые конструкции Kotlin.
Предпосылки
Чтобы следовать за мной, вам понадобятся:
- хорошее понимание Java.
- последняя версия компилятора Kotlin. Кроме того, вы можете использовать онлайн-playground.
1. Классы
Чтобы создать класс в Kotlin, вам нужно использовать ключевое слово class . Например, вот как вы создаете пустой класс Person:
Добавление свойств
Класс обычно имеет свойства и функции-члены (также называемые методами). Давайте добавим два свойства в классе Person , name типа String и age типа Int .
Как вы можете видеть, синтаксис для создания переменных несколько отличается от синтаксиса Java. Чтобы создать переменную в Kotlin, вы должны использовать ключевое слово var . Однако, если вы хотите, чтобы ваша переменная была переменной только для чтения/назначения-единожды, используйте вместо этого ключевое слово val .
Ради null безопасности Kotlin также проводит различие между переменными, которые могут быть null и переменными, которые никогда не могут быть null . В нашем предыдущем примере переменные name и age не могут быть null . Если они равны null, компилятор вызовет ошибку.
Чтобы создать переменную, которая может содержать null , вам нужно добавить ? после типа переменной. Например:
Теперь, когда у нас есть класс, можно легко создать его экземпляр:
Нет, у Kotlin нет ключевого слова new . Когда экземпляр создан, вы можете получить доступ к его свойствам так же, как и в Java:
Использование конструкторов
Инициализация отдельных свойств нашего экземпляра, как мы только что сделали, не является хорошей практикой кодирования. Лучший способ сделать это — использовать конструктор. Синтаксис Kotlin’s для создания такого конструктора очень компактен:
Фактически, если вам нечего добавить в свой класс, вам не нужны фигурные скобки. Следующий код работает очень хорошо:
Возможно, вам уже очевидно, что вы не можете добавить к этому конструктору собственный код. Этот конструктор, который является частью заголовка класса, называется основным конструктором.
Чтобы добавить к вашему классу дополнительные конструкторы, известные как вторичные конструкторы, вы должны использовать ключевое слово constructor . Вторичные конструкторы должны делегировать основному конструктору, используя ключевое слово this . Давайте добавим вторичный конструктор в наш класс, который инициализирует значение свойства с именем email:
Чтобы создать экземпляр с использованием вторичного конструктора, вы пишете что-то вроде этого:
Добавление функций-членов
В Kotlin функции создаются с использованием ключевого слова fun . Давайте добавим простую функцию-член с именем isEligibleToVote, которая возвращает значение Boolean :
Обратите внимание, что тип возвращаемого значения указывается в конце заголовка функции. Вы можете вызвать этот метод так же, как и в Java:
Создание расширений
Kotlin позволяет вам расширить класс, добавив к нему дополнительные функции без изменения его первоначального определения. Такие функции называются расширениями. Именам этих функций должны предшествовать имена классов, которые они распространяют.
Например, чтобы добавить расширение с именем isTeenager в класс Person , вы напишите следующий код вне класса:
Эта функция особенно полезна, когда вы хотите расширить классы, не принадлежащие кодовой базе вашего проекта. Например, следующий фрагмент кода добавляет расширение containsSpaces в класс String :
Создание производных классов
При создании производного класса важно помнить следующее:
- Вы должны использовать : вместо ключевого слова Java extends .
- Заголовок базового класса должен иметь аннотацию open .
- Если ваш базовый класс имеет конструктор, который принимает параметры, ваш производный класс должен инициализировать эти параметры в самом заголовке.
Давайте создадим класс с именем Employee, который происходит от Person :
Переопределение функций-членов
В Kotlin вам нужно явно указать, что функцию-член можно переопределить, используя аннотацию open в заголовке метода в базовом классе. В производном классе открытые функции могут быть переопределены с помощью аннотации override .
Например, чтобы переопределить метод isEligibleToVote , вы добавляете следующий фрагмент кода в класс Employee :
Создание статических методов
Kotlin не позволяет создавать статические методы. Тем не менее, это позволяет вам создавать функции уровня пакета, которые не принадлежат ни одному классу.
Метод main — это, пожалуй, самый известный статический метод. Если вы хотите добавить метод main в пакет с именем com.tutsplus.code.tutorial, тогда ваш код будет выглядеть так:
2. Функции
Вы уже научились создавать простые функции в предыдущих примерах. Синтаксис, который вы использовали для создания этих функций, был очень похож на синтаксис Java. Однако Котлин позволяет вам делать больше с функциями.
Создание функций единичного выражения
Если функция возвращает значение одного выражения, вы можете использовать оператор = после заголовка функции, за которым следует выражение для определения функции.
Например, чтобы добавить метод к классу Person , который возвращает true , если человек является восьмидесятилетним, вы должны написать:
Как вы можете видеть, этот сокращенный синтаксис более компактен и читабелен.
Функции более высокого порядка и лямбда-выражения
Функции более высокого порядка — это функции, которые могут возвращать функции или принимать функции в качестве параметров. С другой стороны, выражение лямбда — это просто функция, которая не имеет имени. Обычно лямбда-выражения и функции более высокого порядка используются вместе.
Рассмотрим следующий пример, демонстрирующий синтаксис лямбда-выражения:
Это простое лямбда-выражение, которое принимает два параметра: x и y и возвращает их сумму. Как вы могли догадаться, параметры функции перечислены перед оператором -> , а тело функции начинается после оператора -> . Это лямбда-выражение может быть присвоено переменной и использовано следующим образом:
Обратите внимание, что тип переменной, которая содержит выражение лямбда, указывает типы его параметров и возвращаемое значение.
Создание функции более высокого порядка, которая может принимать приведенное выше лямбда-выражение в качестве параметра, так же просто. Например, чтобы создать функцию, которая удваивает результат выражения лямбда, вы должны написать:
Вы можете вызвать эту функцию следующим образом:
Кроме того, вы можете передать выражение лямбда прямо в функцию более высокого порядка:
Лямбда-выражения часто используются с массивами. Например, рассмотрим следующий массив значений Int :
Если вы хотите, получить квадрат для значения каждого элемента в массиве, вы можете использовать функцию map вместе с выражением лямбда следующим образом:
3. Диапазоны
Выражения диапазона очень часто используются в Kotlin. Вы уже использовали их при создании методов isTeenager и isOctogenarian .
To create a range, all you need is the .. operator.
Чтобы создать диапазон в порядке убывания, используйте функцию downTo .
Если вы не хотите, чтобы шаг был 1, вы можете указать пользовательское значение, используя функцию step .
В этом уроке вы увидите больше выражений диапазона.
4. Условные конструкции
В Kotlin if — выражение, которое возвращает разные значения в зависимости от того, выполнено ли условие. Следующий пример иллюстрирует, как это работает.
when выражение эквивалентно Java switch . Тем не менее, оно намного более универсально. Например, рассмотрим следующий пример.
Как вы можете видеть, when в качестве условий могут принимать не только одиночные значения, но и выражения.
5. Конструкции циклов
for..in
В Kotlin вы можете использовать цикл for..in для циклического преобразования массивов, коллекций и всего остального, который предоставляет итератор. Его синтаксис почти идентичен синтаксису Java, за исключением использования оператора in вместо оператора Java : . В следующем примере показано, как выполнить цикл массива объектов String .
С помощью выражений диапазона вы можете заставить этот цикл вести себя как традиционный цикл for C-стиля.
while и do..while
Синтаксис while и do . while циклов в Kotlin идентичен синтаксису, используемому в Java. Например, следующий код Kotlin перебирает массив объектов String с использованием цикла while :
6. Шаблоны строк
Kotlin позволяет вставлять переменные и выражения в строки, обертывая их парой фигурных скобок с префиксом символа $ . Например:
Заключение
В этом уроке вы изучили основы языка программирования Kotlin. Несмотря на то, что мы рассмотрели несколько конструкций здесь, у Котлина есть куда больше возможностей. Фактически, по состоянию на июнь 2015 года Котлин по-прежнему доступен только для предварительного просмотра. Вероятно, в ближайшие месяцы он увидит несколько улучшений и новых функций.
Если вы хотите узнать, как использовать Kotlin в Android Studio, взгляните на статью Как использовать Kotlin в своих проектах Android. Чтобы узнать больше о языке Котлин, я рекомендую посетить документацию Kotlin.
Почему вам стоит выучить Kotlin?

Всем привет! Я Анна Жаркова, Senior iOS/Android разработчик компании Usetech, архитектор мобильных приложений и тимлид. В коммерческой разработке более 6 лет, в мобильной 8 лет. Пишу на Swift/Objective-C под iOS, Java/Kotlin под Android, укрощаю Xamarin (как Xamarin iOS/Android, так и Xamarin Forms).
Современному разработчику приложений, в том числе и мобильных, доступен широкий выбор языков и технологий практически на все вкусы и случаи жизни. Одни языки рождаются и становятся популярными, другие, наоборот, уходят в тень. Одни выигрывают за счёт своей необычности, другие — за счёт достоинств, новых версий и широкой используемости. Но опять же, у какого какие потребности. В этой статье я хочу привести весомые аргументы в пользу того, чтобы выучить Kotlin.
Итак, Кotlin — это …
Современный, лаконичный и безопасный язык разработки от компании JetBrains, работающий поверх Java Virtual Machine (JVM). При его создании компания руководствовалась собственной необходимостью, и первоначально это была технология для внутренней работы. Уже в 2011 году язык был представлен общественности, а в 2012 стал открыт исходных код. Так что, извините, iOS -разработчики, но в споре, что появилось раньше, и кто кем вдохновлялся, Kotlin или Swift, побеждает Kotlin.
Это статически-типизированный, объекто-ориентированный язык программирования. Среди его достоинств создатели отмечают прагматичность и гибкость. Язык одинаково хорош как для начинающих программистов, так и опытных.
Язык активно развивается. Текущая версия 1.5.20.
Также стоит отметить выразительность и краткость Kotlin:

В отличие от своего предшественника, Java, Kotlin более безопасен. В семантику языка заложены принципы, которые предотвращают целый ряд очень распространённых ошибок, которые обычно случаются в момент исполнения программы. Например, Kotlin обеспечивает механизм Null safety за счёт поддержки Nullable переменных и безопасной проверки с помощью распаковки опционального значения. Также Kotlin поддерживает безопасную проверку и приведение типов:

И да, Kotlin полностью совместим с Java. Вы можете использовать как существующую библиотеку, написанную под JVM, так и постепенно мигрировать с приложения, написанного на Java. Также IDE Intelij Idea и Android Studio поддерживают автоматическую конвертацию Java кода в Kotlin.
Также у Kotlin есть поддержка уникального механизма структурированного параллелизма (structured concurrency). Корутины Kotlin представляют собой простой и удобный в использовании способ организации работы с многопоточностью в приложении. Внутри Kotlin, работающего поверх JVM, остается тот же механизм работы с потоками и асинхронностью, что и в Java, но благодаря Kotlin Coroutines нам не нужно работать с ними напрямую, и мы получаем довольно легковесное во всех смыслах решение:

Складывается впечатление, что Kotlin — это Java, только лучше и удобнее, с богатыми синтаксическим возможностями. Но это не совсем так. Подробнее о различиях между языками смотрите здесь. В принципе парадигма использования по желанию либо Kotlin, либо Java, либо оба языка вместе, имеет место быть.

Основной язык разработки мобильных приложений под Android
В 2017 году на Google I/O анонсировали поддержку языка Kotlin для разработки приложений под Android с помощью IDE Android Studio. Спустя 2 года на I/O 2019 Google объявили Kotlin приоритетным языком для разработки Android приложений (Kotlin-First) и рекомендовали начинать новые проекты уже на Kotlin: «Меньше кода для вас, меньше кода писать, проще тестировать и поддерживать». Также Kotlin-First означает приоритетность выпуска новых API и библиотек (Jetpack API) именно на Kotlin.
Согласно статистике Google (I/O 2021), Kotlin сейчас и самый популярный язык разработки. Причем не только самих приложений под Android, но и различных библиотек и решений, в том числе серверных и кроссплатформенных (см. ниже). 1000 топовых (по установкам) приложений из Google Play содержат 80% кода на Kotlin. 60% всех разработчиков Android пишут свой код именно на Kotlin.

Больше 70 приложений самой компании Google написаны на Kotlin. Сервисы Maps, Places, Firebase и другие давно используют Kotlin. Также Google отмечают, что благодаря их совместной работе с JetBrains над компилятором, разработка на Kotlin становится быстрее и производительнее, чем на Java.
Итак, какие же расширения (KTX) и библиотеки Kotlin облегчают и улучшают разработку библиотек и приложений:
- Kotlin Symbol Processing (KSP), мощный и в то же время простой API, который напрямую анализирует код, написанный на Kotlin, и способен работать в 2 раза быстрее с некоторыми библиотеками, например, Room. Также он поддерживается кроссплатформенно.
- Android Jetpack Compose;
- Android Jetpack API;
- Kotlin Coroutines, Flows, DataStore, Paging….
- Kotlin Serialize;
- Android Lifecycle KTX;
- И многие другие.
Больше информации смотрите в видео State of Kotlin.
В общем, если вы Android-разработчик, то советую выучить Kotlin.
Технология кроссплатформенной разработки Kotlin Multiplatform
Kotlin можно использовать не только для Android, но и для других платформ, а также кроссплатформенно.
Kotlin multiplatform — это SDK для кросс-платформенной-разработки от компании JetBrains. Данная технология позволяет писать модуль общего расшариваемого кода на Kotlin, компилировать с помощью JVM в байт-код для Android и LLVM в байт-код под iOS и подключать как библиотеку к нативным приложениям.

Так как общий код может включать в себя практически всё, кроме UI и особо специфического платформенного программного кода, то использовать KMM позволяет ускорить и упростить параллельную разработку приложения под обе платформы.
Помимо блока common кода модуль содержит платформенные модули, позволяющие дополнять реализацию функционала для поддержки используемых платформ.
Для каждой из поддерживаемых платформ (это не только iOS, Android, но и JS, Windows, MacOS и тому подобное) Kotlin Multiplatform использует свою версию языка, адаптированную под индивидуальные особенности платформы:

Хотя плагин KMM (Kotlin Multiplatform Mobile) и находится еще в стадии альфа (то есть в работе), он уже готов к промышленному использованию при разработке большинства приложений. Многие компании уже активно разрабатывают свои продукты на Kotlin Multiplatform.
Для разработки эффективных KMM приложений существует много готовых библиотек и фреймворков. Среди них Ktor (сетевой клиент), SqlDelight (хранилище), Coroutines, Serialization, Moko (решения от IceRock), решения от компании Badoo и многие другие.
И не только мобильные приложения.
Технологии Kotlin позволяют разрабатывать не только мобильные приложения. Kotlin JS предназначен для веба. В разработке можно использовать как решения из экосистемы языка, так и готовые библиотеки для JS, JavaScript, TypeScript.
Одним из наиболее интересных фреймворков, работающих на Kotlin JS, — Compose for Web. Специальная версия Jetpack Compose для веб-разработки. Подробнее со списком поддерживаемых решений можете ознакомиться здесь.
Также язык подходит и для бэкенда. Такие фреймворки, как Spring, уже давно активно его поддерживают.