Что использовать для быстрой разработки кроссплатформенных приложений?
Какие языки программирования, технологии, подходы, что угодно необходимо использовать для быстрой разработки кроссплатформенных приложений?
Частично могу дать ответ самостоятельно - примером для ответа на сабж может являться node-webkit. И все бы хорошо, и даже отлично - есть куча программистов на JS, все знают HTML и CSS, программисты дешевые, скорость разработки высокая, но проблема в том, что код исходного приложения скрыть сложно. или просто невозможно. *Кстати, может быть лучше копать в эту сторону?*
С другой стороны можно использовать тот же C, где я получу полный контроль над приложением, виджетами и элементами интерфейса - но в этом случае скорость разработки и покрытия тестами падает недопустимо низко, а стоимость явно возрастает.
Я так же могу использовать Python или Golang. В этом случае я получаю скорость разработки, кроссплатформенность, простой поиск или переучивание программистов. Однако, насколько я понял я не имею возможности написать свой виджет или кардинально изменить уже существующий.
======
P.S.: Использование nwshapshot для создания байткода виртуальной машины на основе исходных кодов JS уменьшает производительность на 30%, не всегда работает, а если и работает то только с небольшими JS файлами. То есть приложение, в котором 5 - 8 библиотек плюс рабочий код уже не сожмешь.
Для справки - необходима возможность создавать frameless приложения с полностью своим набором UI элементов. То есть как нарисует художник так и должно выглядеть приложение. Без рамок и заголовков окна ОС, со своими прогрессбарами и поэтэссами
Используйте Go в связке с Qt или wxWidgets. Если Qt, то можно играть с QML. А с wxWidgets на мой взгляд проще работать, если не нужны собственные виджеты.
QML как я понимаю описываем именно интерфейс в декларативном стиле, предоставляя возможность на объекты созданного интерфейса вешать какие то обработчики уже из кода программы? И вся красота, которая требуется дизайнерами описывается как раз на QML? Соответсвенно я могу написать на QML (он показался мне элементарнейшим и довольно удобным) красочно-фантастический интерфейс на основе дизайна от художника, и к нему на любом языке написать какие то обработчики событий и все будет работать?
kazhuravlev: есть шлюз для использования питона с Qt. Щупал его единожды. Не камильфо. Причем не могу сказать что именно - или мне сам питон был слишком противен, или работа с Qt-шными классами в питоньей среде была не удобна.
Было впечалтенияе что "купаешься в сапогах". но то тоже имхо. возможно и потому, что не люблю я питон. ну вот совсем.
Qt соджержит штатный ECMA-262-скриптовый движок. суть JavaScript. Т.е. вы берете любюй Qt-шный класс, создаете объект и передаете ссылку на него скриптовому движку; и далее из JavaScript, который ваша же программа и загружвет в скриптовый движок - дергаете все методы объявленные в вашем классе.
т.е. меняя скриптовую часть, вы можете менять бизнес-логику работы бинарной части вашего приложения без пересборки - просто поменяв скрипт.
1) +1 за С++\Qt.
в версии 4.5 был самым клевым SDK с самой "гладкой" продуманной структурой классов. Имхо, конечно, но я бы даже сказал, что на фоне Qt, в части стройности API - Java SE выглядит костыльно-лоскутным одеялом ( хотя оно и понятно - у джавы жесточайшее требование обратной совместимости вплоть до Java 1.0, а классы Qt4 были "заново" спроектированы в 2004-2007 гг без поддержания обратной совместимости )
+: крайне продуманный, нелоскутный SDK. в 90% интерфейсов используестя единая логика и подход. вплоть до одинаковых сигнатур функций у классов.
+ : бОльшая часть механизмов GUI-классов заточена на офисные приложения.
- : не все поголовно классы совсем кроссплатформенны. Например Bluetooth на андроид ещё не заточили.
Что сейчас они сделали с QML - увы деталей уже не знаю. Отошел от Qt когда он был 4.8-5.0 (сейчас актуален Qt5.3)
2) я сейчас делаю приложение на Java на LibGDX (по вышеописанной причине с Bluetooth). LibGDX - это, вообще, игровой движок - вы работаете с камерой, сами размещаете объекты/справты/элементы на плоскости, и тд и тп. Потому если вам надо будет делать много менюшек и прочего - в самом начале, пока вы не сделаете свою прослойку менюшек, кнопочек, заголвоочков - вам надо будет вкладываться немного больше, чем с Qt, но зато вы можете сделать много больше, красивее, динамичнее с эффектами.