Готовы предоставить полный комплекс IT-услуг. Обращайтесь!

Миграция на Eclipse: Руководство разработчика по сравнительной оценке Eclipse и IntelliJ IDEA

Новые возможности в последней версии Eclipse (свободно распространяемой и все более популярной интегрированной среды разработчика Java) делают ее не только сравнимой с другими свободно распространяемыми IDE, но и с коммерческими, проприетарными предложениями, как например IntelliJ IDEA. В данной статье приведено краткое сравнение функциональных возможностей, простоты использования и стабильности Eclipse и IDEA, а также даются рекомендации для программистов, которые рассматривают возможность перехода или просто хотят попробовать Eclipse, вокруг которого столько шума.

http://www-106.ibm.com/developerworks/opensource/library/os-ecidea/

Дэвид Галлардо (David Gallardo) (david@gallardo.org)
Консультант по программному обеспечению,
08.09.2004

Содержание

Сравнение Eclipse и IDEA
Начало работы с Eclipse
Открытие модуля IDEA в Eclipse
Редактирование исходного кода в Eclipse
Настройка Eclipse
Итоги
Ресурсы
Об авторах

Сравнение Eclipse и IDEA

Eclipse - это в высшей степени амбициозный проект. Это не только IDE для Java, но и расширяемая платформа разработчика, предназначенная для поддержки любого языка программирования. Однако рекомендованная реализация Java Development Toolkit (JDT) - это Java IDE, и именно это люди (особенно Java-программисты) имеют в виду, когда говорят о Eclipse. Тем не менее, даже если ограничиваться использованием только Java-платформы и JDT, открытая и расширяемая природа Eclipse все равно обеспечит дальнейшее развитие Eclipse и Eclipse-сообщества.

Eclipse3.0 и IntelliJ IDEA 4 имеют большое количество важных различий, но самым явным из них является цена. Вы должны оплатить лицензию за использование IDEA, а Eclipse бесплатен. Насколько это важно для вас зависит от вашего бюджета или бюджета вашей компании. Многие профессиональные разработчики считают, что IDEA имеет все необходимые им функции по относительно привлекательной цене. И хотя Eclipse не обладает всеми функциональными возможностями, которые есть в IDEA, дружное сообщество разработчиков Eclipse достаточно настойчиво в обеспечении отсутствующих частей в форме подключаемых модулей.

Более важным, чем цена и полный список возможностей, является эффективность работы, которую может обеспечить IDE. Множество параметров (в дополнение к функциональным возможностям), включая общий дизайн, стабильность и производительность, определяют степень полезности IDE. В данной статье исследуются базовые функции Eclipse 3.0 JDT в сравнении с доступными в IDEA.

Функциональные возможности

IDEA и Eclipse почти равны друг другу по основным функциям, требуемым для редактирования, запуска и отладки Java-кода, хотя и выполняют некоторые вещи немного по-разному. В дополнение к основным функциям программирования, и Eclipse и IDEA также поддерживают более развитые средства разработки Java-программ, такие как Ant, CVS, JUnit, и рефакторинг. (Ссылка на статью, описывающую функции рефакторинга в Eclipse, приводится в разделе "Ресурсы".) Чаще всего самым трудным в миграции на Eclipse является изучение того, как выполнять старые действия в новой среде - в ее бесчисленном множестве функций часто может быть очень тяжело найти необходимую. К счастью Eclipse имеет очень полную и легкую в использовании систему помощи с документацией в режиме онлайн.

До недавних пор главным преимуществом IDEA над Eclipse был интегрированный GUI-компоновщик. Сейчас эта ситуация изменилась в связи с появлением в Eclipse визуального редактора (Visual Editor). GUI-компоновщик Eclipse является отдельным компонентом и имеет важное преимущество над IDEA - он обеспечивает обмен данными между кодом и представлениями в графическом виде (изменение в одном практически мгновенно отображаются на другом) и не требует дополнительных метаданных или других файлов.

