Уже не первый год мне не хватает инструмента для разработки
нативных интерфейсов (GUI) кроссплатформенных
desktop-ных приложений на JavaScript.
Для тех кто наткнется на этот вопрос в поисках такого инструмента, приведу список, того что примерно похоже на то, что я ищу, но полностью удовлетворяет требованиям:
Первая категория - это webkit-based решения для desktop приложений:
(Возможно что-то пропустил - пишите - добавлю)
WebKit-решения - это с одной стороны интересная задумка и есть несколько хороших примеров как это применили, но они все представляют из себя в какой-то степени браузер. А это не "нативный" UI. А именно: оверхед по производительности и по занимаемому месту (+50 Мб к весу приложения). Это казалось бы не критично, но если все приложение - формочка с 2 кнопками - это явно из пушки по воробьям.
Также наверняка есть решения не на WebKit, а на другом движке или штатном webView - но они видимо не такие популярные.
Далее (немного не в тему, но все же) можно выделить похожую категорию для мобильной разработки:
А вот дальше уже интересно! Фреймворки с нативным UI для мобильных устройств:
Эти инструменты позволяют использовать нативный UI для мобильных платформ. Это почти то, что мне надо! Только мне нужно то же, но для десктопа :(
У всех трех есть упоминание десктоп-приложений:
Titanium - см. выше - на webkit;
React Native - есть для macOS (
https://github.com/ptmt/react-native-macos) и для windows 10+ в UWP формате:
https://github.com/ReactWindows/react-native-windows . А мне хотелось бы поддержки win7 хотя бы;
NativeScript - (пока нет поддержки)
https://github.com/NativeScript/NativeScript/issues/27
И в последнюю категорию я бы отнес проекты наиболее близкие к тому, что я хотел бы видеть:
Это родившиеся ~5 лет назад проекты, просуществовавшие около года :( Хотелось бы знать почему их более не поддерживают.
Есть также QML - но тут насколько я понимаю одним JS не огрничиться. Поправьте если я не прав!
Еще есть WPF - но он ограничен Windows насколько я понимаю.
Есть ли у вас какие-то инструменты на примете, которые:
- имеют нативный интерфейс (не webview / браузер etc.)
- кроссплатформенны
- opensource
- JavaScript достаточно для создания приложения (не считая языков разметки и подобного)
- позволяют создавать десктопные приложения
?
P.s. сам пытался сделать свое решение на связке Delphi + javascript - т.е. с помощью Delphi "enhanced RTTI" можно прокинуть классы контролов в движок JS (в моем случае SpiderMonkey 24), что позволило рисовать родные
ламповые виндовые кнопочки и менюшки. Сделал даже работающий прототип, могу поделиться ссылкой если кому-то интересно. Но в итоге проект имеет ряд ключевых недостатков:
- только windows (а хотелсоь бы иметь кроссплатформенность), но это меньшая из проблем;
- код проекта открыт, но лицензия Delphi недопускает такое использование своей IDE насколько мне известно;
- ограниченность js движка - SpiderMonkey 24 - это es2015, а учитывая, что проект delphi-javascript, на котором все это выстроенно мертв - все очень печально :(
Думал о переходе на Lazarus, но там нет "enhanced RTTI" из Delphi 2010+.
Также рассматривал проект mormot, так как там есть более свежий SpiderMonkey 45, да и сам проект живой:
https://synopse.info/forum/viewtopic.php?id=3498
Если вы можете прокоментировать такой подход - мне было бы интерсно вас выслушать. Если вы заинтересованны в том чтобы развить эту идею - протащить классы lazarus-контролов в SpiderMonkey 45 - я буду в восторге! :)
Также была мысль о том чтобы не использовать отдельный js-движок, а сделать полностью динамичное в рантайм приложение в lazarus (т.е. создание кнопок, форм, расположение их, удаление и т.д. в рантайм, что не ясно возможно ли с его RTTI) и подключить его к Node.js через сокет... Но такое решение сейчас кажется как минимум неоднозначным :D
Кстати, нет ли у вас напримете подобных инструментов, чтобы можно было GUI управлять полностью свободно через сокет?