Какую платформу Rich Client использовать

Недавно мы начали разработку настольного приложения Java, и руководство попросило нас использовать Rich Client Platform. Я знаю четыре для Java, а именно:

  1. Eclipse RCP - www ссылка на ecipse rcp ,
  2. Netbean RCP - веб-сайт Netbeans RCP ,
  3. Spring RCP - весенний богатый клиент
  4. Valkyrie RCP - богатый клиент Valkyrie

Есть ли у кого-нибудь опыт в любом из них, и если да, то каковы сильные и слабые стороны каждого из них?

Благодарность

Ответов (11)

Решение

Я рекомендую вам взглянуть на JSR 296 - он еще не завершен, но я думаю, что он попадает в золотую середину для обеспечения определенных основных функций, которые вам действительно, действительно нужны в каждом приложении с графическим интерфейсом Java, не заставляя вас жить в нем. чрезмерно сложный фреймворк.

Я успешно использовал JSR 296 для создания приложения среднего размера. Для компоновки окон в этом приложении мы используем MyDoggy (настоятельно рекомендуется). Для управления макетом мы используем MiGLayout (настоятельно рекомендуется Beyond). Для привязки данных мы используем модифицированную форму JSR 295 (мы реализовали нечто похожее на PresentationModel поверх JSR 295, которую мы используем для привязки нашего графического интерфейса). Я нахожусь в процессе включения Guice в качестве механизма DI, но еще не закончил эту работу (пока я думаю, что он будет «хорошо работать» с JSR 296 с некоторыми настройками). Давайте посмотрим ... настойчивость - это большое недостающее звено здесь - в настоящее время я оцениваю устойчивость Simple для XML, но у меня возникают проблемы с его работой с контейнерами DI, такими как Guice. У меня есть Betwixt работает, но зависимости от Betwixt огромны, поэтому мы ищем что-то более упорядоченное.

Мнения о других вариантах RCP для Java:

NetBeans: у меня есть некоторые фундаментальные философские возражения против подхода, используемого NetBeans (на мой вкус, слишком много антишаблонов проектирования). В конце концов, фреймворк вынуждает вас принимать плохие дизайнерские решения - и его практически невозможно использовать, если вы не используете NetBeans в качестве своей IDE (я пробовал, но просто не смог переключиться с Eclipse на NB). Вероятно, это только я, но кажется, что можно писать код для инфраструктуры RCP без использования больших сложных мастеров и груд автоматически сгенерированного кода и файлов XML. Я потратил так много часов на устранение неполадок в старом коде Visual C++, созданном Visual Studio, что я крайне подозрительно отношусь к любым фреймворкам, которые нельзя закодировать вручную.

Spring RCP: У сотрудников Spring хороший солидный дизайн, но документация действительно очень слабая. Довольно сложно освоить это (но как только вы это сделаете, вы сможете сделать все довольно быстро).

Eclipse RCP: мы не использовали Eclipse только из-за накладных расходов на развертывание (зависит от вашей целевой аудитории - для нас развертывание дополнительных 50 МБ времени выполнения просто не сработало). Несомненно, Equinox - прекрасная вещь, если вашему приложению требуется значительная функциональность плагина (конечно, вы также можете запустить Equinox с JSR 296 или использовать шаблоны проектирования, аналогичные шаблону Whiteboard, продвигаемому OSGi).

Хотя я явно не использовал ни один из них, я использовал части Eclipse RCP. В частности, я использовал среду выполнения Eclipse OSGi (Equinox) и некоторые общие утилиты, и мне это очень понравилось. OSGi - это фантастика для работы. У меня есть несколько друзей по крупным контрактам, которые используют Eclipse RCP (больше, чем я использую), и они в восторге от этого.

Если бы мой проект не содержал большого количества устаревших Swing, Eclipse RCP был бы моим первым выбором. OSGi - это так весело! (Я предполагаю, что Spring тоже его использует, хотя не проверял)

У меня есть опыт работы с Eclipse RCP, и я бы порекомендовал его.

Плюсы:

  • Компоненты - модель компонентов / дополнительных модулей допускает повторное использование.
  • Использует SWT и JFace, что позволяет создавать собственный интерфейс.
  • Подключаемые виды, редакторы и перспективы делают макеты простыми и настраиваемыми.
  • Точки расширения Eclipse упрощают расширение и интеграцию со сторонними API и инструментами.

Минусы:

  • Кривая обучения

Если вы выберете Eclipse RCP, демонстративно получите эту книгу, она бесценна, когда вы только начинаете работать с фреймворком: http://www.amazon.com/Eclipse-Rich-Client-Platform-Applications/dp/0321334612

Netbeans RCP превосходен. За эти годы он прошел долгий путь. Он использует более надежную технологию («Swing»), которую многие люди используют и понимают. Eclipse RCP (точнее SWT) меня просто сбил с толку.

Существует также создание и настройка пользовательского интерфейса на основе отражения.

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

https://github.com/dotxyteam/ReflectionUI

С моей точки зрения конечного пользователя.

Я видел больше реализаций в Eclipse, чем в двух других. На самом деле я знал о реализациях Netbeans, но ни разу не получил их в руки.

Со Spring впервые слышу об этом.

Хотя мой ответ определенно представляет собой обзор с высоты 10 000 футов, он каким-то образом отражает предпочтения отрасли в отношении использования того или другого.

Кроме того, разница пропорциональна времени доступности платформы. Помните, что Eclipse создает SWT для решения проблем, которые Java Swing имел еще в 1.3, где он был просто запредельно медленным.

Netbeans очень выиграли от улучшений JVM и теперь работают очень и очень быстро.

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