EclipseVisual Editor (VE) версии 0.5, поддерживающий AWT/Swing, в настоящее время доступен для Eclipse 2.1.x. Вскоре будет доступна версия 1.0 для Eclipse 3.0. VE 1.0 можно будет загрузить в виде отдельного пакета с Web-сайта Eclipse. Эта версия будет поддерживать не только AWT/Swing, но и SWT. Более подробную информацию и предварительный обзор VE можно найти в статье по Visual Editor, ссылка на которую приведена в разделе "Ресурсы".

Другим преимуществом IDEA была интегрированная поддержка Web-разработки. Тем не менее, даже если она вам нужна, это необязательно заставит вас отказаться от использования Eclipse. Несколько подключаемых модулей сторонних разработчиков добавляют в Eclipse эту функциональность, например, подключаемые модули Lomboz и Sysdeo Tomcat. Как получить, установить и использовать эти и другие подключаемые модули можно узнать из статей, ссылки на которые приведены в разделе "Ресурсы".

Общий дизайн и простота использования

Обычной критикой новых пользователей Eclipse является сложность его использования. В основном это происходит по причине уникального подхода в Eclipse к организации пользовательского интерфейса. В частности, в нем представлена концепция перспективы в обеспечении среды для выполнения специфичных задач, таких как кодирование, отладка, использование системы контроля версий и т.д. После небольших пояснений и практики, которые дает данная статья, большинство пользователей находят эту концепцию ясной и мощной.

Еще одним клеймом пользовательского интерфейса Eclipse является чрезмерное применение мастеров: последовательности диалоговых окон, которые пошагово выдают инструкции, приводящие к выполнению конкретной задачи, например, - создание новых проектов или классов и соединение с CVS-репозиторием. Естественно, в IDEA тоже применяются мастера, но Eclipse отличается более подробными мастерами, предоставляющими большее число вариантов, которыми вы, вероятно, не будете пользоваться.

Стабильность и производительность

Теоретически Eclipse должен иметь наибольшую производительность, поскольку использует SWT, который в свою очередь использует встроенные элементы управления (UI-элементы операционной системы), в то время как IDEA использует Swing/AWT. Однако на практике IntelliJ проделала отличную работу по реализации пользовательского интерфейса IDEA, и на достаточно мощных машинах разница в производительности не существенна. Пользователи обычно считают достаточно быстрым любой из этих пакетов. Аналогично, и Eclipse, и IDEA являются очень стабильными приложениями, и маловероятно, что пользователи сталкиваются с какими либо проблемами при работе с обоими.

Не попробуешь - не узнаешь

В конце концов, если вы проверяете пригодность Eclipse для ваших задач, вы должны взять его на тестирование, чтобы почувствовать этот пакет. Это действительно единственный путь оценить простоту его использования и увидеть, подходит ли он для вашего стиля работы. В следующем разделе приводится краткий обзор Eclipse. Если вы загрузили и установили Eclipse, можете следовать дальше. Если нет - обратитесь к статье "Начало работы с платформой Eclipse", ссылка на которую приведена в разделе "Ресурсы".

Начало работы с Eclipse

Прежде всего, было бы полезно познакомиться с несколькими понятиями, описывающими пользовательский интерфейс Eclipse. На самом верхнем уровне находится окно приложения Eclipse. Это так называемый (на языке Eclipse) рабочий стол; он содержит главное меню, строку кнопок и несколько различных панелей. Панели, так же как и в IDEA, предназначены для конкретных задач, например, для отображения ресурсов (пакетов, исходных кодов, сценариев компоновки, и т.п.), для ведения списка "to do" ("надо сделать") и для отображения консоли во время выполнения программы. Эти панели называются видами.

Кроме видов каждая перспектива обычно содержит панель редактора. Поскольку редактор представляет собой основное средство создания и модификации таких ресурсов как исходный код, текстовые файлы и файлы изображения, он является главной панелью на рабочем столе Eclipse. Содержимое других видов будет меняться в зависимости от выбранного на панели редактора файла. Если, например, вы редактируете Java-файл, вид Outline покажет структуру класса в выбранном вами Java-файле.

При выполнении различных задач, таких как кодирование, отладка, внесение в ваш код изменений из централизованного репозитория исходного кода, вы можете использовать расположение видов, специфичное для конкретной задачи. Эти зависимые от задачи расположения окон называются перспективами.

При первом запуске Eclipse вы увидите экран с приветствием. Этот экран содержит ссылки на обзор по Eclipse, учебник и другие интересные материалы. Закройте этот экран, щелкнув на знак "X" в панели Welcome ниже основного меню. (Вы можете вернуться к экрану Welcome позже, выбрав его из меню Help.) Eclipse по умолчанию будет отображать перспективу Resource, как показано на рисунке 1.

Рисунок 1. Перспектива Resource

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

Открытие модуля IDEA в Eclipse

Если вы переходите на Eclipse из IDEA, у вас, возможно, есть IDEA-модуль, который вы захотите открыть. Для этого необходимо создать проект Eclipse для этого модуля и указать каталог, в котором он находится - обратите внимание, что слово проект в Eclipse соответствует понятию модуль в IDEA.

Предположим, что у вас имеется проект, созданный в IDEA и называемый Zoo. Он расположен в каталоге C:\Documents and Settings\user\IdeaProjects\Zoo. Предположим также, что файлы с исходным кодом расположены в подкаталоге src, а файлы классов - в каталоге classes. Следуйте следующим инструкциям после запуска Eclipse:

Вы увидите, что находитесь в перспективе Java, и проект Zoo перечислен в Package Explorer. Для исследования проекта вы можете щелкнуть на знак плюс, а затем выбрать папку src, чтобы найти ваши исходные файлы.

В учебных целях можно ввести ошибку в исходный файл, чтобы вы могли сравнить обработку ошибок в Eclipse и IDEA. Откройте, например, Snake.java и закомментируйте метод speak(). (Также как и в IDEA вы можете сделать это, выделив код метода и нажав комбинацию клавиш Ctrl-/.) Это вызовет ошибку, которую Eclipse обозначит слева значком "X" в красном квадратике (указывает на ошибку) возле лампочки (указывает, что Eclipse может дать совет по устранению ошибки).

Если вы поместите курсор над знаком лампочки, появится сообщение о том, что класс Snake не реализует абстрактный метод speak(), объявленный в суперклассе Animal. На рисунке 4 изображена данная ситуация и в редакторе IDEA, и в редакторе Eclipse. Как можно увидеть, они очень похожи.

Рисунок 4. Редакторы IDEA и Eclipse

Редактирование исходного кода в Eclipse

Для редактирования исходного кода Eclipse предлагает много таких же возможностей, что и IDEA, включая несколько типов автоматического завершения кода. Если вы начнете вводить ключевое слово Java, имя класса, или имя метода, например, и нажмете Ctrl-Space, Eclipse предложит вам список вариантов, из которых вы сможете выбрать нужный и вставить его в код.

Eclipse имеет также функцию под названием QuickFix, которая соответствует имеющимся в IDEA Intention Actions. Как отмечалось выше, Eclipse отображает значок лампочки на левой границе строки в том случае, если имеет предложение по устранению ошибки. Вы можете либо щелкнуть по этой лампочке, либо выбрать содержащий ошибку элемент (подчеркнутый волнистой линией, как Snake на рисунке) и нажать Ctrl-1 для вызова QuickFix. В вышеописанном случае отсутствия метода Eclipse предоставит вам на выбор три варианта: Add unimplemented methods (добавить нереализованный метод), Make type 'Snake' abstract (сделать тип 'Snake' абстрактным), или Rename in file (переименовать в файле). Здесь, естественно, вам нужно добавить нереализованный метод. (Не обращайте пока внимания на закоментированный код.)

Последний вариант Rename in file, предложенный QuickFix, может показаться ошибочным, но это из-за того, что фактически это предложение не связано с решением проблемы отсутствия метода. Тем не менее, это интересная возможность Eclipse, позволяющая вам сразу изменить все экземпляры идентификатора в файле. Чтобы попробовать эту возможность, откройте файл Animal.java, выберите переменную lion, нажмите Ctrl-1 и выберите Rename in file. Вы увидите, что оба экземпляра названия переменной были заключены в прямоугольник; как только вы начнете вводить новое имя, leona например, они оба изменяются.

