технологии для создания кросспатформенного GUI
Тогда конкретный фреймворк не важен. Можно хоть на C# и WinForms писать.
Или даже на Delphi!
может для начала чтоит выяснить на чём они свой софт пишут?
Наш софт написан на C++, но прямой связи gui с ним нет никакой - программа запускается на многопроцессорном комплексе. Задача gui - создать конфигурационный файл для той программы и как максимум - подключиться к суперкомпьютеру по ssh и поставить там задачу в очередь.
Хочется именно узнать не на чём "всё ещё можно" реализовать, а так как учить всё равно с нуля почти, то какие технологии являются наиболее актуальными и перспективными.
Собственно, очень интересно было бы услышать мнение гуру по поводу qt и java. Чем отличаются технологии и их возможности, простота и удобство использования, какая технология наиболее перспективна, есть ли достойные альтернативы?
Писать надо на том языке, который лучше всего знаешь. Если это c++, то Qt - ваш выбор.
Серёжа, а на остальные вопросы можешь ответить? Про перспективность, простоту, эффективность? Хочется скорее изучить что-то, что будет перспективнее вдальнейшем, а не быстрее, чтобы сделать.
Собственно, очень интересно было бы услышать мнение гуру по поводу qt и java.1. Основное отличие в том, что это Java и С++ ; если требуется что-то сначала изучить, то на Java писать будет проще. У неопытных программистов на C++ могут быть утечки памяти и более частые падения программы, чем на Java. У опытных эти параметры будут одинаковые.
2. При использовании Qt часто возникает такая ситуация, что нужно тянуть всё оттуда: строки, сокеты, потоки, и так далее. Использовать что-то своё будет проблематично.
3. На Java десктопный интерфейс можно разрабатывать на swing. Многие ошибочно считают, что он тормозит, но это не так.
4. Обе технологии имеют дизайнер для помощи в расположении элементов интерфейса. Для Qt можно использовать Eclipse CDT (здесь у меня могут быть устаревшие данные для Java лучшей средой будет IntelliJ Idea.
5. Не думаю, что тебе не хватит стандартных контролов, но сложность создания своих примерно одинаковая. Зато на Qt намного больше boilerplate.
6. Для Java придётся ставить JRE, в то время как программа на C++ может работать без установки runtime environment. Программа на Java будет потреблять больше памяти.
7. Если у вас будут сложные математические вычисления, то они будут в 1.5 - 2 раза медленнее на Java.
Серёжа, а на остальные вопросы можешь ответить? Про перспективность, простоту, эффективность? Хочется скорее изучить что-то, что будет перспективнее вдальнейшем, а не быстрее, чтобы сделать.Если бы я сравнивал c++/Qt vs Java/swing, то я бы сказал так:
1) Перспективность. Ни один из упомянутых языков в ближайшем будущем не устареет, соответственно и Qt, и swing будут развиваться и процветать. Qt сейчас достаточно динамично развивается, мы им активно пользуемся. Со swing-ом чуть похуже, но не сильно.
2) Простота. Если вам нужен стандартный гуй из формочек и кнопочек, то в Qt Creator (дефолтный IDE для Qt) это делается из коробки на ура. Стандартные компоненты на все случаи жизни, удобный дизайнер, поддержка стилей и скинов - всё быстро и просто. Если нужно что-то более сложное типа красивой визуализации, то вся мощь OpenGL к вашим услугам (причём есть куча вспомогательных классов, снимающих массу проблем и тонкостей). Swing здесь проигрывает по всем параметрам.
3) Эффективность. Тут тоже выигрывает с++. Конечно, он даёт массу возможностей выстрелить себе в ногу, но Qt позволяет скрыть множество вещей типа динамического выделения/освобождения памяти, так что можно писать код в стиле java и не париться. Впрочем, вам и эффективности java должно хватить за глаза, так что этот критерий я бы не стал принимать во внимание.
Генерить всякие таблицы вперемешку с rich-текстом на html-е одно удовольствие, в отличии от нативных контролов.
Интерактив (включая всякие динамические графики) делаются через ajax, который посылает запросы основному приложению.
Переносимость сейчас хорошая, последние IE и Mozilla с хромом совместимы, если не лезть в какие-нибудь дебри.
Под html легко и дешево найти дизайнера и верстальщика, которые сделают интерфейс красивым.
Еще один плюс, что за одно получается сразу и веб-интерфейс.
Генерить всякие таблицы вперемешку с rich-текстом на html-е одно удовольствие, в отличии от нативных контролов.О_о
3. На Java десктопный интерфейс можно разрабатывать на swing. Многие ошибочно считают, что он тормозит, но это не так.Можно посмотреть тогда уж в сторону такой забытой технологии как Netbeans Platform.
Я работал со swing (это стандартная GUI библиотека на java на мой взгляд он не выдерживает сравнения с вебом.
Наш софт написан на C++, но прямой связи gui с ним нет никакой - программа запускается на многопроцессорном комплексе. Задача gui - создать конфигурационный файл для той программы и как максимум - подключиться к суперкомпьютеру по ssh и поставить там задачу в очередь.С риском набрать минусов скромно замечу что освоить python + pyqt + paramiko может быть гораздо проще чем кажется. Особенно если подходить со стороны с++ / qt.
но разве они будут работать под linux?WinForms будет
http://www.mono-project.com/docs/faq/winforms/
И, в отличие от Qt, не придётся заниматься перекомпиляцией под каждую платформу.
То же с Явой.
Задача gui - создать конфигурационный файл для той программы и как максимум - подключиться к суперкомпьютеру по ssh и поставить там задачу в очередь.
Задача для веб интерфейса.
Ну, или qt.
Задача для веб интерфейса.Для вёб интерфейса придётся ботать server- и client-side стек + ещё, возможно, CSS.
Думаю, это оверкилл для редактирования файла конфигурации. Тем более, если на кластере/суперкомпьютере апач не стоит.
Для вёб интерфейса придётся ботать server- и client-side стек + ещё, возможно, CSS.Там похоже надо веб-формочку сделать типа <input type='text' name=someParam>
Думаю, это оверкилл для редактирования файла конфигурации. Тем более, если на кластере/суперкомпьютере апач не стоит.
Мне тут оверкиллом кажется установка jre или qt приложения на разные платформы.
Там похоже надо веб-формочку сделать типа <input type='text' name=someParam>И вместо них ты предлагаешь HTML и JavaScript?
Мне тут оверкиллом кажется установка jre или qt приложения на разные платформы.
I rest my case.
Можно обернуть это все в qt-шый QWebView и не париться.
HTML+CSS+JS суперпопулярен, куча документации и достаточно прост, если не углубляться
переносимость - будет работать везде, и даже почти одинаково
огромное кол-во готовых библиотек и прочего
самое сложное, ИМХО, транспорт между "сервером" и "браузером" - но это скорее муторно, чем сложно
тем более в том же qt есть проброс QObject в контекст браузера: http://qt-project.org/doc/qt-4.8/qwebframe.html#addToJavaSc...
ботать server- и client-sideклиентсайд - да, сервер-сайд - нахуя?
как я уже говорил, в Qt можно объект пропихнуть в JS, и через общаться
Вроде теперь дефолтное гуи под яву - это жавафх, а не свинг
клиентсайд - да, сервер-сайд - нахуя?Ок, убери сервер-сайд, подставь на его место Qt
как я уже говорил, в Qt можно объект пропихнуть в JS, и через общаться
Задача gui - создать конфигурационный файл для той программы и как максимум - подключиться к суперкомпьютеру по ssh и поставить там задачу в очередь.Раз уж вычисления идут на сервере, что мешает там же поднять web-интерфейс? По-моему самый очевидный, простой в реализации и дешевый вариант.
Хочется именно узнать не на чём "всё ещё можно" реализовать, а так как учить всё равно с нуля почти, то какие технологии являются наиболее актуальными и перспективными.
Ок, убери сервер-сайд, подставь на его место Qtя не знаю, на чем пишет ТС, если весь гуй будет навешен сбоку, то не виду проблем использовать Qt - в нем столько сахара, что базовых знаний с++ хватит с головой.
да и под большинство языков в GUI-фреймворках найдется что-то схожее с QWebView
Большое спасибо всем, кто высказал свое мнение.
а выбрали что-нибудь в итоге?
Решила, что все надо как-то хотя бы в виде hello wold попробовать. Веб-не вариант. Более робастным выглядит qt. Хотя за явой oracle и это тоже внушает. + все клиент банки нормальные на яве написаны. Я знаю пару постпроцессоров (визуализаторы и обработчики мат расчетов написанных на qt, так что скорее склоняюсь к нему. Ну и кресты ближе, чем ява. Так что я выбрала qt.
Оставить комментарий
majesty_2
По своей научной работе мы с коллегами в лабе создаём вычислительный код с целью продавать модификации конечным пользователям. Для такого дела требуется создание графического интерфейса. Скорее всего, этим делом буду заниматься я, а потому сейчас выясняю, что нужно освоить, чтобы такую работу выполнить. Из обязательных требований к технологиям - наверное только переносимость, а точнее кроссплатформенность, чтобы win и lin пользователи могли с прогой работать. Из того, что уже влетало в мою голову, это слова навроде qt, java, но пока в голове каша. Очень хотелось бы узнать, какие технологии сейчас являются наиболее актуальными и удобными для создания кроссплатформенного gui?