Я собираюсь разработать новый графический интерфейс для существующего приложения на С++. Приложение работает в Windows и Linux, а связь с графическим интерфейсом осуществляется через клиент/сервер.
Каковы плюсы и минусы между Eclipse RCP и Qt?
Я собираюсь разработать новый графический интерфейс для существующего приложения на С++. Приложение работает в Windows и Linux, а связь с графическим интерфейсом осуществляется через клиент/сервер.
Каковы плюсы и минусы между Eclipse RCP и Qt?
Eclipse RCP - это гораздо больше, чем графический набор инструментов:
Есть много плагинов Eclipse, которые вы можете использовать в своем приложении, и многие из них имеют лицензии на распространение, которые являются дружественными к коммерческим продукты.
У него есть конструктор WYSIWYG.
Eclipse использует специальный инструментарий для окон, который называется SWT; на каждой платформе он опирается на собственный графический слой. В Linux он полагается на Gtk + (хотя это также возможно использовать Motif), что по моему опыту (и другие) имеет проблемы с производительностью, в основном с виджетами, которые обновляются с высокой скоростью. На самом деле многие из нас внедряют элементы Swing в приложения RCP Eclipse для решения проблем с производительностью при сохранении расширяемой архитектуры Eclipse; это, однако, может привести к проблемам интеграции . Там версия SWT, использующая Qt как бэкэнд, но ее включение в Eclipse codebase кажется заторможенным с октября 2010 года.
Время запуска (понимаемое как время, прошедшее с момента запуска приложения до появления окна) приложений Eclipse RCP может быть очень длинным.
Если вы намерены интегрировать материал С++ с Java с помощью JNI, имейте в виду, что некоторым людям это сложно.
В Eclipse много и много ошибок. Eclipse bugzilla - очень полезный ресурс для разработчика RCP.
Чем больше вы хотите, чтобы приложение Eclipse RCP выглядело, а поведение и поведение отличались от Eclipse IDE, тем больше проблем вы получите.
Развитие Eclipse RCP имеет, по моему мнению, большую кривую обучения.
Использование Eclipse RCP для небольших проектов в основном является самоубийством (если только вы не ограничиваете себя созданием плагина или подобного). Он предназначен для средних и крупных и очень крупных проектов из-за сложности его инфраструктуры, требований к ресурсам и вышеупомянутой кривой крутого обучения.
Обе лицензии на распространение (LGPL/GPL/commercial для Qt, EPL для Eclipse) достаточно гибкие для большинства применений, на мой взгляд. Тем не менее, я не юрист, поэтому я могу ошибаться в этом.
И, конечно же, следует учитывать другие факторы, такие как опыт разработчиков, их технические навыки, размер команды, конкретные требования и т.д.
Кстати, у меня большой опыт работы в RCL Eclipse, но только теоретические знания по Qt, поэтому я могу быть предвзятым/ошибочным в своих заявлениях.
Теперь, когда у Qt есть лицензия LGPL, я бы выбрал Qt в любой день недели над Eclipse RCP.
Я использовал оба для создания довольно сложных приложений.
Поскольку вы можете использовать eclipse для разработки С++, я предполагаю, что мы сравниваем в основном swt/jface vs Qt, а не среду разработки eclipse.
Некоторые вещи, которые я заметил, использовали оба:
1) Qt имеет лучшую документацию и образцы
Помимо некоторых примеров с половинной выпечкой в Интернете, я мог бы найти небольшую полезную документацию по eclipse.
2) Qt имеет гораздо больше "профессиональных" пользователей
Есть много профессиональных компаний, которые используют Qt в качестве своего интерфейса. Учитывая три поддержки платформы (Windows, Linux, Mac), она очень гибкая и имеет большую поддержку.
3) Qt имеет тенденцию быть более полным и зрелым -
Используя Eclipse, я заметил, что довольно часто элементы управления и пакеты, которые были доступны, были частично выполнены и не совсем полны. Они, как правило, разрабатывались для кого-то, и только кодировались. Элементы управления Qt были почти всегда полным дизайном.
4) Стиль.
Оба Qt и Eclipse визуализируются с использованием библиотек локальных платформ, поэтому ваш пользовательский интерфейс будет "выглядеть" как другие пользовательские интерфейсы на платформе, на которой вы работаете (например, Linux и Windows). Тем не менее, Qt также предоставляет довольно сложные функции стилизации, которые позволяют вам легко изменять внешний вид любого элемента управления и дают вам больший контроль над внешним видом вашего приложения.
С новым декларативным языком (Qt 4.7. *) вы приближаетесь к уровню управления WPF, который действительно потрясающий.
5) Дизайнер интерфейса:
Qt имеет гораздо более богатый конструктор, который позволяет вам компоновать свою форму и выполнять базовое тестирование без необходимости компилирования какого-либо кода. Дизайнер также дает вам возможность добавлять взаимодействия между элементами управления в вашей форме. Ex. Нажмите эту кнопку - отключите эту опцию
Eclipse также имеет конструктор форм, хотя мой опыт работы с ним ограничен. Я пытался использовать его пару раз с очень ограниченным успехом. Наконец, я закодировал каждую форму вручную через код. Это болезненно.
6) Взаимодействие с существующим исходным кодом
Если у вас нет этой проблемы, вам очень повезло. Поскольку Qt основан на С++, он легко интегрируется с устаревшим кодом C и С++. Интеграция Java и C непросто.
7) Рисование библиотек
Я пробовал кодировать некоторые рисованные фигуры с использованием библиотек swt и был вынужден обойти большие части библиотеки чертежей swt из-за того, что было там. Использование Qt для выполнения чего-то подобного не было проблемой вообще.
8) Модели деревьев и списков
Eclipse действительно предоставляет некоторые хорошие функциональные возможности для распространения данных в деревьях, а также списки и все. Это почти так же хорошо в Qt, хотя немного сложнее настроить.
9) Макет приложения
Eclipse обеспечивает отличную функциональность для управления "представлением (панели док-станции) и" перспективами "(рабочими процессами), которые, если вы решили использовать их, делают жизнь приятной и легкой. Qt требует, чтобы вы сделали это сами. Qt имеет функциональность док-панели, но при создании богатого приложения вы должны сами установить это.
Дополнительное примечание:
Qt также предоставил некоторые дополнительные библиотеки для поддержки таких вещей, как xml и т.д. Таким образом, это помогает немного сократить промежуток между С++ и java для таких вещей.