JetBrains выпустила новую версию Jetpack Compose for Desktop, кроссплатформенной среды разработки пользовательского интерфейса с открытым исходным кодом.
Если вы занимаетесь какой-либо разработкой, вы, вероятно, слышали о JetBrains. Это компания, стоящая за огромным набором IDE, в который входят IntelliJ (база для Android Studio), CLion, PhpStorm и многие другие. Они также те, кто сделал Котлин, чрезвычайно популярный кроссплатформенный язык программирования.
И JetBrains снова вернулся к этому. Чуть больше года назад Google представил новый механизм компоновки для Android под названием Jetpack Compose. Это прошло довольно много серьезных изменений с тех пор, но он превратился в полноценную (хотя и несколько нестабильную) альтернативу классическим XML-макетам Android.
Какое отношение Jetpack Compose имеет к JetBrains? Ну, во-первых, он написан на Котлине. Кроме того, JetBrains молча работает над переносом Compose на настольные компьютеры. Он был опубликован в качестве ранней предварительной версии для разработчиков, и теперь JetBrains готова официально объявить о его существовании.
Что такое Jetpack Compose?
Я немного говорил об этом во введении, но думаю, это заслуживает дополнительных пояснений. Если вы раньше разрабатывали приложения для Android, вы, вероятно, привыкли к тому, как работают макеты. Сначала вы создаете макет в файле XML, а затем взаимодействуете с этим макетом из Java или Kotlin. Несмотря на то, что он функционален, он немного устарел, и разделение макетов на разные языки может оказаться затруднительным.
В качестве альтернативы Google начал разработку Jetpack Compose. Compose — это механизм компоновки для Android, построенный на базе Kotlin. Весь код макета и логики находится в одном месте, что значительно упрощает интерактивность. Он также является декларативным, а не императивным стилем макетов XML.
Переход к декларативному механизму компоновки с императивного может потребовать некоторого привыкания, но Compose определенно является улучшением по сравнению с XML, хотя он все еще находится на ранних стадиях.
Jetpack Compose для рабочего стола
Итак, Compose — хорошая альтернатива макету для собственных приложений Android. Но это (обычно) не кроссплатформенность. Именно здесь на помощь приходит JetBrains. Компания портировала Jetpack Compose на настольные компьютеры с поддержкой Windows, Linux и macOS (как Intel, так и ARM).
Хотя для настольных компьютеров существуют и другие механизмы компоновки, такие как Electron, JavaFX и UWP, сейчас здесь некоторый беспорядок. Некоторые из них не являются кроссплатформенными, поэтому работают только в одной конкретной операционной системе. Другие технически кроссплатформенны, но для их распространения требуется много работы. И тем не менее, с другими просто трудно работать, например с JavaFX.
Jetpack Compose for Desktop, с другой стороны, относительно прост в использовании, поддерживает масштабирование дисплея, имеет встроенные стили и (почти) полностью кроссплатформен. Хотя пока невозможно скомпилировать все дистрибутивы из одной операционной системы, сам код полностью переносим. Как и в случае с Android, упакованное приложение основано на Java, хотя для его использования пользователям не требуется установленный JDK.
Перекрестная совместимость
Поскольку Compose for Desktop все еще является новой функцией, в ней отсутствуют некоторые функции. Чтобы помочь разработчикам обойти эти ограничения, Compose for Desktop совместим с двумя наиболее популярными механизмами компоновки Java: JavaFX и Swing. Если у вас есть настольное приложение, разработанное на одном (или обоих) из этих движков, вы можете начать переход на Compose, сохранив текущую кодовую базу.
Android + рабочий стол
Что делать, если вы хотите перенести приложение Compose для Android на рабочий стол? Ну, вы также можете (вроде как) сделать это. Элементы пользовательского интерфейса вашего приложения можно легко использовать совместно с Android и настольным компьютером. Вы не сможете поделиться всем, но это, безусловно, упрощает разработку.
Поддержка Apple Silicon
Я уже говорил об этом выше, но собираюсь упомянуть об этом еще раз. новые компьютеры Apple Silicon Mac довольно удивительны, но процессоры основаны на архитектуре ЦП ARM, а это означает, что многие приложения MacOS в настоящее время работают через переводчик Rosetta 2 x86. Хотя Apple неплохо справилась с этим переводом, собственные программы ARM все равно будут работать лучше.
Что ж, Jetpack Compose для настольных компьютеров изначально поддерживает Apple Silicon. Это означает, что вам не придется беспокоиться о падении производительности из-за перевода или о будущей поддержке, когда Apple прекратит ее поддержку.
Функциональность
Итак, это хорошо, что JetBrains создала новый механизм верстки для настольных компьютеров, но кто сказал, что он лучше того, что мы имеем сейчас?
Мне.
Я использовал последнюю доступную сборку на момент написания этой статьи (0.2.0-build132), чтобы создать простое приложение, предоставляющее разрешения для SystemUI Tuner. Поскольку я не очень хорошо знаком с Compose и декларативным дизайном, для меня это было немного сложнее, чем приложение с XML-версткой, но я справился. И его намного проще использовать, чем JavaFX.
Хотя поддержка тем (т. е. темный режим) все еще немного сомнительна, создать интерактивный макет довольно легко, и, если не считать нескольких мерцаний при изменении размера окна, все работает нормально.
Если вы хотите проверить приложение, исходный код доступен на GitHub. Просто импортируйте его с помощью IntelliJ или Android Studio, и он будет готов к работе.
Лично я в восторге от Jetpack Compose for Desktop. Раньше я даже не знал о его существовании, но это уже мой любимый механизм компоновки рабочего стола. Вы можете узнать больше на Веб-сайт Jetpack Compose для настольных компьютеров или на GitHub.
Что вы думаете об этом? Стоит ли проверить и, возможно, даже использовать вместо других доступных фреймворков? Дайте мне знать!
Авторы избранных изображений: JetBrains на GitHub