Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.

Приносим извинения за неудобства.

News

Встречайте Compose Multiplatform 1.0!

Read this post in other languages:

Вышел Compose Multiplatform 1.0!

JetBrains выпустил Compose Multiplatform v1.0! Теперь этот декларативный фреймворк для разработки интерфейсов на Kotlin полностью готов к использованию в реальных проектах! Мы хотим рассказать о самых важных новых возможностях и надеемся, что они вас порадуют:

  • Compose for Desktop позволяет быстро и эффективно создавать на Kotlin десктопные приложения с красивым пользовательским интерфейсом.
  • С Compose for Web можно создавать полнофункциональные динамические веб-интерфейсы, используя стабильный API DOM c поддержкой всех браузерных API. Поддержка виджетов Material UI появится в следующей версии.
  • В целом использовать общий код при работе на разных платформах (в том числе на Android благодаря совместимости с Jetpack Compose by Google) стало намного легче.

Теперь поговорим обо всем этом подробнее.

Перейти на сайт

Compose for Desktop

До последнего времени при создании пользовательского интерфейса для десктопных приложений на Kotlin приходилось использовать традиционные Java-фреймворки. Библиотек на Kotlin, позволявших создавать современный UI для десктопов, не существовало. С выходом Compose Multiplatform ситуация изменилась. Давайте посмотрим, как этот фреймворк расширяет возможности создания интерфейсов для приложений на Kotlin.

Декларативный подход к созданию пользовательских интерфейсов

Compose Multiplatform — декларативный фреймворк, то есть ваш код отражает структуру интерфейса вашего приложения. Вам больше не нужно думать о копировании данных из модели в представление или о разработке логики обновления интерфейса. Обо всем этом позаботится фреймворк, так что разработка интерфейсов теперь — сплошное удовольствие. В этом примере содержимое метки Text будет обновлено при изменении содержимого TextField без какого-либо дополнительного кода:

Начать работу с Compose Multiplatform очень легко, особенно если вы уже работали с декларативными фреймворками для интерфейсов, например React или Jetpack Compose от Google. Compose Multiplatform во многом основан на тех же принципах, так что вам все должно быть знакомо.

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

Современный UI предъявляет высокие требования к производительности, поэтому мы предпринимаем много усилий, чтобы оптимизировать скорость работы Compose Multiplatform. Фреймворк использует Skia — отлично оптимизированную графическую библиотеку, которую используют многие чувствительные к производительности приложения, в том числе современные браузеры. Благодаря этому Compose Multiplatform поддерживает все основные механизмы аппаратного ускорения на десктопах, такие как DirectX, Metal и OpenGL. В средах, где аппаратное ускорение недоступно, Compose использует оптимизированный программный рендеринг.

Сокращение циклов разработки UI с инструментом предпросмотра

Одна из задач, отнимающих больше всего времени при разработке интерфейсов, — пересборка приложения на этапе финализации внешнего вида. Плагин Compose Multiplatform для IDEA упрощает этот процесс: встроенная функция предпросмотра позволяет донастроить визуальные элементы в несколько приемов без пересборки и перезапуска приложения. Это значительно сокращает циклы разработки UI.

Подготовка дистрибутивов десктопных приложений

Чтобы доставить приложение пользователям, его нужно не только разработать, но и правильно упаковать. В этом также поможет Compose Multiplatform: плагин для Gradle поддерживает упаковку приложений в форматы msi, dmg и deb, в том числе подписывание и подтверждение подлинности для MacOS.

Совместимость с Jetpack Compose для Android и Java UI-фреймворками

Jetpack Compose — современный фреймворк от Google для создания нативных интерфейсов Android-приложений — продолжает набирать популярность среди разработчиков мобильных приложений. Если вы уже работали с ним, Compose Multiplatform покажется вам очень знакомым, поскольку API этих двух фреймворков во многом повторяют друг друга.