По мере ввода исходного кода в Eclipse вы можете заметить, что иногда где-то над курсором появляется зеленая полоска. Например, вернитесь к новому методу speak() в классе Snake и введите System.out.println(. Eclipse добавит закрывающую круглую скобку автоматически (как в IDEA) и после закрывающей скобки появится зеленая полоска (См. рисунок 5). Она называется точкой вставки.

Рисунок 5. Нажатие клавиши tab перемещает курсор к точке вставки - зеленой полоске

Затем, внутри скобок введите кавычки. Eclipse опять поможет вам, добавив закрывающие кавычки, за которыми расположена зеленая полоска. (Первая зеленая полоска в это время исчезнет.) Введите что-нибудь, что может произнести змея, например, "Sssss," и нажмите Tab. Вы увидите, что курсор переместился за кавычки к точке вставки. Предыдущая точка вставки вновь появится за круглыми скобками. Снова нажмите Tab для перемещения в конец строки и введите точку с запятой.

Как можно заметить, этот пример не уберегает вас от большого количества действий по набору текста; вместо нажатия Tab вы могли нажать стрелку перемещения курсора вправо и достигнуть конца строки, но как только вы начнете пользоваться этой возможностью, вы, возможно, найдете ее очень удобной. В некоторых случаях (в частности, при использовании шаблонов кода) точки вставки могут быть особенно полезны. Например, если вы вызовете шаблон для цикла for, клавиши Tab и Shift-Tab будут перемещать вас вперед и назад по различным частям цикла - итератору, условию, инкрементному выражению и телу цикла.

Разделение экрана редактора

Одной из невидимых сразу возможностей Eclipse является способность разделения экрана. Разделение достигается нажатием ярлыка файла в верхней части редактора и перемещения его на какой-нибудь край панели редактора. Предположим, например, что открыты файлы Animal и Snake.

Рисунок 6. Разделение экрана редактора перемещением ярлыка Snake к нижнему краю панели

Запуск и отладка программы

Eclipse использует инкрементный компилятор, поэтому нет необходимости явно компилировать ваши Java-файлы; откомпилированные файлы классов сохраняются автоматически при сохранении Java-файлов. Простейший способ запуска программы - выбрать файл, содержащий метод main() в Package Explorer, а затем выбрать Run > Run As > Java Application из главного меню Eclipse. (Обратите внимание, что мы не выбрали вариант Run > Run... из меню, который мы рассмотрим позднее.) После выбора и запуска Animal.java в окне Console ниже редактора вы увидите вывод информации, как показано на рисунке 7:

Рисунок 7. Вывод информации в окне Console

Запуск простой программы в отладчике осуществляется аналогичным способом. Во-первых, установите точку останова в методе main(), например, дважды щелкнув на левой границе возле вызова lion.speak(). Если бы наш код был менее тривиальным, мы могли бы установить условную точку останова (она срабатывает при выполнении конкретного условия, например, i==2 или после определенного количества проходов), нажав правой кнопкой мыши на точку останова и выбрав Breakpoint properties из контекстного меню.

Рисунок 8. Отладка с помощью перспективы Debug

Большинство видов в перспективе Debug должны быть более или менее вам знакомы по окнам в IDEA, хотя они могут называться по-разному и немного по другому расположены. Обратите внимание, например, что вид Debug (не путайте с перспективой Debug) отображает стек вызовов; он комбинирует фреймы и потоки, которые знакомы вам по IDEA. Вид Variables показывает текущее состояние переменных программы, а вид Console показывает программу.

Вы также заметите, что инструментальные кнопки (Step over, Step into и т.д.) для управления выполнением программы расположены на панели инструментов вида Debug. Эти элементы управления расположены здесь вместе со стеком вызовов, так что вы можете выбрать программу или поток для управления выполнением, выбрав его в стеке вызовов при отладке более одной программы (или экземпляра программы) или при отладке программы с несколькими потоками. При желании можно создать эту ситуацию, загрузив пример повторно, без прекращения первого экземпляра.

Иногда вам не нужно (или нельзя) запускать программу, используя пункт меню Run > Run As > Java Application. Если вам необходимо передать аргументы либо в программу, либо в виртуальную машину, в которой она выполняется, необходимо использовать пункт меню Run > Run... При этом появится диалоговое окно, в котором вы можете установить эти параметры и изменить другие настройки, как показано на рисунке 9:

Рисунок 9. Запуск Java-программы с настройками

Настройка Eclipse

Одной из прекрасных возможностей, общих для IDEA и Eclipse, является доступность сокращенных клавиатурных команд для выполнения различных действий. Некоторые из этих команд, такие как вырезка и вставка, присутствуют в обоих приложениях, но большинство команд - нет. Вы можете решить начать изучение сокращенных клавиатурных команд Eclipse с нуля, но если ранее вами использовались клавиатурные команды IDEA, вы имеете возможность настроить команды Eclipse в соответствии с имеющимися в IDEA. Делать это довольно утомительно (и в конечном счете непрактично); хорошим компромиссом может быть добавление наиболее часто используемых вами клавиатурных команд, а затем постепенное изучение остальных.

Например, если вы один из многих программистов, которые испорчены использованием услужливых IDE, вам, возможно, нравится быстро писать код, не слишком заботясь о стиле, останавливаясь только для исправления напечатанного при помощи команды форматирования текста. В IDEA вы, вероятно, пользовались комбинацией Ctrl-Alt-L, но в Eclipse комбинация клавиш для этой команды другая - Ctrl-Shift-F. Если подобное форматирование кода стало для вас почти автоматической функцией, легче и менее болезненно (чем переучить себя) будет изменить комбинацию клавиш в Eclipse. Поменять комбинацию клавиш в Eclipse на Ctrl-Alt-L можно следующим образом:

Рисунок 10. Добавление сокращенной клавиатурной команды для форматирования исходного кода

Как упоминалось ранее, невозможно изменить Eclipse так, чтобы он работал также как и IDEA, поскольку у Eclipse и IDEA разный набор команд. Иначе говоря, хотя они и имеют очень много одинаковых функций, часто эти функции реализованы по-разному. В частности, команда в одном приложении может соответствовать двум или более командам в другом приложении. Например, Eclipse использует одну команду для поиска и замены текста, тогда как IDEA имеет отдельные команды для каждой из этих операций.

Итоги

И Eclipse 3.0 и IntelliJ IDEA 4 предоставляют Java IDE с очень богатыми возможностями, обеспечивающими контроль синтаксиса, помощь при кодировании и генерацию исходного кода. Кроме того, оба приложения поддерживают рефакторинг, Ant, тестирование модулей и CVS. Вскоре будет доступна версия 1.0 Eclipse Visual Editor для построения GUI с использованием либо AWT/Swing, либо SWT. Но между ними существуют также и существенные отличия.

Одним из важных отличий является способ проектирования пользовательского интерфейса Eclipse, использующего концепцию перспективы, набора видов, редакторов и других UI-элементов, наиболее подходящих для выполнения конкретной задачи. Это облегчает выполнение работы, поскольку соответствующие (и только) инструментальные средства находятся под рукой.

Другим важным отличием является то, что Eclipse - это проект с открытым исходным кодом. Именно это привлекло большое сообщество разработчиков, проектирующих для Eclipse подключаемые модули, как свободно распространяемые, так и коммерческие. Если вам необходима какая-то функциональность (начиная с поддержки аспектно-ориентированной разработки и заканчивая встроенным MP3-проигрывателем), вы с большой степенью вероятности найдете бесплатный подключаемый модуль, обеспечивающий эту функциональность в Eclipse.

Ресурсы

Об авторах

Дэвид Галлардо (David Gallardo) - автор Studio B, является независимым автором и консультантом по программному обеспечению, специализирующимся в области интернационализации программного обеспечения, Java Web-приложениях и разработке баз данных. Он является профессиональным инженером-программистом с более чем 15-летним опытом во многих операционных системах, языках программирования и сетевых протоколах. Он является ведущим разработчиком баз данных и интернационализации программного обеспечения в TradeAccess, Inc, business-to-business e-commerce компании. Перед этим он являлся старшим инженером группы International Product Development в Lotus Development Corporation, в которой участвовал в разработке кросс-платформенной библиотеки, обеспечивающей поддержку Unicode и интернациональных языков для продуктов Lotus, включая Domino. Дэвид является соавтором книги Eclipse в действии: руководство для Java-разработчиков (Independent Pub Group, 2003). Информация для контактов - david@gallardo.org.