Какую клиентскую платформу Rich использовать - PullRequest
14 голосов
/ 23 февраля 2009

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

  1. Eclipse RCP - www ссылка на ecipse rcp ,
  2. Netbean RCP - Веб-сайт Netbeans RCP ,
  3. Spring RCP - богатый пружиной клиент
  4. Валькирия RCP - Валькирия, богатый клиент

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

спасибо

Ответы [ 11 ]

10 голосов
/ 27 мая 2009

INTRO - пропустите, если вас интересует только результат;)
Я разрабатывал редактор для пользовательского языка программирования, очень похожего на 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 есть несколько таких сюрпризов

7 голосов
/ 04 августа 2010

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

Я бы пошел на Netbeans RCP, 1) Платформа Netbeans. он достаточно развит и является «простой в использовании» платформой для разработки приложений.

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

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

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

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

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

6 голосов
/ 24 февраля 2009

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

Я успешно использовал JSR 296 для создания приложения среднего размера. Для оформления окна в этом приложении мы используем MyDoggy (настоятельно рекомендуется). Для управления макетом мы используем MiGLayout (кроме того, настоятельно рекомендуется). Для привязки данных мы используем модифицированную форму JSR 295 (мы реализовали нечто похожее на PresentationModel поверх JSR 295, которое мы используем для нашей привязки GUI). Я нахожусь в процессе включения 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 или использовать шаблоны проектирования, аналогичные шаблонам доски, продвигаемым OSGi).

4 голосов
/ 23 февраля 2009

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

Плюсы:

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

Минусы:

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

Если вы выберете Eclipse RCP, демонстративно получите эту книгу, она будет неоценима, когда вы только начинаете работать с фреймворком:

3 голосов
/ 25 мая 2010

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

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

1 голос
/ 12 февраля 2014

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

1 голос
/ 09 марта 2009

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

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

1 голос
/ 23 февраля 2009

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

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

1 голос
/ 23 февраля 2009

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

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

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

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

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

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

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

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

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

0 голосов
/ 06 ноября 2018

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

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

https://github.com/dotxyteam/ReflectionUI

...