Если вы работаете над десктопными приложениями, у которых уже есть пользовательский интерфейс, созданный с помощью традиционных Java-фреймворков, вам не придется полностью переписывать код, чтобы начать использовать Compose Multiplatform. Мы обеспечиваем высокий уровень совместимости: вы можете просто добавить компоненты, созданные с помощью Compose, в интерфейс на Java. А существующие компоненты, написанные на Java, можно добавить в любое новое приложение, создаваемое с помощью Compose Multiplatform.

Начало работы с Compose Multiplatform

Начать работу с Compose Multiplatform очень просто. В IntelliJ IDEA 2021.1+ можно всего за несколько кликов создать простой проект Compose Multiplatform, используя мастер создания приложений из плагина Kotlin.

New Project wizard showing the "Compose Desktop Application" example

Также мы подготовили обучающие материалы по работе с десктопными приложениями в Compose Multiplatform.

Compose for Web

Помимо десктопной версии Compose Multiplatform предлагает мощный декларативный Kotlin/JS API для работы с DOM.

В нем есть все необходимые функции современного веб-фреймворка, включая комплексный API для работы с DOM, встроенную поддержку CSS-in-JS, поддержку SVG, типизированные интерфейсы для ввода данных и т. д. Код для веб-интерфейса в Compose Multiplatform пишется на чистом Kotlin, то есть разработчик может пользоваться всеми возможностями системы типов и идиом этого языка, придерживаясь того же рабочего процесса, что и для других целевых платформ на Kotlin.

Мультиплатформенная поддержка

Compose Multiplatform позволяет разрабатывать не только десктопные и web-приложения, для которых есть встроенная поддержка. Прозрачная интеграция с фреймворком Jetpack Compose от Google позволяет разрабатывать также и Android-приложения. Эти два фреймворка используют общие API и ядро, поэтому они полностью совместимы. Благодаря этому вам не придется переписывать общий код управления интерфейсом и состояниями: достаточно сделать это один раз, а потом использовать его на всех нужных платформах.

Если у вас уже есть приложение для Android, которое нужно портировать на десктоп или веб-платформу, Compose Multiplatform поможет сделать это с минимальными усилиями. Фреймворк позволяет управлять всеми целевыми платформами приложения из одного проекта Kotlin.

Чтобы быстро перейти к разработке мультиплатформенного приложения в Compose, можно использовать мастер создания проектов Kotlin в IntelliJ IDEA 2021.1+.

Даже если сейчас вам не нужно разрабатывать мультиплатформенное приложение, ваши знания и опыт работы с одной платформой, пригодятся и на других.

Изменения по сравнению с бета-версией

Готовя к выпуску Compose Multiplatform 1.0, мы уделяли основное внимание тому, чтобы фреймворк можно было эффективно использовать для рабочих приложений. Поэтому фокус был на обеспечении стабильной работы и устранении критических проблем.

Промышленное использование

Хотя официальная версия Compose Multiplatform вышла только сейчас, фреймворк уже используют некоторые работающие приложения. Например, JetBrains использует Compose Multiplatform в JetBrains Toolbox App с начала 2021 года. Этим приложением для управления IDE JetBrains ежемесячно пользуются более 1 000 000 пользователей. 4 месяца назад оно было полностью портировано с C++ и Electron на Compose Multiplatform.

Подводя итог

С выходом Compose Multiplatform разработчики на Kotlin получают эффективный фреймворк, позволяющий создавать красивые интерфейсы для десктопных и веб-приложений.

Предлагаем вам попробовать Compose Multiplatform. Самый простой способ начать работу — посмотреть наши уроки. Мастер создания проектов на Kotlin, встроенный в IntelliJ IDEA 2021.1+, позволит легко создать первый проект Compose Multiplatform с декларативным пользовательским интерфейсом на Kotlin.

Надеемся, вам понравится!

Ваша команда Kotlin
The Drive to Develop

Автор оригинальной статьи:

Oksana Mandryka

Sebastian Aigner

image description

Discover more