Вот статья об этих двух платформах Eclipse RCP и Netbeans RCP. Может быть полезно

http://blogs.oracle.com/geertjan/entry/eclipse_platform_vs_netbeans_platform

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

Помимо Eclipse RCP, вам следует взглянуть на Apache Felix ( http://felix.apache.org ) и Knopflerfish ( http://www.knopflerfish.org ), которые представляют собой (меньшие) реализации фреймворка OSGi с открытым исходным кодом.

Eclipse RCP предоставляет механизм подключаемых модулей, чтобы вы могли добавлять новые функции позже при развертывании. Также с помощью механизма обновления вы можете изменить систему без вмешательства пользователя. На этапе разработки Eclipse RCP обеспечивает быструю и надежную основу с перспективами, представлениями, редакторами, механизмами команд и действий. Если вашему проекту требуется много разных окон с разными панелями инструментов и меню (а также настраиваемыми контекстными меню), я предлагаю вам использовать Eclipse RCP. Я проверяю только видео о платформе Netbeans и запускаю проект Helloworld, но он кажется медленным и неуклюжим :) 40 секунд до запуска (вы можете перезагрузить приложение, хотя и без перезапуска.) Vogella.de - хорошая коллекция руководств для Затмение RCP

ВВЕДЕНИЕ - пропустите, если вас интересует только результат;)
Я разрабатывал редактор для пользовательского языка программирования, очень похожего на JSP. Сначала я реализовал редактор в качестве своей диссертации, используя платформу NetBeans . После окончания школы у меня есть работа, и они хотели, чтобы я реализовал то же самое в Eclipse RCP , поэтому теперь я могу сравнить эти две платформы, по крайней мере, в том, с чем я столкнулся во время этого проекта.

РЕЗУЛЬТАТ. Если бы у меня был выбор между платформой Netbeans и Eclipse RCP, я бы определенно выбрал платформу NetBeans . Почему?
Отличные скринкасты, хорошие учебные пособия, очень активное дружелюбное и полезное сообщество, достаточно хорошо документировано, а исходный код написан красиво и с хорошими соглашениями о коде. Также есть несколько интересных гаджетов (куки, поиск). Меня это просто устраивает.

А почему Eclipse RCP меня не устраивает?
Документация слабее, а соглашения и API иногда .. эээ .. слишком странные для меня :-) Довольно часто встречаются такие методы, как:

/**
* Returns a description of the cursor position.
*
* @return a description of the cursor position
* @since 2.0
*/
protected String getCursorPosition() {
..
}

Ну, я подумал, что они, должно быть, шутят :-D Как я должен использовать этот метод? Или вот так:

/**
* Returns the range of the current selection in coordinates of this viewer's document.
*
* @return a <code>Point</code> with x as the offset and y as the length of the current selection
*/
Point getSelectedRange();

Хотя количество и тип атрибутов подходят, я не считаю идеальную структуру данных объекта Point для хранения диапазона ;-)

Таких сюрпризов в Eclipse RCP немало.

В настоящее время я разрабатываю приложение Spring RCP. Документация действительно слабая, это точно, но в блогах и на форумах есть много информации для начала. Как только вы начнете курсировать, все будет развиваться довольно быстро, и вам действительно нужно изучить базовый Spring только в том случае, если вы не знакомы с фреймворком. Интеграция с библиотеками Spring, такими как VLDocking, тоже отличная.

Я думаю, что Spring Rich отлично подходит, если вы используете для разработки автономного настольного Java-приложения. Я имею в виду, что если вам не нужно распространять модули и делать онлайн-обновления, это должно удовлетворить большинство потребностей.

Слишком поздно отвечать, но некоторые ребята могут попасть на эту страницу.

Я бы пошел на Netbeans RCP, 1) платформу Netbeans. это довольно зрелая и эволюционировавшая платформа для разработки приложений.

2) Начать работу с ним очень легко, в то время как кривая обучения eclipse RCP довольно крутая. Просто перейдите по адресу http://netbeans.org/kb/trails/platform.html , там вы найдете учебные пособия, видеоролики (посмотрите 10 лучших видеороликов по API, а также попробуйте учебные пособия, прежде чем читать книги, таким образом вы получите представление о вещи заранее).

3) Книги по netbeans RCP (я думаю, есть 2 на netbeans RCP) обновлены (только небольшие изменения, с которыми у вас не будет особых проблем). тогда как основная книга по RCP была недоступна в течение долгого времени (недавно, то есть в мае 2010 года, вышла новая редакция, так что это очень хорошо для разработчиков Eclipse RCP. Ее не было, когда я пытался Мне не нравятся авторы, которые не публикуют новые издания, почти оставляя новых разработчиков в беде. Не всем нравится читать документы. Не публиковать обновленные книги почти равносильно уничтожению технологии). Я хотел бы увидеть книгу типа поваренной книги для обеих платформ.

4) Netbeans имеет полностью интегрированный конструктор графического интерфейса пользователя, что является большим плюсом. Eclipse RCP, вам нужно либо передать код, либо купить сторонний конструктор графического интерфейса.

5) Платформа Netbeans имеет довольно крутой API Lookup для межмодульного взаимодействия. Я предполагаю, что ребята из Eclipse используют для этой цели точки расширения. Но поиск по API становится простым, как только вы его освоите.

6) В любом случае, это серьезное дизайнерское решение, какую платформу выбрать. Платформа Netbeans у меня работает. Это может не сработать для вас. Обе платформы требуют усилий, обе предоставляют замечательные «из коробки» функции. Протестируйте оба, а потом решите.