Kotlin Multiplatform — это набор для разработки программного обеспечения, который значительно лучше других вариантов разработки кроссплатформенных приложений. В этом руководстве по Kotlin multiplatform вы подробно узнаете все об этом наборе. Kotlin multiplatform — это фича, появившаяся в 2017 году вместе с Kotlin 1.2. Данная возможность позволяет писать один и тот же код непосредственно на нескольких платформах, ориентируясь на кроссплатформенную разработку приложений. В ее основе лежит идея подхода "Write Once Run Anywhere" [пиши один раз, запускай везде], но она выводит данную концепцию на гораздо более высокий уровень, позволяя писать код один раз и потом использовать его на нескольких платформах.  Мультиплатформенное программирование на Kotlin позволяет разработчикам решить проблему зависимостей от конкретной платформы. Это сокращает время, затрачиваемое на написание и поддержку одного и того же кода для разных платформ. Kotlin Multiplatform дает возможность включать другие платформы, такие как Linux, Windows и веб (JavaScript), в то время как его подмножество Kotlin multiplatform mobile позволяет разработчикам писать код бизнес-логики для iOS и Android из одной кодовой базы. Kotlin для iOS, Android и других популярных операционных систем позволяет хранить многократно используемые фрагменты кода для двух и более версий приложений.     Возьмем, к примеру, Android и iOS. Общий код бизнес-логики для Android преобразуется в байткод Java, который может быть выполнен в JVM. В Android есть виртуальная машина, поэтому он может легко его выполнить. В случае iOS виртуальной машины нет, поэтому код преобразуется в нативный, который может быть выполнен на iOS. Теперь в компиляторе Kotlin есть фронтенд, который преобразует код в промежуточное представление (intermediate representation - IR), а бэкенд конвертирует это промежуточное представление в машинный код. Так, в случае android он преобразует его в байткод java, а в случае iOS - в нативный машинный код iOS. Чтобы обеспечить запуск общего кода, в Kotlin предусмотрены компиляторы под конкретные платформы. Для преобразования кода в соответствии с различными платформами предоставляются различные компиляторы. К ним относятся Kotlin/ JVM, Kotlin/ JavaScript и Kotlin/ Native. Эти версии содержат специфичные для конкретной платформы инструменты, библиотеки и расширения языка Kotlin. Каждая платформо-зависимая версия включает различные платформы; например, JVM содержит Java 8, Java 6 и Android, JavaScript - Browser и Node, а Native - iOS, Mac, Windows, Linux и т.д. Мультиплатформенные библиотеки помогают при разработке общих частей проекта в одной области, предоставляя API для общего кода Kotlin и впоследствии распространяя его на все целевые платформы. Версии платформо-ориентированных библиотек предоставляют библиотеки, которые могут быть использованы для расширения специфических возможностей целевых платформ. Мультиплатформенная система — в которой программа для разных платформ использует как коды, характерные для каждой из них, так и общий код, используемый обеими платформами. Кроссплатформенное приложение — это система, позволяющая выполнять деплой приложения с использованием абсолютно одинакового кода приложения. Основной упор в Kotlin multiplatform делается на совместное использование общего кода, и мультиплатформенность рассматривается как развитие нативной разработки. Поддержка и сообщество: Многие компании и организации выбирают язык Kotlin. Кроме того, после того, как компания Google объявила Kotlin предпочтительным для android, его выбирают многие компании. На этом языке начали работать множество пользователей, что означает огромную поддержку Kotlin со стороны сообщества. Быстрый и чистый код: В Kotlin multiplatform нет необходимости заново создавать и переписывать код для разных платформ. Можно просто использовать общий код для разных платформ, что экономит огромное количество времени. Такие функциональные возможности, как интероперабельность, также делают работу очень простой и быстрой, и не возникает отставания от нативных платформ; благодаря этому разработчикам не нужно ждать, пока появятся новые фичи для поддержки. Быстрая разработка: Совместное использование кода экономит массу времени и помогает сделать процесс разработки намного быстрее и проще. Его особенности, включая "нулевую безопасность", поддержку IDE и взаимодействие с Java, делают его менее сложным и быстрым. Один язык для кроссплатформенных и нативных приложений: Большинство средств разработки кроссплатформенных приложений не позволяют использовать возможности, присущие устройствам на базе iOS и Android. В Kotlin нет необходимости внедрять в кодовую базу новый язык программирования. Можно легко заставить ваше android-приложение работать на iOS-устройствах без значительных изменений в коде. Netflix: Популярная OTT-платформа Netflix перестроила текущий пользовательский интерфейс плеера в Android-приложении, используя Kotlin. Autodesk: Autodesk — транснациональная корпорация по разработке программного обеспечения. Kotlin хорошо работает с iOS и android без нативного интерфейса Java, что является основной причиной для компании сделать выбор в пользу Kotlin multiplatform. Vmware: Vmware — американская компания, занимающаяся облачными вычислениями и технологиями виртуализации. Команде разработчиков Vmware требовалась кроссплатформенная стратегия для мобильных приложений, поэтому был выбран Kotlin multiplatform, и теперь он является "основным фреймворком по умолчанию" для VMware. Trello: Trello — это приложение для управления проектами. Android-приложение Trello создано с использованием Kotlin. Trello использует Kotlin из-за его совместимости с Java.  Philips: Philips — очень популярная транснациональная корпорация, и вы наверняка слышали об этой компании. В Philips Kotlin Multiplatform оказался более быстрым при имплементации новых возможностей, а также позволил добиться более тесного взаимодействия в команде между разработчиками Android и iOS. Ice Rock: Ice Rock, аутсорсинговая компания, предоставляющая мобильные и backend-решения для различных отраслей и сегментов рынка, использует Kotlin multiplatform mobile при создании приложений для своих клиентов. В этом руководстве по Kotlin multiplatform вы поняли, как он работает, и изучили, что это такое. Вы также узнали об общем коде Kotlin и выяснили преимущества Kotlin multiplatform. Наконец, вы познакомились с компаниями, которые делают выбор в пользу Kotlin multiplatform. 31 июля пройдет открытый урок, посвященный разработке монолитного приложения со Spring. В результате этого вебинара: узнаем преимущества и недостатки монолитной архитектуры, фреймворка Spring, особенностей разработки со Spring в Kotlin; попрактикуемся в разработке работающего монолитного приложения и разместим его в Docker-контейнере. Вебинар будет полезен разработчикам на Kotlin и Spring. Присоединяйтесь, если интересно.  Редактор