Как стать автором
Обновить

Комментарии 16

Котлин научился делать исполняемый бинарник под linux? Не инсталяшку с явой внутри, а именно чистый бинарник, такой же, как делает delphi и go ? Котлин научился рисовать gui под линуксом без javafx и swing ?

Давно уже может компилироваться через llvm для iOS. Но desktop target это JVM.

Если коротко, то да и таки достаточно давно. Вот можете тут посмотреть пример ELF64 + ui https://github.com/msink/kotlin-libui

Ага, Делфи ещё лет 5-7 назад так умел делать и достаточно не плохо. Фреймворк был тогда сыроват, но сейчас ситуация куда лучше

Текущий статус "прототип"?

Так понимаю, в продакшн под десктоп его использовать не следует?

Или у вас есть положительный опыт его использования?

И, если позволите, немного о моем не положительном опыте на линусовском десктопе. Astra linux se

1) kotlin+javafx/tornadofx. Контекстное меню только на первом мониторе. Невозможно исправить вообще.

2) Electron. В астре se стоит запрет на запуск appimage. Обойти настройками можно, но юзеры настраивать не хотят. Распакованный appimage может не запустится из-за настроек песочницы хромиума.

3) Delphi tokio. Вроде и бинарник нормально работает, но Паскаль после котлино это как плавать с гирей на шее. Работает, но радости нету.

Если вы ошиблись местом коммента (а похоже), то отвечу
В продакшен легко можно использовать, не разрешимых проблем нет. Да и в целом все работоспособно. Есть небольшие проблемы с текстовыми полями (Edit, Memo). Есть проблема со скролом на тачскринах (клик отрабатывает раньше чем скролл). Если скролить контент с забирающими фокус контролами, то есть проблемы, если не заменить OnClick на OnTap (но это ерунда). Репорты есть, будут править.

В остальном рабочий инструмент с большими возможностями. У меня несколько проектов на проде несколько лет без проблем и жалоб работают (ну, баги моей логики не учитываю).

В Делфи, после Токио версии, много чего изменилось. Как в фреймворке FMX (кардинально), так и в рантайме всего языка. Если научиться пользоваться FMX, то ограничений почти нет. Можно сделать интерфейс любой сложности с анимацией, шейдерами и чем угодно. Я не один раз барл макеты из Figma и в полной мере их реализовал. Без особых проблем или хитростей. Без левых пакетов, на штатных инструментах.

Нужно понимать, что FMX это не кроссплатформенный аналог VCL, это совершенно другой подход ко многим вещам. То, как отображается контрол можно поменять в любой момент, настроить как хочешь и т.д. FMX и его философия чем-то похожа на HTML+CSS. Есть книга стилей, которая управляет тем, как отображается контрол. Стиль в данном случае - это набор других компонентов (контролов, примитивов, анимаций и т.д.). Стиль может состоять из любых доступных элементов на форме. Хочешь, чтоб на кнопке было 15 картинок, делаешь такую кнопку. Хочешь, чтоб она анимировалась при наведении уменьшением или сменой цвета, или перемещением или ещё как придумал - делаешь. Хочешь, чтобы кнопка выглядела как Grid - присваиваешь кнопке стиль грида и она будет выглядеть как грид. И всё это через дизайнер, а не кодом.

Все, кто работал с Делфи знаю, что там создавать интерфейс для работы с таблицами и бд в целом очень просто и удобно. Кинул датасеты, настроил получение данных, указал связи компонентам, которые работают с датасетами и готово. Даже код писать не надо. Так вот в FMX все контролы могут работать с такими связями. Любой контрол, который выводит текст может использоваться для вывода текста из датасета (без кода, с личным форматированием или вычислением значения). Любой список может быть связан с источником данных, а элементы могут выглядеть так как тебе захочется (настроив стиль, хоть для каждого элемента свой). Ты можешь создать сложный элемент списка визуально (как фрейм) и заполнить его без строчки кода из датасета динамически. Стили могут быть как растровые, так и векторные (как сделаешь). А работа с HiDPI из коробки без всяких настроек. Я могу ещё долго продолжать, но это не на одну статью.

Вот после такого опыта, работать с каким-то другим фреймворком - как плавать с гирей на шее.

Главное научиться.

Можешь посмотреть здесь, у меня несколько открытых проектов (я в основном только на FMX делаю) https://github.com/HemulGM

Внимание стоит обратить на:
https://github.com/HemulGM/ChatGPT
https://github.com/HemulGM/HGMGetIt
https://github.com/HemulGM/TaskBoardsFMX
https://github.com/HemulGM/VKMessengerFMX
https://github.com/HemulGM/Rain

Из не открытых или не залитых
https://www.youtube.com/watch?v=rJzVy29LiYg
https://www.youtube.com/watch?v=hcACtvOO-Ec
https://www.youtube.com/watch?v=U802Uik8IzM
https://www.youtube.com/watch?v=Y_WHERlyahg
https://www.youtube.com/watch?v=nEz3KPEs1_E

Благодарствуйте за столь подробный ответ!

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

Очень амбициозное заявление. Но бизнес пока вбольшей степени выбирает между флаттер и двумя отдельными приложениями.

https://medium.com@jacobrass/popular-apps-using-kotlin-multiplatform-kmp-in-2023-and-what-you-can-learn-from-them-1f94d86489b7

Не сказал бы

двумя отдельными приложениями.

это какие именно?

ios и android

Я щас начал изучать Kotlin/Native способности, и я понял, что это достаточно вкусная функциональность.

Я изначально хотел кодить на Flutter, но теперь меня клонит к Kotlin/Native.

Желаю вам удачи и терпения. Особо не важно, что вы выбрали. Главное это не остановиться на пол пути.

Интересуют немного более частные моменты вроде специфики кроссплатформенности. К примеру, на Android и iOS требуется сохранить какие-то предустановки. На Android для этого есть SharedPreferences, на iOS — NSUserDefaults. А вот как быть с Kotlin Multiplatform? Видимо, придумывать велосипед с уникальным решением. И это - лишь верхушка айсберга. Хотя, конечно, на данный момент очень радует развитие этого фреймворка, для многого его использование уже более чем предпочтительно

На Котлине не знаю как, но в Делфи, например, ты можешь использовать API целевой платформы (не забудь директивами только огородить). В итоге можешь просто зарегистрировать интерфейс, который представляет собой сервис, который можно запросить. Регистрировать можешь для каждой платформы свою реализацию (или не регистрировать).

Есть готовые решения в виде либ для KMM.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий