Open Source среды разработки приложений на языке Java

реклама
Open Source среды разработки
приложений на языке Java.
Сравнительный анализ.
2005
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Краткое содержание.
Целью данного исследования является сбор и анализ данных относительно наиболее
востребованных интегрированных сред разработки (IDE) на языке программирования Java.
Предложен набор различных критериев, позволяющий с высокой степени объективности
оценить популярность сравниваемых продуктов, их сильные и слабые стороны. Исследуемые
продукты были протестированы в лаборатории компании по целому ряду критериев, включая
набор тестов из книги «Java 1.5 Tiger: A Developer's Notebook».
Оценка динамики развития и функциональности сред разработки выявил бесспорное
лидерство Eclipse IDE, а также общий рост сектора инструментов, использующих платформу
Sun Java равно как и рост популярности Java в качестве основной переносимой платформы
для реализации информационных систем с доминированием Java 2 Enterprise Edition (J2EE) и
Web-ориентированных многозвенных приложений.
Ограниченная лицензия
2
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Оглавление
Краткое содержание. ...................................................................................................................... 2
1
О компании. .......................................................................................................................... 5
2
Лицензионное соглашение.................................................................................................. 5
3
Постановка задачи............................................................................................................... 6
3.1
Рынок разработки на Java .............................................................................................. 6
3.2
Область определения исследования ............................................................................ 7
4
Краткая справка об исследуемых продуктах..................................................................... 8
4.1
Eclipse ............................................................................................................................... 8
4.2
NetBeans........................................................................................................................... 9
5
Выбор критериев.................................................................................................................. 9
6
Сравнение продуктов по выбранным критериям............................................................ 10
6.1
Инсталляция .................................................................................................................. 10
6.2
Соответствие платформам Java 2 и Java 5 ................................................................ 10
6.2.1
Поддержка новых ключевых возможностей языка ............................................ 11
6.2.2
Настройки параметров поддержки Java 5 в среде ............................................ 11
6.3
Наличие версий для разных операционных систем .................................................. 13
6.4
Разработка ПО для мобильных устройств.................................................................. 13
6.5
Использование открытых стандартов ......................................................................... 15
6.5.1
Поддержка разработки Web-служб ..................................................................... 15
6.5.2
Соответствие платформе Java 2 Enterprise Edition ........................................... 19
6.5.3
Работа с XML......................................................................................................... 23
6.5.4
Сборка проектов по файлам сценариев Ant ...................................................... 25
6.6
Уровень «сквозной» интеграции в рамках среды....................................................... 29
6.6.1
Интеграция в рамках среды................................................................................. 29
6.6.2
Интеграция внешних инструментов .................................................................... 32
6.6.3
Подключение исходных текстов и справочной информации............................ 33
6.7
Удобство использования .............................................................................................. 35
6.7.1
Настройка среды под конкретные задачи .......................................................... 35
6.7.2
Подключение проектов и файлов........................................................................ 36
6.7.3
Разработка визуального интерфейса ................................................................. 39
6.7.4
Редактор ................................................................................................................ 41
6.7.5
Отладчик................................................................................................................ 43
6.7.6
Управление тестированием ................................................................................. 44
6.7.7
Создание ПО на базе моделей............................................................................ 46
6.7.8
Автоматический рефакторинг.............................................................................. 48
6.7.9
Автоматизация кодирования ............................................................................... 49
6.7.10
Обновление среды и компонентов...................................................................... 51
6.7.11
Управление версиями .......................................................................................... 53
6.7.12
Система помощи................................................................................................... 53
6.7.13
Управление опциями и настройками .................................................................. 56
Ограниченная лицензия
3
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
6.8
Скорость работы............................................................................................................ 58
6.9
Затраты на приобретение............................................................................................. 58
6.10
Уровень поддержки ....................................................................................................... 58
6.11
Популярность у разработчиков .................................................................................... 58
6.11.1
Характеристики продукта ..................................................................................... 59
6.11.2
Характеризующие словосочетания..................................................................... 59
6.11.3
Технологии ............................................................................................................ 60
6.11.4
Editions ................................................................................................................... 61
6.12
Перспективность............................................................................................................ 61
7
Итоговая оценка................................................................................................................. 63
8
Заключение ........................................................................................................................ 65
9
Выводы и рекомендации ................................................................................................... 66
10
Copyright и торговые марки............................................................................................... 66
11
Приложение А. Тесты на определние поддержки Java 5............................................... 67
Ограниченная лицензия
4
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
1 О компании.
Компания Elashkin Research занимается исследованиями компьютерных технологий и
российского рынка enterprise решений. Специфика этого сегмента заключается в тесной
интеграции компьютерных технологий, бизнес процессов и экономических показателей. При
этом огромное значение придается пониманию технологий и путей внедрения технологий в
бизнес процессы. Новые технологии, используемы в enterprise системах, зачастую весьма
сложны для понимания, а часто еще не достаточно формализованы. Между тем, стоимость
ошибки в прогнозе может быть весьма высока.
Основным качеством любой компании, исследующей этот рынок, является глубокое
понимание технологий, потребностей заказчика и существующих на рынке тенденций. Такой
подход к исследованиям компании Elashkin Research и тесное сотрудничество с лучшими
экспертами ведущих производителей и разработчиков современных enterprise-технологий и
решений делают компанию Elashkin Research лидером этого рынка. Более подробную
информацию и другие отчеты вы можете найти на нашем сайте www.elashkin.com.
2 Лицензионное соглашение.
Ограниченная лицензия.
Данная копия исследования может использоваться в ознакомительных и коммерческих
целях. Вы можете передавать копию этого исследования внутри организации и третьим лицами
и организациям, а также использовать ее в учебном процессе.
Запрещается внесение любых изменений в текст исследования и/или любой из его частей
без письменного разрешения Elashkin Research.
Если вы хотите разместить этот материал на своем сайте или в другом месте, с
неавторизованным доступом, то вы должны получить согласие компании Elashkin Research.
Если вы не согласны с условиями лицензии, то вам следует удалить копии этого отчета и
отказаться от его использования. Продолжение использования этого исследования
автоматически означает согласие с условиями лицензирования.
При использовании материалов данного исследования для создания статей, обзоров
и других документов ссылка Elashkin Research обязательна.
Ограниченная лицензия
5
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
3 Постановка задачи
Разработка программного обеспечения является краеугольным камнем индустрии IT.
Технологии и новые парадигмы приходят и уходят, но индустрия не может существовать без
разработки нового ПО. Разработка ПО эволюционирует уже много десятков лет и прошла
через несколько этапов: начиная с паяльника и тумблеров и до современного объектноориентированного программирования веб-сервисов в распределенных системах.
Параллельно с изменением моделей ПО происходят изменения в средствах разработки.
Интегрированные многофункциональные модульные среды для разработки уже стали сегодня
стандартом. Сегодняшние системы включают не только средства индивидуальной разработки,
но средства групповой работы над проектами, управления проектами и целый ряд других
интегрированных возможностей, вплоть до ПО оценки рисков.
Другое направление, получившее широкое распространение сегодня – программы с
открытым кодом и идеи Open Source. Сегодня в это движение пришли крупные компании и
многие компании стали рассматривать OSS как альтернативу коммерческому ПО. Именно
поэтому целью данного исследования является рассмотрение возможностей и
функциональности OSS средств разработки на Java. Мы выбрали Java как одну из наиболее
популярных платформ для разработки ПО на сегодня1.
В данном документе сравнительный анализ различных сред разработки приложений на
языке Java, показывает плюсы и минусы различных продуктов из этой категории, их
распространенность. Целью исследования является выявление лидера и наиболее
подходящей среды для различных типов задач в данной категории продуктов.
3.1 Рынок разработки на Java
Рынок продуктов для Java-разработки оценивается в несколько миллионов копий. По
словам президента Sun Microsystems Джонатана Шварца (Jonathan Schwartz), в мире сейчас
примерно 10 миллионов разработчиков и 3 из них используют платформу Java. На
проходившей в Сан-Франциско, США, июле 2004 года всемирно известной конференции Javaразработчиков2 JavaOne приняли участие 14 тысяч человек. Спрос на специалистов по Java
достаточно велик. Так, на популярных серверах поиска работы http://www.job.ru (Россия) и
http://www.jobsearch.com (США) поиск актуальных вакансий3 выдал 363 и 1927 вакансий,
соответственно.
Опрос4 java-разработчиков, проведенный популярным web-ресурсом ONJava
(подразделение известного издательства O’Reilly) выявил, что 86% специалистов
разрабатывают на Java в среде Windows, 58% предпочитают Linux, 21% —Solaris, 16%
программируют в коммерческих ОС Unix и 14% используют Mac OS X. Цифры показывают, что
многие из опрошенных ведут разработку сразу на 2 различных платформах, что позволяет
сделать вывод о возможной емкости рынка средств разработки на Java в 4-4,5 миллиона копий.
В том же опросе на ONJava выяснилось, что в качестве конечной платформы для
создаваемого на Java ПО доминируют Linux и Windows(по 69%), далее идет ОС Solaris с 37%,
UNIX будет платформой для 29%, а на долю Mac OS X придется 10%. Среди лидерующих сред
разработки безусловную победу одержала Eclipse, набрав 62% голосов, 29% программистов
использовали различные редакторы и командную строку, 20% предпочли IntelliJ и на долю
NetBeans остались 16%. Также, 16% предпочитают прочие среды. Как можно заметить, здесь
тоже присутствует тенденция использовать не один инструмент.
Как видно из приведенных выше цифр, несмотря на величину рынка и большое количество
инструментов для разработки на Java, в реально популярных сред для разработки
относительно немного. Очевидно, что рынок сред разработки уже стабилизировался и вряд ли
стоит ждать от него серьезных изменений.
1
2
3
4
.NET как альтернатива J2EE, практически полностью связана с коммерческими системами разработки.
http://java.sun.com/javaone/sf/index.jsp
Как актуальные мы рассматриваем новые вакансии за последние 3 дня
http://www.onjava.com/pub/a/onjava/2004/05/19/2004-survey.html?page=last&x-maxdepth=0
Ограниченная лицензия
6
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
3.2 Область определения исследования
В настоящее время существует большое количество средств разработки для Java. Дя
первичного анализа мы выбрали несколько наиболее распространенных.
•
Eclipse 3.1M4 — Open Source-среда, первоначально разработанная IBM
(http://www.eclipse.org)
•
NetBeans IDE 4.1 Early Access 1 — Open Source-среда, первоначально
разработанная Sun Microsystems (http://www.netbeans.org)
•
jEdit 4.2— полностью независимая система разработки (http://www.jedit.org)
•
KDevelop 3.1.2 — Open Source-среда для Linux, поддерживающая несколько языков
программирования (http://www.kdevelop.org)
•
BlueJ 2.0.2— бесплатная среда для некоммерческого использования,
поддерживаемая Sun Microsystems (http://www.bluej.org)
•
Borland JBuilder 2005 — один из наиболее старых коммерческих продуктов на
рынке, флагманский продукт корпорации Borland (http://www.borland.com)
•
IntelliJ IDEA 4.5.3 — довольно молодая платная система, созданная компанией
JetBrains (http://www.jetbrains.com)
•
Oracle JDeveloper 10g — мощная среда, выросшая из Borland JBuilder, но в
настоящий момент сильно расширенная и переработанная (http://www.oracle.com)
В данном исследовании мы фокусируемся только на профессиональных интегрированных
средствах разработки, удовлетворяющих базовым критериям Open Source5, оставляя вне
рассмотрения коммерческое ПО. Для удобства представления различных систем разработки,
мы свели их в таблицу:
Бесплатные
Open Source
Профессиональные
интегрированные
среды
Универсальные
среды для
программистов
Закрытые
Коммерческое ПО
JBuilder 2005
Eclipse 3.1M4
IDEA 4.5.3
NetBeans IDE 4.1 EA1
JDeveloper 10g
jEdit 4.2
KDevelop 3.1.2
Системы с
минимальной
функциональностью
BlueJ 2.0.2
Как видно из приведенной таблицы, целям нашего сравнительного анализа соответствуют
только 2 продукта (Eclipse и NetBeans), находящиеся в ячейке, выделенном серым фоном. Мы
намеренно отказываемся от 3 мощных сред (JBuilder, IDEA и JDeveloper) по причине того, что
они не удовлетворяют нашим критериям Open Source.
Продукты во второй строке таблицы (jEdit и KDevelop) хотя и удовлетворяют критериям
Open Source, но были исключены нами по причине чрезмерной универсальности, которая
приводит к определенной потере фокусировки на Java-программировании. С точки зрения
разработчика они не могут на равных конкурировать с профессиональными средами и более
5
Термин Open Source ПО (OSS) может иметь множество определений. В данном исследовании мы считаем
OSS не только ПО, с лицензией GNU GPL (http://www.gnu.org/), но и более широкий класс лицензий,
включенных Open Source Initiative (http://www.opensource.org/) в список OSS. Более подробно с классификацией
Open Source принятой в Elashkin Research вы можете ознакомиться в нашем исследовании ««Бизнес модель
Open Source. Перспективы и угрозы».
Ограниченная лицензия
7
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
пригодны для малых задач или программирования время от времени, когда нет необходимости
изучать большое количество документации. Помимо этого KDevelop не может быть запущена в
ОС Windows без применения эмулятора ОС UNIX как, например, Cygwin6.
Среда BlueJ была исключена из рассмотрения по причине несоответствия ее критериям
Open Source и изначальной ориентации не на создание ПО, а на обучение программированию.
Таким образом реальную конкуренцию в выбранной области исследования могут
составлять только Eclipse и NetBeans. Поэтому данное исследование фактически свелось к
сравнению этих двух продуктов.
4 Краткая справка об исследуемых продуктах
4.1 Eclipse7
Среда Eclipse разрабатывается и поддерживается бесприбыльной корпорацией Eclipse
Foundation — на базе кода, переданного в фонд корпорацией IBM. Последняя вложила 40
миллионов долларов в ноябре 2001 года, когда создавалась Eclipse Foundation Inc. На момент
организации согласно протоколам Web-серверов организации, среду Eclipse ежедневно
скачивали более 4000 раз. Помимо корпорации IBM в созднии Eclipse Foundation участвовали
такие фирмы как Borland Corporation, Merant, QNX Software Systems, Rational Software, RedHat,
SuSE и TogetherSoft. В сентябре 2002 вышла Eclipse версии 2.0. В апреле 2003 — версия 2.1, а
в июне 2004 года была объявлена существенно улучшенная версия 3.0. В настоящий момент
ведется работа над версией 3.1.
Базой для текущей версии IDE служит так называемая Eclipse RCP (Rich-client Platform),
которая включает в себя:
1. универсальную базовую среду для реализации клиентских приложений
2. компоненты для построения пользовательского интерфейса
3. модульную компонентную модель для интеграции новой функциональности
4. менеджер обновлений
На наш запрос директор по маркетингу Eclipse Foundation Йен Скерретт8 любезно сообщил
нам, что с момента основания корпорации Eclipse IDE была скачана более 39 миллионов раз.
Изначально Eclipse задумывалась как профессиональный продукт категории «customizable»
т.е. ориентированый на подстройку под каждого отдельного пользователя. Поэтому она
снабжена открытым документированным интерфейсом для разработки встраиваемых модулей
(plug-ins). Параллельно разработке самой среды, Eclipse Foundation поддерживает несколько
проектов, ориентированных на создание дополнительных инструментов к Eclipse IDE.
Из платных аналогов с Eclipse по парадигме более всего схожа IntelliJ IDEA, которая также
ориентирована на подключение внешних модулей и шаблонов.
Сама среда Eclipse выпускается под лицензией Common Public License (CPL)9, но
отдельные компоненты могут распространяться под иной лицензией. Планируется переход на
лицензию EPL (Eclipse Public License)10,11.
6
Cygwin (http://www.cygwin.com) — мощный бесплатный Open Source-эмулятор Linux, позволяющий запускать
Linux-приложения в ОС Window. С его помощью можно выполнять не только консольные приложения, но и
программы, рассчитанные на выполнение в графической среде XWindow.
7
8
9
http://www.eclipse.org/
Ian Skerrett, Director of Marketing, Eclipse Foundation, Inc., [email protected]
http://www.opensource.org/licenses/cpl1.0.php
10
http://www.opensource.org/licenses/eclipse-1.0.php
11
И CPL и EPL признаются Open Source Initiative (http://www.opensource.org/), удовлетворяющих критериям Open
Source.
Ограниченная лицензия
8
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
4.2 NetBeans12
Среда NetBeans начала свое существование в 1996 году в Чехии как студенческий проект и
в то время носила название Xelfi. Задачей ее создателей был выпуск среды разработки Javaприложений на манер Borland Delphi. Были выпущены две коммерческие версии под маркой
NetBeans Developer 2.0 и 2.1. В мае 1999 была представлена NetBeans Developer 3.0 beta, а
уже в октябре того же года NetBeans была приобретена Sun Microsystems для построение
своей коммерческой линейки продуктов под брэндом Forte. Всвязи с повышением интереса к
ПО Open Source, Sun открыл исходные тексты NetBeans IDE в июне 2000 года. До сих пор
NetBeans IDE спонсируется Sun Microsystems как отдельный Open Source проект.
NetBeans относится к так называемому классу продуктов «out-of-box», т.е. рассчитанных на
начало работы с ним сразу после окончания инсталляции. Поэтому в нее встроены средства
конструирования пользовательского интерфейса, Web-приложений и т.п. Тем не менее, весь
готовый к использованию функционал среды выполнен в виде уже подключенных модулей
расширений. И в этом NetBeans архитектурно напоминает Eclipse.
К сожалению, на наш запрос о количестве загрузок с сайта NetBeans, ответа от
представителей организации так и не пришло.
Из платных аналогов с NetBeans по парадигме более всего схожа c Borland JBuilder,
ориентированной на быстрый старт и минимум доработки.
NetBeans распространяется под лицензией Sun Public License (SPL) базирующейся на
Mozilla Public License (MPL)13.
5 Выбор критериев
Вопрос выбора критериев для оценки того или иного программного обеспечения всегда в
какой-то мере субъективен и отражает понимание авторами методики наиболее важных
потребительских свойств продукта. При выборе критериев нашего сравнения мы использовали
мировой опыт выбора критериев подобных продуктов, но в наибольшей степени основывались
на опыте наших экспертов в области разработки и консультировались с профессиональными
разработчиками Java ПО. В качестве критериев сравнения при анализе использовались:
•
соответствие платформам Java 2 и только что появившейся Java 5
•
наличие версий для разных операционных систем
•
использование открытых стандартов
•
уровень «сквозной» интеграции составляющих в рамках среды
•
инструментальная оснащенность и настраиваемость под нужды потребителя
•
удобство
•
затраты на приобретение
•
уровень поддержки (платной и бесплатной)
•
популярность у разработчиков
•
перспективность
Все оценки прохождения критериев в рамках данного исследования выставлялись по
трехбальной шкале: «хорошо», «удовлетворительно», «плохо». При невозможности оценить
какую-либо возможность оценка не выставлялась. Итоговая суммарная оценка подводится в
разделе «Итоговая оценка» в конце данного документа.
12
http://www.netbeans.org/
13
Open Source Initiative (http://www.opensource.org/) – организация ведущая список различных лицензий,
удовлетворяющих критериям Open Source, включает эту лицензию в свой список OSS.
Ограниченная лицензия
9
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
6 Сравнение продуктов по выбранным критериям
6.1 Инсталляция
С точки зрения разработчиков удобство инсталляции не является важным фактором, но
все же мы отметили этот пункт в данном документе по той причине, что наличие
инсталляторов, а также прозрачность самого процесса позволяют сократить время от
получения дистрибутива до начала работы. Кроме того, ранние выпуски самых различных сред
для Java могли некорректно устанавливать окружение и различные опции, что приводило к
необходимость тратить дополнительное время на ручную подстройку установленного продукта.
Eclipse
На официальном сайте Eclipse по адресу http://www.eclipse.org и на различных «зеркалах»,
можно найти различные типы варианты инсталляторов. Есть вариант Eclipse SDK, когда
дистрибутив включает в себя все возможные компоненты, а именно: бинарный вариант среды,
ее исходные тексты, исходники и бинарная версия библиотеки графических элементов SWT,
пользовательская и разработческая документация, инструменты для Java-разработки и
разработки расширений для среды (plug-ins), а также примеры приложений, тесты JUnit. Если
задачи, для которых планируется использовать Eclipse не столь обширны, то возможно
закачать и установить базовую бинарную платформу среды и добавить к ней только те
составляющие, в которых действительно есть потребность. Процесс установки Eclipse
предельно прост — распаковка архива в формате ZIP в отдельный каталог. После первого
запуска исполняемого файла, Eclipse прописывает все необходимые настройки и готов к
использованию. Деинсталляция среды заключается в простом стирании его каталога с
жесткого диска.
NetBeans
Дистрибутив NetBeans доступен для скачивания с сайта http://www.netbeans.org. На выбор
предлагаются бинарный вариант и исходные тексты. Установка производится либо через
запускаемый инсталлятор, либо распаковкой ZIP-архива в выбранный каталог. Следует
отметить, что NetBeans как и Eclipse можно установить либо как платформу с базовым
функционалом, либо как полноценную среду разработки с расширенными возможностями.
Деинсталляция NetBeans заключается в удалении установочного каталога среды.
Как видно, по управлению возможностями инсталляции Eclipse несколько опережает
NetBeans.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.2 Соответствие платформам Java 2 и Java 5
Последние несколько лет в качестве базовой платформы подавляющего большинства
Java-приложений применялась Java 2, к которой относились JDK14 и JRE15 версий 1.2.x. 1.3.x и
1.4.x. До последнего времени Java 2 считалась наиболее развитой и надежной платформой
для разработки и запуска Java-кода. Мы опускаем тестирование на совместимость с Java 2
поскольку длительная эксплуатация Eclipse и NetBeans на различных ОС и версиях JDK не
показала сколько-нибудь серьезных проблем с соблюдением базовых спецификаций Java 2.
14
JDK — Java Develpment Kit. Изначально созданный компанией Sun Microsytems упрощенных набор
инструментов для разработчиков. Включает в себя виртуальную машину (Java Virtual Machine или JVM) — среду
выполнения Java-приложений, стандартный набор различных библиотек и компонентов, их исходные тексты,
примеры программ, а также компилятор с языка Java в байт-код, простейший отладчик, профилировщик и другие
необходимые утилиты. В простейшем случае позволяет обойтись в вообще без среды разработки, используя
лишь командную строку ОС. С недавнего времени Sun опционально поставляет вместе с JDK и среду NetBeans.
JDK поставляются не только Sun Microsytems, но и корпорацией IBM, равно как и другими компаниями.
15
JRE — Java Runtime Environment. Представляет собой упрощенную версию JDK, из которой удалены средства
разработки и исходные тексты, и которая предназначена только для выполнения готовых приложений. Часто JRE
встраивается в браузеры Internet.
Ограниченная лицензия
10
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Осенью 2004 Sun Microsystems выпустила новую версию платформы, которая была
представлена индустрии IT как Java 516. Она содержит радикальные изменения и расширения,
среди которых: введение новых конструкций языка Java, улучшения виртуальной машины Java
и базовой библиотеки классов, увеличение плотности сжатия архивов классов формата JAR,
добавление нового интерфейса управления виртуальной машиной и улучшение уже
имеющихся, а также поддержка 64-битного процессора AMD Opteron.
Естественно, поддержка платформы Java 5 является очень важным при выборе
современной среды разработки, позволяющей максимально эффективно использовать
наиболее продвинутые возможности платформы Java.
6.2.1 Поддержка новых ключевых возможностей языка
В приложение Б мы поместили тестовые фрагменты кода, которые позволяют произвести
проверку полноты поддержки новых возможностей Java: Исходные тексты были взяты из книги
«Java 1.5 Tiger: A Developer's Notebook17», документации JDK18, и в отдельных случаях были
немного изменены.
Тест #17 NetBeans обрабатывала с периодическими сбоями, в результате которых
компилятор не понимал, к кому именно методу привязаны аннотации. А иногда возникали сбои
и самой среды, выражавшиеся в непрерывном появлении диалогов с сообщениями об
ошибках.
На тесте #18 NetBeans распознали аннотацию @Retention и @Target только когда вручную
была добавлена директива
import java.lang.annotation.*;
Автоматизированный импорт классов сработал только у Eclipse, но не в NetBeans.
При прохождении теста #27 в обеих средах не сработали системы автоматического
добавления импорта для ключевого слова SECONDS, вследствие чего пришлось выполнить
эту работу вручную.
Мы не стали снижать общие оценки для прохождения тестов, потому что в данном случае
проблемы возникали не с синтаксическим аппаратом компиляторов, а со вспомогательными
инструментами среды.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.2.2 Настройки параметров поддержки Java 5 в среде
Поскольку между Java 5 и Java 2 существуют радикальные отличия, не позволяющие
переносить код для более новой платформы на более старую без переделок, в среде
разработки желательно иметь возможность более тонкого контроля за целевой платформой
разрабатываемых приложений. Здесь исследуемые продукты явно находятся в совершенно
разных весовых категориях. NetBeans лишь пассивно опирается на возможности
подключаемого к ней Java Development Kit, не проводя никакого дополнительного контроля со
своей стороны. Все, что может сделать разработчик, это установить новый JDK 5 в качестве
еще одной поддерживаемой платформы
16
Первоначально для JDK планировалось версия 1.5, но перед самым выпуском Sun сменила название на JDK
5.0 по версии самой платформы.
17
«Java 1.5 Tiger: A Developer's Notebook». David Flanagan, Brett McLaughlin. Издательство «O'Reilly»,
ISBN 0-596-00738-8
18 http://java.sun.com/j2se/1.5.0/docs/guide/language/
Ограниченная лицензия
11
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
и при создании нового проекта указать добавленную версию платформы в качестве целевой
Eclipse умеет выполнять оба этих действия, но, помимо всего, добавляет новый уровень
помощи пользователю, не только позволяя задавать вручную версию целевой платформы, но
и включать контроль исходных текстов на предмет совместимости с выбранной версией Java.
Ограниченная лицензия
12
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
В Eclipse даже добавлена специальная вкладка для верификации кода на предмет
возможных проблем совместимости с JDK 5.0
Оценка:
Eclipse — «хорошо»
NetBeans — «плохо»
6.3 Наличие версий для разных операционных систем
Среда Eclipse поставляется для следующих ОС:
•
Windows
•
Linux x86
•
Linux AMD 64/GTK 2
•
Solaris 8 SPARC/Motif
•
AIX PPC/Motif
•
HP-UX HP9000/Motif
•
Mac OS X Mac/Carbon
Дистибутив NetBeans представлены для следующих ОС:
•
Solaris SPARC Platform Edition v.8 и выше
•
Red Hat Linux 9.0
•
Windows Windows XP Professional SP1
Различие в подходах при составлению обоих списков поддерживаемых ОС связаны с тем,
что данные были взяты с официальных страниц разработчиков обоих продуктов без всяких
изменений. Возможность запускать обе IDE на других ОС не учитывалась, поскольку в счет
принимались только официально заявленные платформы. В итоге широта распространения
Eclipse явно выше.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.4 Разработка ПО для мобильных устройств
Рынок мобильных устройств велик и рост его заставляет компании, специализирующиеся
на разработке ПО, запускать масштабные проекты по выпуску продуктов для миниатюрной
техники. Большинство компаний-производителей сотовых телефонов и карманных
компьютеров сегодня имеют модели телефонов, поддерживающие мобильную платформу Java
(J2ME). И Eclipse и NetBeans в достаточной степени способны создавать код для этой
технологии. К сожалению, J2ME инструментарий NetBeans Mobility Pack для NetBeans 4.1 EA1
Ограниченная лицензия
13
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
не был еще готов на момент написания данного документа. А его предыдущая версия
устанавливается на исследуемую версию NetBeans некорректно. Официально разработка
новой версии данного расширения среды ведется и впоследствии будет доступна.
При создании приложений J2ME среда Eclipse опирается на помощь модуля расширения
EclipseME19, который, в свою очередь, является надстройкой над стандартным бесплатным
продуктом Sun Java 2 Wireless Toolkit или аналогичными инструментами, поставляемыми
ведущими производителями мобильных телефонов, как, например, Nokia.
После установки EclipseME становится возможным создавать как новые проекты наборов
мидлетов (J2ME Midlet Suite) так и отдельные мидлеты. Данный модуль расширения не только
управляет проектами, их цепочкой библиотек, но и встраивает в контекстное меню
собственные пункты, позволяющие создавать новые обычные или шифрованные пакеты
(obfuscated packages), генерировать файлы управления сборкой в формате Antenna20,
подписывать приложения, а также преобразовывать обычные Java-проекты в проекты наборов
мидлетов. Тонкие настройки задаются через специальный редактор дескриптора приложений.
19
20
http://eclipseme.sourceforge.net
http://antenna.sourceforge.net
Ограниченная лицензия
14
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Оценка:
Eclipse — «хорошо»
NetBeans — не оценивалось
6.5 Использование открытых стандартов
В настоящий момент тенденция всей индустрии IT такова, что большинство ее участников
плавно переходят к внедрению открытых стандартов, потенциально обеспечивающих лучшую
совместимость между конкурирующими продуктами и свободный доступ к спецификациям.
Плюс открытых стандартов еще и в том, что они не могут быть изменены отдельными
компаниями без утверждения другими участниками рынка.
В силу вышесказанного при выборе среды разработки на языке Java следует особо
акцентировать внимание на возможность создавать приложения на базе открытых стандартов.
Применительно к Java выделим четыре ключевых момента:
•
поддержка разработки Web-служб
•
соответствие платформе Java 2 Enterprise Edition (J2EE)
•
работа с XML
•
сборка проектов по файлам сценариев Ant
6.5.1 Поддержка разработки Web-служб21
Web-службы cтали интересными для разработчиков ПО всвязи с необходимостью
реализации интеграционных проектов, в которых задействованы разные операционные
системы и отсутствуют общие интерфейсы, пригодные для связывания разнородных
приложений в гетерогенных средах. Изначально данная технология была представлена на
платформе Windows в виде платформы .NET, однако растущая популярность и схожие
технологические задачи вынудили основного поставщика платформы Java, корпорацию Sun
Microsystems включить поддержку Web-служб в последние стандарты Java 2 Enterprise Edition
как одну из парадигм интеграции. С того момента компании, предлагающие средства
21
Суть сервис-ориентированной архитектуры (SOA) заключается в сборке приложений из уже готовых локальных
и удаленных сервисов (или служб). Каждая служба умеет выполнять определенный набор функций. Например,
сервис поиска умеет делать выборки ссылок по текстовому шаблону. SOA-приложение не содержит собственного
поискового механизма, но оно умеет обращаться к имеющейся поисковой службе и обрабатывать получаемый от
нее результат.
Web-службы были разработаны совместно корпорациями Microsoft и IBM. Web-службы являются частным
случаем SOA, в которых метамодель самой службы описывается на языке WSDL, а передача данных происходит
по протоколу SOAP. Оба эти языка строятся на базе XML.
Ограниченная лицензия
15
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
разработки для Java, ведут работы по встраиванию соответствующего инструментария в свои
среды.
Изучив встроенные в NetBeans возможности по созданию Web-служб, мы пришли к выводу,
что они реализованы довольно удачно. Пользователь имеет возможность создать Web-службу
из любого проекта enterprise-уровня, например, из Web-приложения.
Изначально новая служба не содержит никакого бизнес-интерфейса, поэтому создавать его
нужно добавляя одну за одной операции, которые данная Web-служба должна экспортировать.
Несложное действие заключается в вызове команды Add operation контекстного меню и
заполнении полей, включающих имя создаваемой операции, аргументы, возвращаемый тип
данных, и возможные исключительные ситуации.
В результате, внутри заготовки класса, реализующего Web-службу, будет создана пустая
сигнатура метода, дескриптор Web-службы, отражающий интерфейс и некоторые другие
файлы. Судя по всему, в рассматриваемой версии NetBeans мастеры реализации Web-служб
не завершены и будут дорабатываться до момента выпуска среды. Однако, уже сейчас мы
готовы поставить этой среде высшую оценку за простоту использования и удобство.
Eclipse сам по себе не обладает встроенными возможностями реализации Web-служб. Два
новых подпроекта Eclipse.org под названиями WebTools22 и Web Services Validation Tools23
22
23
http://www.eclipse.org/webtools/
http://www.eclipse.org/wsvt/
Ограниченная лицензия
16
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
(WSVT) призваны закрыть этот сектор. Так, WSVT должен производить проверку и анализ Webслужб на предмет их соответствия основным спецификациям по этой технологии, и в
настоящий момент выполняет валидацию файлов WSDL версии 1.1 (ведется разработка для
версии 2.0) и SOAP сообщений, которые курсируют между Web-службами и их клиентами.
Поддерживаются SOAP 1.1, inline-схемы и множественные импорты/включения.
Подробные результаты проверки попадают в окно ошибок среды, а ошибочные строки
отмечаются маркерами на полях редактора.
Другой подпроект, Webtools, в текущем своем варианте поддерживает только создание
пробного клиента на языке Java по WSDL-файлу, описывающему Web-службу. Этого явно
недостаточно для серьезной конкуренции. К следующему релизу Webtools M3 ожидается
значительное расширение функционала, а именно:
•
адаптер к популярному проекту Apache Axis;
•
разработка Web-служб на базе компонентов Session EJB и JavaBeans;
•
генерация полнофункционального клиента к Web-службам;
•
графический редактор WSDL;
•
разработка и валидация WSDL-схем и их публикация в реестрах UDDI.
Пока же, нам удалось найти два модуля расширения среды Web Service Console Eclipse
Plugin24 и Lavadora25. Первый из них анализирует WSDL-файлы и строит по ним запросы в
формате SOAP, которые могут быть отправлены к описанной в WSDL Web-службе. В окнах
модуля можно наблюдать полный текст как отправленного запроса, так и полученного ответа.
24
25
http://wscep.sourceforge.net/
http://lavadora.sourceforge.net/
Ограниченная лицензия
17
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Модуль расширения Lavadora предлагает функциональные возможности, практически
такие же мощные, как у коммерческого продукта Borland JBuilder X Enterprise. В качестве
базового сервера автором используется проект Apache Axis 1.2.
Данынй модуль легко создает клиентские программы по WSDL-описаниям служб. Lavadora
также включает в себя браузер UDDI, прямо из которого можно сгенерировать приложениеклиент к выбранной Web-службе.
Но наиболее востребованной наверняка окажется возможность генерации Web-служб
непосредственно из выбранного класса Java.
Ограниченная лицензия
18
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Технология довольно проста и включает в себя вызов команды из контекстного меню,
выбор методов, которые должны быть доступны клиентам создаваемой службы, указание
требуемых библиотек и предоставление информации для развертывания готовой Web-службы
на сервере. При этом, правда, действуют определенные ограничения на тип параметров
операций, тип возвращаемого значения и возможные исключительные ситуации. Такие рамки
обусловлены спецификой платформы Apache Axis.
В результате мы поставили NetBeans и Eclipse одинаково хорошие оценки, хотя существует
вероятность, что после выхода в свет полноценной версии Webtools баланс сил изменится в
пользу Eclipse.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.5.2 Соответствие платформе Java 2 Enterprise Edition
Для создания полноценного приложения по технологии Java 2 Enterprise Edition (далее
J2EE) среда должна уметь создавать компоненты EJB, страницы JSP и HTML, сервлеты, иметь
возможность управлять конфигурационными файлами этих компонентов, и уметь упаковывать
готовые компоненты в архивы форматов, пригодных для развертывания на серверах
приложений (обычно это .EAR). С этой точки зрения обе среды предоставляют прекрасные
возможности.
Пользователи Eclipse как правило применяют 2 давно выпускающихся модуля расширения:
Lomboz26 и JBoss IDE27. Последний обладает чрезвычайно развитым интерфейсом и целым
арсеналом мастеров, упрощающими создание как базовых, так и расширенных компонентов
J2EE версий 1.3 и 1.4.
26
27
http://www.objectlearn.com/projects/lomboz.jsp
http://www.jboss.org/products/overview/jbosside
Ограниченная лицензия
19
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Единственное существенное ограничение заключается в возможности запуска
завершенных компонентов только под Open Source сервером приложений JBoss.
Модуль Lomboz изначально создавался для тех, кому необходим широкий спектр целевых
серверов для развертывания. Он как и JBoss IDE предлагает мастера для первоначальной
генерации кода компонентов J2EE.
Ограниченная лицензия
20
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Различные Код модуля расширения Lomboz в ближайшем будущем станет составной
частью одного из подпроектов Eclipse.org, а именно J2EE Standard Tools Project28
Следует отметить, что оба вышеописанных модуля применяют открытый продукт для
генерации кода XDoclet29. Что касается качества и удобства, то оба продукта, несмотря на свою
бесплатность, выполнены на уровне коммерческого ПО.
NetBeans имеет уже встроенную поддержку создания и развертывания приложений J2EE
на контейнере Tomcat и Sun ONE Application Server.
В ходе проверки среда показала себя с хорошей стороны и достаточно эргономичной с
точки зрения доступа к инструментальному оснащению и конфигурации среды развертывания
J2EE.
28
29
http://www.eclipse.org/webtools/index.html
http://xdoclet.sourceforge.net/xdoclet/index.html
Ограниченная лицензия
21
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
В рассматриваемой версии NetBeans отсутствует генератор Entity EJB, но он уже имеется в
закрытых development-версиях. Аналогично, примерно в это же время пользователям Eclipse
будет доступен инструментарий для разработки J2EE собственного производства Eclipse.org.
На момент написания данного исследования, с сервера Eclipse.org можно было загрузить его
часть Eclipse WTP 1.0M2. Судя по тому, что в нем используется переданный IBM коммерческий
код, в настоящий момент встроенный в аналогичную Eclipse платную среду IBM WebSphere
Studio, пользователи окончательной версии Eclipse 3.1 получат первоклассный набор
инструментов. Уже в этой промежуточной версии доступны мастера создания J2EE
приложений и составляющих их проектов, редактирование страниц HTML и JSP с
автозавершением кода и подстановкой парных закрывающих тегов. Очень удобно, на уровне с
NetBeans, реализовано управлением дескрипторами развертывания модулей. Развертывание
готового приложения можно произвести всего одним щелчком мыши в контекстном меню
проекта.
Ограниченная лицензия
22
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.5.3 Работа с XML
Для полноценной поддержки XML как правило необходимо:
•
создавать документы XML, XML-схемы и DTD
•
проверять XML на предмет валидности
•
выделять отдельные элементы языка выбранным цветом
Данные критерии соблюдаются и Eclipse и NetBeans. Последняя обладает изначально
встроенной поддержкой XML и хорошим цветовым выделением тэгов и атрибутов. Мастерами
NetBeans можно создавать документы XML, схемы, таблицы XSL, а также производить
трансформацию документов, используя последние, как правила преобразования.
Для реализации функциональности работы с XML в Eclipse нужно доинсталлировать
eпомянутый ранее запущенный Eclipse.org собственный подпроект Eclipse WTP 1.0M2. В
области работы с XML его мощности сильно перекрывает возможности NetBeans. Даже
обычный документ XML возможно редактировать в двух режимах: исходного текста с
автоматическими подсказками и проверкой парности тегов, и в режиме «дерева», когда каждый
вложенный тег отображается как ветвь включающего его родительского тега. По щелчку
правой кнопки мыши добавляются новые вложенные элементы.
Ограниченная лицензия
23
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Редактирование схем XML в Eclipse с применением WTP значительно проще, чем в
NetBeans по той причине, что рабочая среда предлагает просмотр и изменение схем в
графическом виде, аналогичном тому, который принят в известном средстве разработки
XMLSpy30 компании Altova. Благодаря такой инновационной технологии, самая сложная схема
XML создается быстро и с минимальными усилиями. Удобная метафора дерева и сокрытие
элементов более низкого уровня снижают риск внесения ошибок.
Другой вариант редактирования схем через WTP предлагает более простой подход с
разделением по семантике тегов и их синтаксису.
30
http://www.altova.com/products_ide.html
Ограниченная лицензия
24
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Удивительным выглядит то, что и в Eclipse и в NetBeans при редактировании документов
XML нельзя производить свертывания (folding) элементов XML как, например, это можно
сделать в браузере Internet Explorer корпорации Microsoft. И это несмотря на то, что все
необходимые механизмы для реализации подобного удобства в обеих средах имеются. Зато
оба продукта умеют проверять документы XML и схемы на валидность, без чего успешная
работа с XML невозможна.
Заметим, что и NetBeans и Eclipse сами пользуются XML как инструментом для удобного
хранения собственных настроек и параметров подключаемых модулей.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.5.4 Сборка проектов по файлам сценариев Ant
Подавляющая часть современных проектов, выполняемых на платформе Java, собираются
с применением бесплатной утилиты Ant31, заменившей более неудобную для сборки программ
на Java систему make.
Изучив, как поддерживается запуск Ant и редактирование сценариев построения проектов в
среде NetBeans мы поставили оценку «нормально» несмотря на то, что все проекты NetBeans
31
http://ant.apache.org
Ограниченная лицензия
25
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
собираются с применением Ant, команды среды могут быть привязаны к целям (targets)
сценариев и в целом, производит хорошее впечатление.
Тем не менее, Eclipse предоставляет гораздо более широкие возможности. Во-первых, это
удобное окно, позволяющее просматривать иерархическую структуру и цели сразу нескольких
сценариев Ant из разных проектов, скрывать ненужные цели и запускать сборку двойным
щелчком мыши.
Ограниченная лицензия
26
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Во-вторых, редактор Ant Editor помимо собственно редактирования и автоматического
дополнения кода по начальным введенным буквам, умеет «схлопывать» отдельные элементы
файлов сценариев.
Ограниченная лицензия
27
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
В противовес скрытному выполнению сценариев Ant при сборке проекта NetBeans, среда
Eclipse позволяет настроить запуск разрабатываемых приложений через Ant, и даже помогает
выставить значение свойств, определенных в файлах сборки.
Ограниченная лицензия
28
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Однако. основная причина, почему по данному пункту мы отдали предпочтение Eclipse, —
наличие отладчика для сценариев сборки, поскольку такая технология уже давно требовалась,
так как начальная отладка файлов для Ant очень трудна и отнимает много времени. Поэтому
весьма востребованными окажутся контрольные точки останова и пошаговое выполнение
скриптов построения.
Нам также удалось обнаружить в Internet модуль расширения eclipse2ant32 для Eclipse,
который после установки помогает сгенерировать скрипт сборки проекта для Ant из имеющихся
настроек проекта. Создаваемый им код довольно примитивен, но полностью работоспособен.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.6 Уровень «сквозной» интеграции в рамках среды
Поскольку многие современные среды разработки (и NetBeans c Eclipse не исключение)
представляют собой сложную подборку компонентов, взаимодействующих между собой через
некую инфраструктуру передачи данных, то на их качество работы уровень интеграции и
развитость интерфейсов влияют самым непосредственным образом. Помимо этого, перед
пользователями всегда встает проблема использования внешних по отношению к среде
инструментов. Зачастую необходимо вызывать во время сборки проекта специфические
утилиты для выполнения важных процедур.
При программировании на языке Java очень полезным придется интегрированный доступ к
справке об используемых внешних классах и, по возможности, к исходным текстам.
6.6.1 Интеграция в рамках среды
Компоненты расширения и базовые составляющие NetBeans и Eclipse обращаются в своей
работе к низкоуровневому интрефейсу вызовов платформ, на которых они базируются. Все
вызовы хорошо описаны, поэтому нет никаких проблем при интеграции новых составляющих и
использовании ими внутренних особенностей каждой из сред.
NetBeans интегрирует в единый комплекс редакторы, отладчик, менеджер проектов и даже
управление СУБД и сервером приложений.
32
http://www.geocities.com/richard_hoefter/eclipse2ant
Ограниченная лицензия
29
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Развертывание готовых приложений также прозрачно для пользователя и сводится к
нескольким щелчкам мыши.
У Eclipse аналогичные возможности в плане управления меню и линейками инструментов.
Ограниченная лицензия
30
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Возможности развертывания проектов на серверах отличаются от NetBeans тем, что в их
настроках можно заранее задавать целевой сервер. При этом среда добавит к проекту
необходимые библиотеки времени исполнения и произведет дополнительные настройки. В
случае изменения целевого сервера, параметры проекта и набор библиотек будут
автоматически скорректированы.
Следует также поставить акцент на такой момент, как производимые без участия
пользователя настройки серверов с которыми Eclipse интегрируется для запуска готовых
приложений. Все необходимые параметры берутся из собственных настроек модулей
расширения, ответственных за интеграцию и подставляются в нужные места самой средой.
Очевидно, что подобные мелочи призваны снизить риск ошибочных настроек и потерю
времени.
Ограниченная лицензия
31
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Подтвердились наши ожидания и о качественной интеграции средств управления
версиями. Обе среды допускают добавление и обновление файлов проектов через контекстное
меню, сохранение изменений, сравнение версий и т.п.
Мы поставили высшую оценку обоим тестируемым продуктам, поскольку в рамках среды
интеграция базовых компонентов разработки проведена без изъянов и эргономических
нарушений. Важно, что в рамках единого рабочего пространства не наблюдается
разрозненного и разнотипного управления, характерного для предыдущих поколений сред
разработки.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.6.2 Интеграция внешних инструментов
Возможности запуска сторонних приложений из среды NetBeans ограничиваются
встраиванием вызовов последних из сценариев сборки. Вряд ли подобный минимализм удобен
для потребителя, особенно если учесть тот факт, что синтаксис скриптов Ant весьма сложен
для ручного написания. Это отразилось на выставлении оценки.
В противоположность аскетичности NetBeans, среда Eclipse обладает впечатляющими и
интуитивно понятными средствами запуска сторонних программ, а также перехвата и
сохранения в файл текста вывода, если запускаемые утилиты — консольные. Для экземпляра
запускаемой программы можно задавать рабочий каталог, параметры командной строки
(возможно применение макро-переменных самой среды для подстановки), отдельные
переменные среды. На рисунке показан пример настройки для запуска почтового клиента The
Bat!, который должен отослать по определенному адресу файл с результатами сборки проекта.
Ограниченная лицензия
32
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Оценка:
Eclipse — «хорошо»
NetBeans — «плохо»
6.6.3 Подключение исходных текстов и справочной информации
Поскольку Java является полностью открытой платформой, то у программистов возникает
уникальная возможность исследовать исходные тексты практически всех классов стандартной
библиотеки. Это часто бывает необходимо для понимание процессов, происходящих на более
низком уровне и оптимизации создаваемого кода. Аналогично, программисту всегда важно
оперативно получать подсказку по используемым классам непосредственно из создаваемого
кода.
Интеграция данных возможностей качественно проведена и в NetBeans и в Eclipse.
Технология связывания между собой бинарных библиотечных архивов, файлов подсказки и
исходных текстов примерно одинакова: создается описание библиотеки с уникальным именем,
и для нее указываются архивы собственно библиотеки, местоположение исходников и
информационных файлов в формате JavaHelp.
Ограниченная лицензия
33
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
NetBeans:
Eclipse:
Некоторые различия между подходами заключаются лишь в том, что в NetBeans всегда
требуется вызвать определенную команду меню, по которой можно открыть исходный текст
какого-либо класса. Eclipse реализует это более элегантно: все библиотеки, подключенные к
проекту, видны в окне дерева проектов, и если раскрыть архивный файл, то становятся видны
все содержащиеся в нем классы и файлы.
Ограниченная лицензия
34
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Двойной щелчок мыши откроет файл в редакторе по умолчанию для выбранного типа
файла. Если открываемый файл является скомпилированным классом Java, то, при наличии,
будет показан его исходный текст.
Именно за такие расширенные возможности мы поставили Eclipse оценку на балл выше,
чем NetBeans.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7 Удобство использования
В этом разделе мы проведем сравнительное тестирование тех возможностей, которые
направлены на повышение комфортабельности работы со средой.
6.7.1 Настройка среды под конкретные задачи
NetBeans имеет множество настроек и набор инструментальных окон, которые могут быть
открыты, перемещены, временно убраны на поля и показаны как иконки, щелчок мышью на
которых вновь возвращает окно на экран. При переключении режимов функционирования
среды (например, из редактирования в режим работы с репозитарием версий), она немного
трансформируется за счет открытия отдельных окон и закрытия других. Также, пользователь
может выбирать, в каком виде он хоте получить главное окно NetBeans, как единое
пространство, или как набор независимых окон. Есть опции настройки, направленные на
изменение линеек инструментов и пунктов меню. Но при несомненной добротности
интерфейса и его удобстве, NetBeans все равно проигрывает Eclipse в гибкости при настройке
под конкретные задачи.
Eclipse решает эту проблему на уровне парадигмы. Подобно NetBeans IDE, каждый
инструмент в этой среде имеет возможность отображать информацию в отдельное окно или
несколько окон, называемых видами (Views). Пользователь может группировать виды в
перспективы (Perspectives). Перспектива — это именованный внешний вид интерфейса Eclipse
в определенный момент времени. Скажем, когда разработчик пишет Java-код, то он использует
перспективу Java, включающую в себя вид браузера проектов, вид структуры класса,
многооконный редактор, вид консоли для вывода информации, вид отображения ошибок и
предупреждений и т.п. Если пользователь собирается извлечь проект из репозитария системы
контроля версий, то он может переключиться вручную, или настроить Eclipse на
автоматическое переключение в перспективу CVS Repository Exploring, в которой вместо окон
видов, полезных при разработке, будут отображены другие виды, CVS Repositories (показ
удаленных репозитариев CVS) и CVS Resource History (просмотр истории версий каждого из
элементов проекта). Аналогично существуют перспективы для отладки, где собраны виды,
отображающие информацию, полезную при поиске ошибок, и т.д. Разработчик может
самостоятельно задавать, какие виды должны отображаться в какой перспективе, а какие
должны быть скрыты. Таким образом, одним щелчком мыши происходит полная перенастройка
Ограниченная лицензия
35
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
визуального интрерфеса. Поставка Eclipse уже включает несколько готовых перспектив, а при
установке модулей и подпроектов расширений могут быть добавлены и другие перспективы и
виды.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7.2 Подключение проектов и файлов
Под подключением здесь мы подразумеваем использование уже имеющихся проектов и
файлов, внешних по отношению к среде разработки.
6.7.2.1Монтирование каталогов проектов и файлов
Процесс монтирования заключается в присоединении к создаваемым внутри среды
проектам уже имеющихся объектов файловой системы. Такого рода задачи возникают в
случаях, когда пользователям требуется обращаться из создаваемых проектов к единым
ресурсам или производить подключение объектов, перемещение которых по тем или иным
причинам нежелательно.
Как ни странно, но разработчики NetBeans отказались от концепции монтирования, хотя до
версии их среды 3.6 включительно, каталоги можно было подключать абсолютно прозрачно
для пользователя, что давало мощный инструмент практически мгновенного переключения
между разрозненными проектами. В версии 4.0 NetBeans имеется возможность добавлять к
проекту внешние каталоги, но команда 4.1 EA1, по всей видимости, просто не успела
завершить свою работу, поэтому временно такой инструмент недоступен. В среду добавлена
полезная мелочь — окно Favorites, куда пользователь может заносить произвольные файлы
или каталоги для быстрого к ним доступа.
Eclipse предлагает два уровня монтирования. На верхнем уровне программист может
обратиться к концепции так называемых «рабочих пространств» (workspaces). При запуске
среда запрашивает пользователя о том, с каким рабочим пространством он желает работать.
Таких пространств может быть много и каждое может содержать множество проектов.
Нижний уровень включает в себя монтирование каталогов и файлов. Техника этого
процесса такова, что создается новый каталог или файл, а в опциях указывается
местоположение монтируемого объекта.
Ограниченная лицензия
36
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7.2.2 Импортирование и перенос проектов
Сразу оговоримся, что ни одна из сред не снабжена какими-либо инструментами или
мастерами по импортированию проектов, созданных в «чужих» продуктах. Зато у них имеется
достаточно различных возможностей по использованию как отдельных файлов с исходными
текстами, так и собственных ранее экспортированных проектов.
Для импортирования проектов средствами NetBeans, нужно создать новый проект и
выбрать из предлагаемого списка создание нового проекта по уже имеющимся исходным
текстам, либо по имеющемуся сценарию сборки для Ant.
Ограниченная лицензия
37
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Если требуется перенести проект, то согласно идеологии NetBeans, это проект должен
быть либо сохранен в системе контроля версий чтобы потом он мог быть извлечен из нее
пользователем, либо просто перенесен в виде каталога, в котором сохранен экспортируемый
проект.
У Eclipse вариантов переноса и импортирования проектов несколько больше, хотя есть и
схожая с NetBeans возможность сохранения проекта как каталога, и последующего импорта
этого каталога в полноценный проект. Стоит заметить, что вопросу переноса разработчики
Eclipse придали особое значение, поэтому в любом контекстном меню среды можно найти
пункты Export и Import. Помимо сохранения проектов в системе контроля версий, допускается
разделение их с другими разработчиками чрез FTP-сервера и по технологии WebDAV. Еще
один из удобных вариантов переноса заключается в упаковке проекта целиком в архив
форматов ZIP, TAR, JAR.
Ограниченная лицензия
38
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7.3 Разработка визуального интерфейса
Разработка визуального интерфейса в Java — всегда довольно сложная задача по причине
ориентированности технологии Java на различные платформы и независимость от дисплея.
Поэтому модель распределения визуальных компонентов в окнах графических оболочек
такова, что ручное кодирование окон и диалоговых панелей затруднительно и, как правило,
приводит к плохому результату. Следовательно, оптимальным будет, если среда разработчика
будет показывать создаваемый интерфейс в режиме WYSIWYG, но скроет детали кодирования
и сложности.
С этой точки зрения, обе среды, и NetBeans и Eclipse полностью соответствуют
вышеописанным требованиям, хотя их парадигмы в вопросе техники создания интерфейсов
сильно отличаются. NetBeans имеет встроенный классический визуальный конструктор со
стандартной палитрой компонентов AWT и Swing33. В редакторе можно создать эскиз
интерфейса, настроить свойства компонентов, привязать обработчики событий, и
протестировать, как будет выглядеть созданный интерфейс воочию.
33
AWT и Swing — общепринятые библиотеки компонентов построения визуальных интерфейсов в Java. AWT
опираются на системные визуальные элементы. Swing не обращается к ОС за отрисовкой элементов, а делает
это сам. Соответственно, скорость работы компонентов Swing меньше, чему у AWT.
Ограниченная лицензия
39
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Все действия разработчика отражаются в Java-коде. NetBeans блокирует доступ к тем его
фрагментам, которые отвечают как раз за визуальную часть программы. В редакторе исходных
текстов такие участки показаны голубым цветом.
В Eclipse визуальный редактор выполнен как отдельный подпроект, и является так
называемым инструментов 2-way, то есть при изменении графического интерфейса изменяется
его Java-код, и наоборот, стоит поменять исходный текст, связанный с отображением
визуальных элементов, как это отразиться в графическом дизайнере.
Палитра элементов Eclipse помимо AWT и Swing содержат еще и компоненты библиотеки
SWT34. При этом, в отличие от NetBeans создаваемые визуальные интерфейсы сразу же
отображаются именно так, как они будут выглядеть для пользователя.
34
SWT — библиотека компонентов JavaBeans для разработки визуальных интерфейсов. От AWT она отличается
более широким набором компонентов, а от Swing — более высоким быстродействием за счет использования
возможностей операционной системы. Среда Eclipse сама построена с применением SWT.
Ограниченная лицензия
40
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Правда, это накладывает отпечаток на пул используемых ресурсов — для отображения
создаваемых интерфейсов Eclipse запускает несколько удаленных виртуальных машин Java.
Хотя пользователь этого и не замечает.
В итоге, при выставлении оценки, нам пришлось, взвесив плюсы и минусы, принять
решение о том, что обе среды с точки зрения визуальной разработки достойны высшей оценки.
По началу вызывало неприятие отсутствие системы 2-Way и защита кода интерфейса от
ручных изменений, которая уже стала анахронизмом. Более гибкие инструменты 2-way
снискали положительные отзывы профессионалов, так как позволяют без труда за считанные
секунды вручную исправить исходный текст, тогда как переключение в режим дизайнера и
правка через различные меню отнимет гораздо больше времени и скорее подходит для
программистов-новичков либо дизайнеров интерфейсов. Неудачные же эксперименты с
ручным кодированием уже не так страшны. Нынешнее поколение сред имеет развитую систему
редактирования с откатом. Все современные системы разработки локально хранят «снимки»
проекта, поэтому в случае неудачного эксперимента всегда есть возможность выполнить
возврат к предыдущему состоянию.
С другой стороны, Eclipse заставляет платить за расширенные возможности повышенным
потреблением оперативной памяти и ресурсов процессора, ведущим к замедленной работе
среды. Так что вполне возможно, что в каких-то случаях дизайнер GUI предпочтет Eclipse из-за
его «легкости».
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.7.4 Редактор
Обе среды, и Eclipse и NetBeans включают в себя многооконный текстовый редактор со
всеми необходимыми элементами, как то:
•
поиск и замена фрагментов текста;
•
выделение цветом синтаксических элементов языка Java;
Ограниченная лицензия
41
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
•
форматирование исходных текстов;
•
поиск парных скобок;
•
сокрытие (fold) блоков кода;
•
отображение на полях мест ошибок
В обеих средах редактор напрямую увязан со средствами навигации, позволяющими
быстро перейти из окна структуры классов/интерфейсов Java к месту описания их членов.
Что касается Eclipse, то в этой среде редактор имеет расширенный вспомогательный
функционал, аналогов которому не существует в NetBeans. Например, очень полезной для
любого Java-программиста оказалась бы возможность автоматического исправления
специальных символов в текстовых литералах. Например, фраза
"Цитата, взятая в 'кавычки'"
в коде на языке Java должна быть преобразована в следующий вид:
"\"Цитата, взятая в \'кавычки\'\""
Автоматизация подобного преобразования экономит время и позволяет избежать ошибок
компиляции. Среда NetBeans оказалась не готовой к этому требованию. Eclipse напротив, не
только умеет исправлять специальные символы в строке при ее вставке в код из буфера, но и
дает возможность отключить этот механизм через настройки среды.
Eclipse включает инструмент Mark Occurrences, значительно облегчающий визуальный
поиск схожих названий типов через выделение их ярко желтым цветом. Например, выделив тип
String в исходном тексте, мы увидим подсвеченными все места, где встречается тип String.
Замечательная возможность, которая нужна при разработке в команде, — указание
измененных строк кода. Разработчик, который извлек файл из репозитария системы контроля
версий, может по цветовым маркерам на полях сразу видеть, какие строки были им изменены,
а какие добавлены.
Ограниченная лицензия
42
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
По совокупности возможностей, мы вывели Eclipse в лидеры по удобству редактирования.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7.5 Отладчик
Отладчики обеих сред обладают примерно одинаковыми возможностями:
•
локальная и удаленная отладка;
•
установка простых точек останова и срабатывающих по условию;
•
просмотр значений переменных и объектов в динамике;
•
наблюдение за состоянием потоков выполнения и управление ими;
•
отображение стека вызовов и быстрый переход по нему;
•
исправление кода «на лету».
NetBeans:
Ограниченная лицензия
43
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Eclipse:
Удаленная отладка обеспечивается применением интерфейса JNDI и дает Eclipse и
NetBeans возможность управлять приложениями, запущенными в рамках других виртуальных
машин Java. Это очень ценно, когда необходимо найти ошибки в процессе выполнения
отлаживаемой программы, например, в работающем контейнере Web-приложений типа Tomcat
или Resin.
Единственное замечание адресовано разработчикам Eclipse. Индикатор точки останова
показывается в виде голубой точки на левом поле. Такой цвет непривычен разработчикам.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.7.6 Управление тестированием
Коммерческий цикл разработки ПО всегда включает в себя тестирование с целью
достижения высокого качества создаваемых продуктов. В качестве стандарта de-facto
тестирования продуктов на платформе Java, применяется набор классов JUnit35,
«обертывающий» тестируемые классы Java и управляющий средой и ресурсами,
необходимыми для корректного функционирования тестируемых объектов. Как и в случае с
разработкой визуальных интерфейсов, разработка тестовых наборов вручную —
неэффективна. Кроме того, если на производстве применяется тест-ориентированные
методологии разработки ПО типа XP, то прогоны тестов происходят весьма часто, поэтому
оптимально, если запуск тестов будет происходить непосредственно из самой среды.
В NetBeans тесты создаются одним щелчком мыши и очень удобно.
35
http://www.junit.org/
Ограниченная лицензия
44
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Что касается запуска, то здесь весь вывод от прогона тестов выдается в консольное окно в
текстовом виде, что не слишком удобно, так как не удобно читать результат среди большого
объема постороннего текста.
В Eclipse сделана ставка на графический вывод результатов тестирования. Это делает
вывод данных о прохождении тестов более понятными, к тому же в интегрированном в среду
окне JUnit есть возможность нажатием на кнопку перезапустить тест для повторного прогона.
Ограниченная лицензия
45
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
К тому же в Eclipse интегрированное окно JUnit отображает иерархию тестов и даже
позволяет сравнить ожидаемый вывод строк на экран с реальным, который получился в
результате запуска тестов.
Что касается автоматизированной генерации тестов, то здесь Eclipse практически не
отличается от NetBeans по функциональности, и может создавать как тестовые наборы, так и
отдельные тесты.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7.7 Создание ПО на базе моделей
В секторе моделирования программного обеспечения и создания готовых решений по этим
моделям NetBeans выбыл, поскольку не обладает подобными возможностями. К тому же нам
не удалось обнаружить бесплатных модулей расширения для этой среды, которые бы могли
Ограниченная лицензия
46
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
скомпенсировать этот пробел. По этой причине оценка NetBeans в этом разделе выставлена не
была.
Напротив, Eclipse выступает с тремя отдельными подпроектами, облегчающими
разработку. Для моделирования используется Eclipse Modeling Framework (EMF),
ориентированный на создание предложений по технологии Model-Driven Architecture (MDA)36.
EMF состоит из трех основных частей:
•
собственно EMF, включающий мета-модель Ecore для создания других моделей,
уведомления по их изменению, сохранения моделей в общепринятом формате
XMI37;
•
EMF.Edit — набор повторно используемых классов для построения редакторов к
EMF-моделям, заведующих текстовыми элементами, свойствами и другими
элементами;
•
EMF.Codegen — система генерации готовых редакторов для EMF-моделей,
включающая графический интерфейс определения опций генерации и вызова
генераторов.
В EMF существуют три уровня генерации;
•
модель — создание интерфейсов Java и реализующих эти интерфейсы классов для
всех объектов модели вкупе с классами фабрикам и пэкеджей.
•
адаптеры — генерация классов-реализаций, называемых ItemProviders,
отвечающих за «адаптирование» классов модели для их редактирования и
отображения;
•
редактор — генерация редакторов, через которые можно проводить настройку
моделей.
Используя возможности EMF, разработчик может импортировать модели, выполненные в
виде документов XML, аннотированных исходных текстов на Java, или модели из других
продуктов, например, Rational Rose.
Благодаря существованию EMF, реализовано два других проекта: библиотека XSD,
нацеленную на манипуляцию схемами XML и Hyades — инструмент автоматизации качества
ПО (ASQ), для автоматизации тестирования, мониторинга и тестирования.
Второй подпроект Eclipse.org, ориентированный на моделирование ПО — UML2, тесно
связан с EMF и эксплуатирует функционал последнего. Целью подпроекта UML2 является
реализация метамодели для разработки инструментов построения моделей. Сама подсистема
UML2 не генерирует код, но с ее помощью можно создавать модели формата Ecore для EMF,
который уже обладает всем необходимым для генерации Java-кода.
На рынке модулей расширения уже имеются платные модули рисования UML-диаграмм,
эксплуатирующие возможности UML2, но мы не рассматриваем их по причине платности.
Компания Borland выпустила в виде такого модуля свой известный продукт Together (в том
числе и упрощенный бесплатный вариант), но он еще не перенесен в среду Eclipse M4.
Следует отметить, что при разработке самой среды Eclipse и ее подпроектов (например
Visual Editor) активно используются Ecore-модели EMF.
Оценка:
Eclipse — «хорошо»
NetBeans — не оценивалось
36
OMG MDA — методология разработки программного обеспечения по его модели. MDA отделяет бизнес-логику
от ее реализации. http://www.omg.org/mda/
37
OMG XML Metadata Interchange Format (XMI) задает стандарт открытого обмена информацией,
ориентированную на разработчиков, которым требуется единая схема и формат для удаленного обмена
моделями. http://www.omg.org/technology/documents/formal/xmi.htm
Ограниченная лицензия
47
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
6.7.8 Автоматический рефакторинг
Понятие рефакторинга получило широкое распространение благодаря работам и книгам
Мартина Фаулера (Martin Fowler)38 и означает небольшие изменения кода, при которых
поведение программы не меняется, но сам код реструктурируется. Рефакторинг был и
остается одним из самых востребованных средств оптимизации и повышения надежности39 и
читабельности кода. Поскольку рефаторинг — это профессиональный инструмент, то его
наличие и развитость определяет степень ориентации и потенциальную востребованность
среди разработчиков коммерческого кода.
NetBeans предлагает стандартный набор принятых рефакторинговых функций, а именно:
•
переименование классов40 с автоматическим переименованием содержащих их
файлов;
•
изменение параметров методов;
•
генерация методов доступа к внутренним скрытым полям классов;
•
перемещение классов в другие пэкеджи.
Eclipse обладает гораздо более мощным рефакторингом с поддержкой новых
возможностей Java 5. Вот список доступных функций изменения кода:
•
переименование классов с автоматическим переименованием содержащих их
файлов;
•
перемещение классов в другие пэкеджи;
•
изменение сигнатуры (имени и параметров) методов;
•
преобразование анонимных классов во внутренние;
•
вынесение типов-членов в отдельный файл;
•
перенос элементов классов в родительские и в дочерние классы;
•
извлечение интерфейса из класса;
•
получение Generic-класса из имеющегося;
•
замена ссылок на класс ссылкой на его супер-класс;
•
введение типов для встречающихся в коде generic-классов;
•
подстановка тела метода вместо его вызова;
•
извлечение локальной переменной;
•
извлечение константы;
•
введение параметра;
•
введение фабрики;
•
преобразование локальной переменной в поле класса;
•
генерация методов доступа к внутренним скрытым полям классов;
Даже без детального сравления можно заметить, что NetBeans не дотягивает до уровня
современного рефакторингового инструмента. Единственный сравнимый с Eclipse по
38
http://martinfowler.com/
39
С рефакторингом сталкивается любой программист, когда ему, например, нужно поменять тип у аргумента
вызываемого метода. Прелесть автоматического рефакторинга в том, что он позволяет делать эту работу без
риска упустить чего-либо. Если изменяемый метод вызывается в 30 местах в разных файлах, то легко получить
сложную ситуацию, которую компилятор может пропустить. Помимо этого, при автоматическом рефакторинге
существенно экономится время, так как среда сама находит и редактирует все вызовы в разных файлах. Ручная
работа потребовала бы от программиста значительно отвлечься от основной деятельности для того чтобы
выполнить эту задачу.
40
Здесь и далее мы называем классами не только собственно классы Java, но и интерфейсы и энумераторы.
Данное сокрещение введено для упрощения текста.
Ограниченная лицензия
48
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
возможностями инструмент — модуль расширения Agris Software RefactorIT41, но он, к
сожалению, бывает только платным. Поэтому NetBeans получил более низкую оценку.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.7.9 Автоматизация кодирования
Если помимо рефакторинга требуются и другие инструменты для повышения скорости
разработки ПО, то на первый план выходят различные мастеры и средства автоматизации
кодирования, упрощающие набор повторяющихся элементов языка. Особенно ценно, если
среда снабжена анализатором контекста и предлагает программисту помощь в соответствии со
сложившейся ситуацией, а не простой список возможных улучшений.
Поскольку Java требует явно указывать пэкеджи, из которых импортируются классы и
интерфейсы, через директиву import, то встает задача избавления программиста от ручной
работы по обнаружению классов и интерфейсов, не включенных в список импорта. В NetBeans
такого рода рефакторинг выполняется нажатием <Alt+Shift+F>. после чего возникает окно, в
котором пользователь выбирает импортируемый класс.
Основное неудобство заключается в том, что требуется производить действия мышью.
Подобную работу пользователи Eclipse могут сделать через клавишную комбинацию
<Ctrl+Shift+O> (Organize Import) или <Ctrl+Shift+M> (Add Import) с последующим выбором
импортируемого класса кнопками стрелок на клавиатуре.
41
http://www.refactorit.com/
Ограниченная лицензия
49
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Очевидно, что не отвлекаясь на мышь, программист может значительно экономить время,
поэтому мы сочли Eclipse в этом плане чуть более удобной. Следует отметить, что показанные
окна выбора возникают лишь при коллизии имен в том случае, если возможно импортировать
разные классы с одинаковым именем. При отсутствии коллизии, импортирование происходит
автоматически в обеих средах и одинаково удобно.
Еще две возможности, без которых уже не обходится ни одна коммерческая среда, это
автоматическое завершение и подстановка по ключевому слову. Первая из них завершает ввод
исходных текстов для вызовов методов, их параметров, а также для ключевых слов Java и
типов. Вторая аналогична первой за исключением того, что в ответ на ввод некоей
аббревиатуры среда заменяет последнюю на фрагмент исходного текста. Например,
пользователь вводит ‘serr’ и это ключевое слово превращается во фрагмент кода
‘System.err.println()’. Отрадно заметить, что этими возможностями оснащены и Eclipse и
NetBeans.
Но Eclipse содержит целый набор подобных инструментов, аналогов которых мы не
обнаружили в NetBeans:
•
добавление/удаление символов комментариев для выделенных блоков исходных
текстов;
•
перекрытие унаследованных методов;
•
генерация делегирующих методов;
•
генерация конструкторов на базе имеющихся внутренних полей;
•
добавление конструкторов из суперкласса;
•
обрамление фрагмента кода блоком try-catch.
Еще одно важное достижение Eclipse, так называемый Quick Fix, позволяет одним щелчком
мыши исправить ошибку, на которую указал компилятор. Если щелкнуть на маркере ошибки, то
появляется список возможных решений проблемы. При выборе того или иного варианта, рядом
в окне всплывающей подсказки будет показан результат преобразования кода.
Ограниченная лицензия
50
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Тест, показанный на рисунке, в NetBeans вызывает выдачу ошибки компиляции, но среда
не помогает программисту в ее решении.
Оценка:
Eclipse — «хорошо»
NetBeans — «плохо»
6.7.10
Обновление среды и компонентов
Практически все современное программное обеспечение производится со встроенными
модулями обновления через Интернет и из локальных файлов. Среды NetBeans и Eclipse в
этом плане прекрасно оснащены.
NetBeans проверяет наличие новых модулей .NBM и компонентов среды каждый раз, когда
пользователь стартует ее. В случае, когда требуется ручное обновление, можно соединиться с
удаленным сервером командой Update Center. Если доступны новые компоненты или более
свежие версии уже установленных, то они будут показаны в списке. Через эту же команду
пользователи могут инсталлировать компоненты из файлов, без обращения в Интернет.
В технике обновления Eclipse много схожего. Сначала пользователь выбирает, хочет ли он
найти новые модули расширения, или же только желает обновить уже установленные. После
чего происходит собственно поиск. Из списка доступных для инсталляции модулей выбираются
Ограниченная лицензия
51
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
подходящие, после чего они выкачиваются и инсталлируются. Если обновления доступны в
виде каталогов на диске или архивных файлов, то предусмотрена и их инсталляция.
В качестве бонуса Eclipse предлагает автоматизированное обновление по расписанию.
Многие разработчики модулей расширений для Eclipse уже переводят свои разработки на
сайты с обновлением вместо поставки архивов. Сейчас многие компоненты требуют ручного
раскрытия и копирования заключенных в них их файлов в среду. Скорее всего, от этого
подхода скоро откажутся все, кто поставляет ПО для Eclipse т.к. уже сейчас в среде есть все
необходимое, чтобы избежать ручных действий.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
Ограниченная лицензия
52
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
6.7.11
Управление версиями
Управление версиями ПО непосредственно из среды разработчика позволяет сэкономить
время и минимизировать возможность возникновения серьезных ошибок, часто возникающих
при работе с отдельным инструментарием контроля версий, например, CVS.
NetBeans имеет встроенную поддержку таких популярных систем, как CVS, Visual Source
Safe (VSS) и PVCS. Последняя, правда, в профессиональной разработке применяется все
реже и реже. Eclipse в начальной поставке обладает встроенной поддержкой единственного
инструмента, а именно CVS, однако среда имеет массу полезных настроек, в частности для
управления ключами доступа по протоколу SSH/SSH2. Если требуется другая система
контроля версий, то к Eclipse можно найти бесплатные модули расширения. В частности, нам
удалось обнаружить модули для поддержки VSS и великолепного нового бесплатного продукта
Subversion42. Примечательно. что последний поставляется самой компанией-разработчиком
Subversion, и его визуальный интерфейс выполнен абсолютно схожим с интерфейсом
управления CVS, что весьма удобно.
Управление версиями в средах NetBeans и Eclipse во многом однотипное и удобное.
Различия в них незначительны, и касаются в основном лишь таких тонкостей, как способ
показа изменений между версиями, и аннотаций. По сути, команды меню каждой среды лишь
служат удобной оболочкой над оригинальными системами, поэтому мы поставили обеим
средам одинаковые оценки.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.7.12
Система помощи
NetBeans включает в себя подсказку, выполненную по технологии JavaHelp. Содержание
преимущественно текстовое, что не очень удобно для понимания материала. Имеется
возможность получить справку по стандартным классам «на лету», нажатием клавишной
комбинации <Alt+F1>. по которой открывается окно браузера с соответствующим описанием.
42
http://subversion.tigris.org/
Ограниченная лицензия
53
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
В Eclipse подсказка реализована, по всей видимости, как миниатюрный сервер. Весь
материал насыщен иллюстрациями и содержит, помимо технических руководств, еще и
учебные пособия по освоению среды.
Ограниченная лицензия
54
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Полезное новшество, появившееся в третьей версии Eclipse, так называемые листы
подсказки (Cheat Sheets). Они ориентированы на быструю подсказку по наиболее часто
выполняемым задачам.
Ограниченная лицензия
55
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Минусом системы помощи Eclipse является нестабильность работы. Внешние признаки
указывают на утечки памяти или неверную адресацию. Подобное поведение характерно, если
оставлять окно системы подсказки открытым на длительное время. Если же периодически
закрывать его, то «падений» не возникает.
Оценка:
Eclipse — «удовлетворительно»
NetBeans — «удовлетворительно»
6.7.13
Управление опциями и настройками
В части установок и опций NetBeans выглядит неубедительно. Свое назначение диалоговая
панель настройки, безусловно, выполняет. Однако, бросается в глаза очевидная сумбурность и
слабая структурированность информации. Порой, невозможно определить, в каком разделе и
под каким названием нужно искать требуемую настройку. Сильно упрощенный интерфейс на
основе базовых визуальных компонентов Java не производит впечатление удобного.
Ограниченная лицензия
56
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Аналогичная панель в Eclipse не только четко раскладывает информацию по секторам, но
и:
•
позволяет фильтровать ее по ключевому слову (при этом в панели остаются только
подходящие под фильтр настройки, остальные опции скрываются)
•
по аналогии с браузерами возвращать пользователя к предыдущему месту
редактирования
•
обладает возможностью импортировать и экспортировать настройки в файл в
формате XML.
Ограниченная лицензия
57
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Отдельные мелкие недочеты и нелогичное отнесение некоторых опций в неподходящие
категории нельзя считать серьезными, поскольку все равно в целом среда настраивается
быстро и удобно.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.8 Скорость работы
Произведя замер на простом секундомере, удалось выяснить, что NetBeans запускается в
среднем на 20-25% медленнее, чем Eclipse. Это можно объяснить тем, что часть компонентов
пользовательского интерфейса Eclipse являются классами библиотеки SWT, которая по
определению, оптимизирована по скорости. К тому же, NetBeans, по всей видимости, просто не
оптимизирован по скорости и использованию ресурсов. В результате, мы поставили Eclipse
оценку на один балл выше, чем NetBeans.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.9 Затраты на приобретение
Поскольку NetBeans и Eclipse — бесплатные продукты, то, скорее, имеет смысл посмотреть
на вопрос цены в разрезе затрат на получение полноценной системы разработки Javaприложений.
Очевидно, что Eclipse реализует более широкий спектр функций бесплатно благодаря
доступности большого количества бесплатных модулей расширения, а также множеству
подпроектов консорциума Eclipse.org, которые также предлагают бесплатные расширения для
среды Eclipse. Чтобы сделать доступным все это в NetBeans, потребуется приобрести
определенный набор платных модулей, а это выходит за рамки данного исследования.
Оценка:
Eclipse — «хорошо»
NetBeans — «удовлетворительно»
6.10 Уровень поддержки
Поскольку NetBeans и Eclipse являются свободно распространяемыми и открытыми
средами, то и поддержка для них, скорее, неформальная. Сайты обоих продуктов включают
разделы часто задаваемых вопросов и базу поиска и внесения найденных ошибок.
6.11 Популярность у разработчиков
Анализ отношения сообществ к двум основным интегрированным open source средствам
разработки для Java был произведён по методу Завалишина43. С помощью поисковой системы
«Яндекс» были сделаны запросы, включающие название продукта, уточняющие слова и
определяющее ключевое слово в ряде форумов в российском сегменте интернет44.
43
Метод «Контекстно-поискового анализа» (Метод Завалишина) позволяет быстро оценить
основные направления представленного на сайте или форуме контента и понять какие
технологии и их практическое применение наиболее интересны аудитории.
44
Мы отдаем себе отчет в том, что у этого метода существует определенная погрешность,
связанная с несовершенством лингвистических привязок к статистике, но считаем точность
этого метода достаточно хорошей для проведения качественного анализа.
Ограниченная лицензия
58
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
6.11.1
Характеристики продукта
Следующий набор ключевых слов характеризует поведение продукта в сети.
60,0
50,0
40,0
30,0
20,0
10,0
0,0
тяжёлый
лёгкий
быстрый
медленный
eclipse
удобный
неудобный
профессиональный
netbeans
Очевидно, что Eclipse безусловно выигрывает по паре характеристик «быстрыймедленный». Пара «тяжёлый-лёгкий» связана с легкостью освоения продукта и NetBeans
лидирует в этой области. NetBeans и Eclipse вполне сравнимы по паре «удобный-неудобный»,
а недостаток данных по термину «профессиональный» не позволяет считать разницу
статистически значимой.
6.11.2
Характеризующие словосочетания.
Следующий набор ключевых слов характеризует активное поведение пользователя
продукта в сети.
250,0
200,0
150,0
100,0
50,0
0,0
подскажите
проблема
скачать
eclipse
Ограниченная лицензия
рефакторинг
netbeans
59
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Ключевое слово «скачать» характерно для сценариев поведения, связанных с поиском как
самого продукта, так и дополнительных компонент к нему. Ключевое слово «подскажите»
имеет двойственный смысл. Высокая частота его употребления свидетельствует о том, что
аудитория продукта либо расширяется (высок процент новичков), либо осваивает новые
свойства продукта (старые пользователи узнают о новом). С другой стороны, высокий спрос на
информацию говорит также о недостаточной интуитивности пользовательского интерфейса.
Следующее ключевое слово – «проблема» – призвано впрямую оценить количество
сложностей, возникающее у пользователя с продуктом.
Последнее ключевое слово – «рефакторинг», использовано как точка оценки перцептивной
«прогрессивности» продукта. Рефакторинг был воспринят широкими кругами программистов
относительно недавно и инструментальная поддержка рефакторинга в IDE считается чуть ли
не мерилом его прогрессивности. Логично предположить, что в эту оценку пользователь
вкладывает общее своё ощущение от продукта как от продвинутого, небанального.
Анализ графика показыввает, что Netbeans вызывает существенный практический интерес
– при меньшем числе упоминаний самого продукта, с ним часто встречаются слова,
характеризующие не абстрактное любопытство, а насущную потребность.
6.11.3
Технологии
160,0
140,0
120,0
100,0
80,0
60,0
40,0
20,0
0,0
hibernate
jni
applet
eclipse
servlet
netbeans
Наиболее выразительное расхождение – по словам servlet и hibernate – говорит в пользу
того, что netbeans используется больше для написания серверного ПО. Это подтверждается и
выигрышем eclipse по ключевому слову jni (эта технология чаще применяется в непереносимых
– читай – windows-ориентированных – программах).
Ограниченная лицензия
60
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
6.11.4
Editions
350,0
300,0
250,0
200,0
150,0
100,0
50,0
0,0
J2SE
J2ME
eclipse
J2EE
netbeans
Примерно равное упоминание J2EE и J2ME плюс существенное преимущество у netbeans
по слову J2SE, вероятно, означает, что аудитория этого продукта более продвинута – широкие
слои Java-программистов часто не знают термина J2SE.
Оценка:
Eclipse — «хорошо»
NetBeans — «хорошо»
6.12 Перспективность
Перспективы для обеих сред на ближайшее время вполне прозрачные. Мы можем
говорить, что их развитие будет продолжено по причине востребованности обоих продуктов.
Однако, будущее NetBeans не столь оптимистично. Накопившие проблемы с частотой выхода
новых версий и явное снижение популярности, могут значительно снизить привлекательность
этого продукта даже для преданных пользователей. У группы разработчиков попросту не
хватает темпа, чтобы успевать за другими участниками рынка. Дальнейшие отставания за
конкурентами могут поставить вопрос о существовании среды NetBeans в том виде, как она
сейчас существует.
Напротив, Eclipse сейчас на гребне популярности. Позитивная динамика роста, широкое
одобрение сообществом, грамотная эксплуатация сообществом и внешних ресурсов благодаря
открытой политике и предоставления права быть полноправным партнером. Вот некоторые из
ключевых элементов выигрышной стратегии тандема команд Eclipse.org и IBM Corporation.
Разбивка главного проекта на набор подпроектов и добавляемых инструментво — сильный ход
по диверсификации. Даже если под напором каких-либо факторов Eclipse будет свернут (что
маловероятно), остаются отдельные существующие группы разработчиков составляющих с их
огромными наработками кода и сложившейся инфраструктурой.
Ограниченная лицензия
61
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Стратеги, придумавшие план развития Eclipse поступили профессионально: среда
обладает возможностью не только для разработки ПО, но и разработки расширений для нее
самой, с применением технологий EMF, GEF и PDK.
Определенный плюс Eclipse.org извлекает и от сильного альянса с командой сервера
приложений JBoss и группы разработки методологии Aspect-Oriented-Programming (AOP). В
перспективе, после того, как был официально, объявлен перенос платформы на карманные
устройства (проект eRCP), перед Eclipse открывается еще один важный рынок потребительской
электроники с огромными оборотами.
Косвенно на расширение использования Eclipse может повлиять недавнее присоединение к
консорциуму мощного «кита» IT-рынка — корпорации CA45. Если эта фирма перенесет свои
продукты на платформу Eclipse, то это будет серьезным прорывом из сектора разработки в
смежный сектор инструментов администрирования, где уже плотно обосновались такие
серьезные продукты, как IBM Tivoli и HP OpenView.
Любопытное мнение высказал эксперт и апологет компонентного ПО Дон Бокс (Don Box),
ныне работающий в Microsoft. Он предсказывает46 отход Sun Microsystems от NetBeans и
присоединится к консорциуму Eclipse в 2005. Чисто теоретически, нет никаких серьезных
препятствий к осуществлению этого прогноза, особенно если учесть, что переговоры об этом
уже шли, но окончились безрезультатно по причине несогласия Eclipse.org переименовать
среду Eclipse по просьбе Sun Microsystems. Хотя присоединение Sun к консорциуму может дать
последней немалые выгоды в части экономии средств, которые ныне тратятся на NetBeans и
Sun Studio. А унификация компонентов ПО с интерфейсами Eclipse открыла бы Sun дорогу к
конкуренции на равных с другими участниками консорциума Eclipse.org, и стало бы еще одним
из каналов продвижения своих продуктов на рынок. Причина такого поведения Sun в явном
виде негде официально не называлась, но существует высокая вероятность, что она связана с
коммерческими интересами Sun по продвижению на Sun Studio.
Оценка:
Eclipse — «хорошо»
NetBeans — «плохо»
45
46
http://www.eweek.com/article2/0,1759,1744043,00.asp
http://www.theserverside.com/news/thread.tss?thread_id=30875
Ограниченная лицензия
62
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
7 Итоговая оценка
Критерии
Eclipse
Инсталляция
NetBeans
хорошо
удовлетворительно
Поддержка новых ключевых
возможностей языка
хорошо
хорошо
Настройки параметров
поддержки Java 5 в среде
хорошо
плохо
Наличие версий для разных операционных
систем
хорошо
удовлетворительно
Разработка ПО для мобильных устройств
хорошо
не оценивалось
Поддержка разработки Webслужб
хорошо
хорошо
Соответствие платформе Java 2
Enterprise Edition
хорошо
хорошо
Работа с XML
хорошо
удовлетворительно
Сборка проектов по файлам
сценариев Ant
хорошо
удовлетворительно
Интеграция в рамках среды
хорошо
хорошо
Интеграция внешних
инструментов
хорошо
плохо
Подключение исходных текстов и
справочной информации
хорошо
удовлетворительно
Настройка среды под конкретные
задачи
хорошо
удовлетворительно
Подключение проектов и файлов
- Монтирование каталогов
проектов и файлов
хорошо
удовлетворительно
Подключение проектов и файлов
- Импортирование и перенос
проектов
хорошо
удовлетворительно
Разработка визуального
интерфейса
хорошо
хорошо
Редактор
хорошо
удовлетворительно
Отладчик
хорошо
хорошо
Управление тестированием
хорошо
удовлетворительно
Создание ПО на базе моделей
хорошо
не оценивалось
Автоматический рефакторинг
хорошо
удовлетворительно
Автоматизация кодирования
хорошо
плохо
Обновление среды и
компонентов
хорошо
хорошо
Соответствие платформам Java 2 и Java 5
Использование открытых стандартов
Уровень «сквозной» интеграции в рамках среды
Удобство использования
Ограниченная лицензия
63
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Управление версиями
хорошо
хорошо
удовлетворительно
удовлетворительно
хорошо
удовлетворительно
Скорость работы
хорошо
удовлетворительно
Затраты на приобретение
хорошо
удовлетворительно
не оценивался
не оценивался
Популярность у разработчиков
хорошо
хорошо
Перспективность
хорошо
плохо
Система помощи
Управление опциями и
настройками
Уровень поддержки
Ограниченная лицензия
64
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
8 Заключение
Опираясь на предыдущие пункты, можно сделать вывод, что NetBeans — хорошая среда
для любительского программирования, обучению Java, а также для создающих программное
обеспечение под сервер приложений от Sun Microsystems.
Профессиональным разработчикам стоит все же обратить внимание именно Eclipse,
поскольку широкая функциональность, настраиваемость, обширные возможности
рефакторинга способны дать значительную экономию времени при разработке и помочь
унифицировать работу в группах программистов. Быстрая реакция на вопросы в форумах
порой могут быть критичным пунктом при коммерческой разработке, поэтому здесь Eclipse вне
конкуренции.
Если рассматривать среду разработки как потенциальную возможность для ведения
бизнеса, то и здесь Eclipse оказывается привлекательнее. Этому способствует более активный
выпуск stream-версий, периодическое слияние отдельных мелких модулей расширений в более
крупные коммерческие проекты. Приведенные ранее коэффициенты соотношения платных
модулей расширения к бесплатным, говорят о широте рынка профессиональных компанийразработчиков, готовых приобретать платные дополнения к среде, если они помогают в их
бизнесе.
Если попытаться найти глубинные объяснительные механизмы, расшифровывающие
сложившуюся вокруг двух описанных сред ситуацию, то напрашивается вывод, что Sun
Microsystems не выгодно чрезмерное развитие NetBeans, ибо это может поставить под
сомнение привлекательность покупки платного продукта Sun Studio. И лишь риск потерять
влияние на нишу Open Source толкает Sun на добавление проприетарных возможностей в
NetBeans. В настоящий момент, мы бы рискнули предположить, что Sun с NetBeans играет в
игру, развивающуюся по сценарию «установка NetBeans и знакомство → поиск нужных
модулей расширения → переход на Sun Studio для достижения необходимой
функциональности». Вероятно, это один из факторов, по которым NetBeans постепенно теряет
не только своих приверженцев, но и сторонних поставщиков47.
Объяснения популярности Eclipse кроется, по видимому, в том, что не только среда удобна
сама по себе, но и в том, что вокруг нее возможно создание собственного бизнеса по
производству и поддержки модулей расширения, а также разработке собственного ПО с
использованием платформы Eclipse. Между Eclipse.org и корпорацией IBM сложилось
взаимовыгодное сотрудничество, выражающееся во взаимном обмене кодом. IBM применяет
наработки Eclipse.org в своей среде разработки WebSphere Studio, которая практически ничем
не отличается от Eclipse. Однако рыночным сегментом WebSphere Studio является линейка
продуктов IBM WebSphere, с которой она и поставляется.
Вложение средств в перевод разработчиков на Eclipse сейчас более чем оправдано. С
одной стороны сама среда не требует больших капиталовложений, с другой стороны
программисты не только не теряют в мощности своего рабочего инструмента, но даже
приобретают много новых возможностей. Вдобавок, знание архитектуры и технологии
расширения платформы Eclipse открывают перед коллективами создателей ПО новый,
довольно свободный сегмент рынка, куда они могут направить свои усилия и инвестиции.
С точки зрения конкуренции, данное исследование позволяет сделать вывод, что Eclipse и
NetBeans вряд ли являются серьезными конкурентами друг другу. NetBeans не в состоянии
составить серьезную конкуренцию другим Eclipse и коммерческим продуктам. Что касается
Eclipse, то она, скорее, больше вторгается в область, принадлежащую IntelliJ IDEA. Любопытно
наблюдать за соревнованием Eclipse и IDEA, которые практически синхронно добавляют в
среду похожие элементы и возможности. Это косвенный признак разгорающейся конкуренции
между Eclipse.org и JetBrains. JetBrains очевидно чувствует давление со стороны Eclipse и
диверсифицирует бизнес, выпуская продукты Microsoft .NET. Вполне вероятно, что компания
JetBrains будет и дальше сдавать свои позиции, а Eclipse наращивать свое присутствие в этом
сегменте ПО. И не последним фактором такого положения является выбранная Open Source
модель разработки.
47
«Hi Iwan, we stopped support Netbeans i think with version 1.5. Currently we don't plan to support it again, mainly
because most of our customers use eclipse. Regards, Matthias Köster, Gentleware AG»
http://www.theserverside.com/tss?service=direct/0/NewsThread/threadViewer.markNoisy.link&sp=l30315&sp=l148181#1
48119
Ограниченная лицензия
65
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
9 Выводы и рекомендации
Сравнительный анализ Open Source сред разработки приложений на языке Java
выполненный в этой работе показал, что для разработчиков сегодня доступны две мощные
платформы NetBeans и Eclipse. Сравнение этих платформ между собой приводит к
однозначному выводу о значительных преимуществах Eclipse по целому ряду параметров и
примерное равенство в некоторых отдельных областях.
NetBeans имеет ряд достоинств, позволяющих рекомендовать эту платформу в учебных
целях и для разработки серверных приложений для сервера приложений Sun Microsystems.
Тем не менее эта платформа уже сегодня значительно проигрывает Eclipse и по нашим
оценкам это отставание будет только увеличиваться в будущем.
Eclipse, безусловно, является лучшей Open Source средой разработки приложений на
языке Java сегодня. В будущем это лидерство будет только усиливаться. Мы не видим
серьезных Open Source конкурентов для этой среды разработки сегодня и маловероятно, что
они появятся в обозримом будущем. Конкуренцию этой среде могут составить только
коммерческое ПО некоторых производителей, но подробное рассмотрение этого вопроса
выходит за рамки данного исследования.
Мы, безусловно, рекомендуем Eclipse в случаях, когда производится выбор ПО для
разработки на Java. В случае если сегодня используется другая Open Source среда разработки,
мы рекомендуем рассмотреть переход на Eclipse, как более мощную и перспективную
платформу, в самое ближайшее время.
10 Copyright и торговые марки
Авторские права на данное исследование принадлежат компании Elashkin Research.
Все упоминаемые изделия и названия компаний могут быть торговыми марками или
зарегистрированными торговыми марками соответствующих владельцев.
Ограниченная лицензия
66
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
11 Приложение А.
Тесты на определние поддержки Java 5
generic-коллекции
•
type-safe List и Map (#1)
List<String> listOfStrings = new LinkedList<String>( );
Map<Integer, Integer> squares = new HashMap<Integer, Integer>( );
•
итерация через параметризованные типы (#2)
for (Iterator<String> i = list.iterator( ); i.hasNext( ); ) {
out.println(i.next( ));
}
•
передача параметризованных типов в качестве аргументов (#3)
private void printListOfStrings(List<String> list,
PrintStream out) throws IOException {
...
}
•
возвращение параметризованных типов (#4)
private List<String> getListOfStrings( ) {
List<String> list = new LinkedList<String>();
...
return list;
}
•
использование параметризованных типов в качестве типовых параметров (#5)
Map<String, List<String>> map =
new HashMap<String, List<String>>( );
•
трафаретные типы (type wildcards) для совместимости с предыдущими
версиями классов-контейнеров (#6)
public void printList(List<?> list, PrintStream out) throws IOException {
for (Iterator<?> i = list.iterator( ); i.hasNext( ); ) {
out.println(i.next( ).toString( ));
}
}
•
создание собственных generic-типов (#7)
public class Box<T> {
protected List<T> contents;
public Box( ) {
contents = new ArrayList<T>( );
}
...
public T grab( ) {
Ограниченная лицензия
67
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
if (!isEmpty( )) {
return contents.remove(0);
} else
return null;
}
}
•
строгая типизация параметров (#8)
public class NumberBox<N extends Number> extends Box<N> {
...
public double sum(Box<? extends Number> box1,
Box<? extends Number> box2) {
double total = 0;
for (Iterator<? extends Number> i =
box1.contents.iterator( );
i.hasNext( ); ) {
total = total + i.next( ).doubleValue( );
}
for (Iterator<? extends Number> i =
box2.contents.iterator( );
i.hasNext( ); ) {
total = total + i.next( ).doubleValue( );
}
return total;
}
}
энумераторы
•
описание собственных и inline-энумераторов (#9)
public enum Grade implements Features {A,B,C,D,F,INCOMPLETE };
private Grade grade;
•
итерация по элементам энумераторов (#10)
public void listGradeValues(PrintStream out) throws IOException {
Grade[] gradeValues = Grade.values( );
for (Grade g : Grade.values( )) {
out.println("Allowed value: '" + g + "'");
}
}
•
EnumMap и EnumSet (#11)
EnumMap<Grade, String> gradeMessages =
new EnumMap<Grade, String>(Grade.class);
EnumSet allFeatures = EnumSet.allOf(Grade.class);
•
специфичные для каждого значения блоки кода (#12)
Ограниченная лицензия
68
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
enum Opcode {
PUSH(1) {
public void perform(Stack machine, int[] operands) {
machine.push(operands);
}
},
BEZ(1) {
public void perform(Stack machine, int[] operands) {
if (machine.pop( ) == null) machine.push(operands);
}
};
Opcode(int numOperands) { this.numOperands = numOperands; }
int numOperands;
}
autoboxing и unboxing48
•
преобразование примитивных типов в классы и обратно (#13)
int foo = 0;
Integer integer = foo;
int bar = integer;
•
инкремент/декремент оберточных классов (#14)
Integer counter = 1;
while (true) {
System.out.printf("Iteration %d%n", counter++);
if (counter > 1000) break;
}
вызовы с переменным количеством аргументов
•
итерация по списку аргументов (#15)
public void Guitar(String builder, String model,
GuitarWood backSidesWood, GuitarWood topWood,
float nutWidth, GuitarInlay fretboardInlay,
String... features) {
...
for (String feature : features) {
System.out.println(feature);
}
}
•
нулевое количество аргументов в списке (#16)
public static int max(int... values) {
if (values.length == 0) {
48 См. спецификацию JSR-201. http://jcp.org/en/jsr/detail?id=201
Ограниченная лицензия
69
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
throw new IllegalArgumentException("No values supplied.");
}
...
return max;
}
аннотации
•
стандартные аннотации (#17)
@Override public String toString( ) {
return super.toString( ) + " [OverrideTester Implementation]";
}
@Deprecated public void doSomething( ) {
// Really... do something...
}
@SuppressWarnings({"unchecked", "fallthrough"})
public void nonGenericsMethod( ) {
List wordList = new ArrayList( );
wordList.add("foo");
}
•
создание собственных аннотаций (#18)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Mark { }
public class Marked {
@Mark public void m1() { }
public void m2() { }
@Mark public void m3() {
throw new RuntimeException("Boom");
}
public void m4() { }
@Mark public void m5() { }
public void m6() { }
@Mark public void m7() {
throw new RuntimeException("Crash");
}
public void m8() { }
}
cтатическое импортирование
•
статическое импортирование и импорт по трафарету (#19)
import static java.lang.System.err;
import static java.lang.System.out;
import static java.lang.Math.*;
Ограниченная лицензия
70
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
•
«затенение» (shadowing) директив импорта (#20)
import static java.lang.System.err;
...
public static void writeError(PrintStream err, String msg)
throws IOException {
err.println(msg);
}
форматирование
•
использование форматировщика (#21)
StringBuilder sb = new StringBuilder( );
Formatter formatter = new Formatter(sb);
formatter.format("Date: %tD%nTime: %<tr%n", currentTime);
•
использование нового метода printf() (#22)
System.out.printf("Date: %tD%nTime: %<tr%n", currentTime);
новое в многопоточности
•
обработка не перехваченных исключений (#23)
public class BubbleSortThread extends Thread {
private int[] numbers;
public BubbleSortThread(int[] numbers) {
setName("Simple Thread");
setUncaughtExceptionHandler(
new SimpleThreadExceptionHandler( ));
this.numbers = numbers;
}
public void run( ) {
int index = numbers.length;
boolean finished = false;
while (!finished) {
index--;
finished = true;
for (int i=0; i<index; i++) {
// Create error condition
if (numbers[i+1] < 0) {
throw new IllegalArgumentException(
"Cannot pass negative numbers into this
thread!");
}
if (numbers[i] > numbers[i+1]) {
// swap
int temp = numbers[i];
numbers[i] = numbers[i+1];
numbers[i+1] = temp;
Ограниченная лицензия
71
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
finished = false;
}
}
}
}
}
class SimpleThreadExceptionHandler implements
Thread.UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
System.err.println("Thread " + t.getName( )
+ " gemerated uncaught exception!");
System.err.print(e.toString( ));
}
}
•
определение тайм-аута блокировки потока (#24)
try {
TimeUnit.SECONDS.sleep(30);
} catch (InterruptedException e) {
// report error
}
•
разделение логики потока и логики выполнения (#25)
public class RandomPrimeSearch implements Callable<BigInteger> {
private final Random prng = new SecureRandom( );
private int bitSize;
public RandomPrimeSearch(int bitSize) {
this.bitSize = bitSize;
}
public BigInteger call( ) {
return BigInteger.probablePrime(bitSize, prng);
}
}
...
FutureTask<BigInteger> task =
new FutureTask<BigInteger>(new RandomPrimeSearch(512));
new Thread(task).start( );
BigInteger result = task.get( );
•
объекты типа Callable (#26)
ExecutorService service = Executors.newFixedThreadPool(5);
Future<BigInteger> prime1 = service.submit(
new RandomPrimeSearch(512));
•
планирование выполнения потоков (#27)
Ограниченная лицензия
72
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor( );
final ScheduledFuture<?> timeHandle =
scheduler.scheduleAtFixedRate(
new BubbleSortThread(null), 0, 10, SECONDS);
scheduler.schedule(new Runnable( ) {
public void run( ) {
timeHandle.cancel(false);
}
}, 60*60, SECONDS);
•
использование атомарных типов (#28)
AtomicInteger count3 = new AtomicInteger(0);
public int count3( ) {
int result;
do {
result = count3.get( );
} while (!count3.compareAndSet(result, result+1));
return result;
}
Ограниченная лицензия
73
2005 © Elashkin Research
Open Source среды разработки приложений на языке Java. Сравнительный анализ.
Ограниченная лицензия
74
2005 © Elashkin Research
Скачать