Русский
Русский
English
Статистика
Реклама

Jetpack Compose Desktop

Несколько дней назад компания JetBrains в своём блоге рассказала о выходе нового инструмента для создания дескопных приложений Jetpack Compose Desktop. Компания с русскими корнями не особо жалует русскоязычную аудиторию и не спешит рассказать нам о новинке, поэтому возьму на себя роль популяризатора.

Разработчики под Android уже могли слышать про Compose, которая доступна в предварительной версии Android Studio 4.2. Я не любитель устанавливать бета-версии, поэтому не мог пощупать новую технологию своими руками. Но когда услышал новость про Compose Desktop, то не удержался и поставил себе IntelliJ IDEA Early Access Program.

Для начала я установил версию IDEA 2020.3, где уже есть все необходимые настройки и шаблоны.

Создаём новый проект и выбираем шаблон Desktop uses Kotlin 1.4.0. Минимальная версия Java SDK должна быть не ниже 11. Проверял на Windows 10, других платформ у меня нет.

Шаблон в IDEA Шаблон в IDEA

Среда разработки сгенерирует первый проект и основной файл main.kt будет иметь следующий вид.

import androidx.compose.desktop.Windowimport androidx.compose.material.Textimport androidx.compose.material.Buttonimport androidx.compose.material.MaterialThemeimport androidx.compose.runtime.getValueimport androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.runtime.setValuefun main() = Window {    var text by remember { mutableStateOf("Hello, World!") }    MaterialTheme {        Button(onClick = {            text = "Hello, Desktop!"        }) {            Text(text)        }    }}

Запущенное приложение выглядит следующим образом.

Приложение Compose DesktopПриложение Compose Desktop

Довольно непривычно видеть имена пакетов androidx для десктоп-приложений.

Усложним приложение: изменим заголовок окна по умолчанию, установим размеры окна, добавим вторую кнопку.

import androidx.compose.desktop.Windowimport androidx.compose.foundation.layout.Arrangementimport androidx.compose.foundation.layout.Columnimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.material.Textimport androidx.compose.material.Buttonimport androidx.compose.material.MaterialThemeimport androidx.compose.runtime.getValueimport androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.runtime.setValueimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.unit.IntSizeimport androidx.compose.ui.unit.dpfun main() = Window(title = "Счётчик котов", size = IntSize(300, 250)) {    var count by remember { mutableStateOf(0) }    MaterialTheme {        Column(Modifier.fillMaxSize(), Arrangement.spacedBy(5.dp)) {            Button(modifier = Modifier.align(Alignment.CenterHorizontally), onClick = {                count++            }) {                Text(if (count == 0) "Hello Kitty" else "Я насчитал котов: $count!")            }            Button(modifier = Modifier.align(Alignment.CenterHorizontally),                onClick = {                    count = 0                }) {                Text("Сбросить")            }        }    }}

Теперь мы можем считать усатых-полосатых.

Пока сложно сказать, приживётся ли подобный способ создания приложений для Android и десктопа. Многие разработчики уже вовсю восторгаются и пишут хвалебные посты в интернете. Но сама возможность использовать знакомую среду разработки и свои навыки не только для Android, но и для Windows (Mac, Linux) мне нравится. Я буду смотреть за развитием проекта, который пока находится в альфа-версии.

Пост написан на основе собственной статьи.

Источник: habr.com
К списку статей
Опубликовано: 11.11.2020 20:10:19
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Программирование

Kotlin

Compose

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru