Введение в Eclipse для пользователей Visual Studio

Сравнение Visual Studio и Eclipse

Eclipse - это новый мир для разработчиков Microsoft ® Visual Studio®, и первое знакомство с Eclipse может привести к замешательству. Новые концепции, такие, как архитектура плагинов, структура проекта, ориентированная на рабочую область, и автоматическая сборка на первый взгляд могут показаться не логичными. Изучив эти и другие различия между двумя средами, вы будете чувствовать себя в среде Eclipse более свободно.

Геннадий Березкин, разработчик программного обеспечения, OCSolutions

Геннадий Березкин разрабатывает программное обеспечение более девяти лет. Он пользовался Visual Studio для различных проектов C++ и C# и пользуется Eclipse для разработок на языке Java с момента выпуска первого релиза 1.0 в 2001г. В 2002 году он создал плагин RMI для Eclipse, который позволяет разработчикам эффективно разрабатывать, отлаживать и запускать приложения, в которых используется технология Java Remote Method Invocation (RMI). Геннадий имеет степень бакалавра (диплом с отличием) и степень магистра компьютерных наук, полученную в техническом университете Технион, Хайфа, Израиль.



21.03.2008

У всех интегрированных сред разработки (IDEs) есть общие черты, поскольку они все созданы с одной целью. Но у них также имеются и различия. Некоторые различия можно отнести к конкретным областям применения, другие являются результатом разработки IDE.

Очевидно, Microsoft Visual Studio и Eclipse отличаются, так как язык программирования Java™ отличается от C/C++/.NET, и Java был первым языком, который поддерживается в Eclipse. Еще одним отличием является то, что Eclipse позиционируется как универсальная IDE, предоставляющая более общие и настраиваемые функции. Eclipse совместима с большим числом операционных систем. Однако нашей целью не является перечисление всех различий между Eclipse и Visual Studio.

Не вдаваясь в философию об IDE-дизайне, в этой статье представлены основные различия между этими средами. Статья предназначена для тех, кто работал в Visual Studio и начинает осваивать Eclipse. Эта статья не учит Java-программированию в Eclipse и не концентрируется на особенностях языка Java (хорошее руководство по Java представлено в разделе Ресурсы). Скорее в ней рассказывается о различиях в целом.

Рабочая область Eclipse

Каталог рабочей области

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

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

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

Структура проекта

Происхождение структуры проекта в Eclipse

Строгое соответствие между структурой проекта и ее файловой структурой, вероятно, зависит от обязательного соответствия между Java-пакетами и их расположением в файловой системе. В языке Java, класс p1.p2.p3.Class1 должен располагаться в каталоге p1/p2/p3.

В языках Visual Studio (C/C++/C#, и даже J#) нет такой структуры каталогов. Таким образом, в Visual Studio нет строгого соответствия между структурой проекта и его расположением в файловой системе.

Проекты в Eclipse отличаются от проектов в Visual Studio тем, как они взаимодействуют с основной файловой системой. В Visual Studio проект не прочно связан со своим расположением в файловой системе: вы можете добавить файл из папки с:\temp\ в проект, расположенный в папке d:\work, Visual Studio запишет ссылку на новый файл и откроет его, как и любой другой файл. Папки (например, "файлы заголовков") не соответствуют папкам файловой системы (внутри Visual Studio такие папки называются фильтрами).

В Eclipse структура элементов проекта должна соответствовать их расположению в основной файловой системе. Например, если проект HelloWorld в Eclipse (см. рисунок 1) находится в папке c:\eclipse\workspace\HelloWorld, то файл README.TXT находится в папке c:\eclipse\workspace\HelloWorld\src\README.TXT.

Рисунок 1. Простой проект HelloWorld
Простой проект HelloWorld

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

Привязка ресурсов в Eclipse

Жесткая структура рабочей области была заложена в Eclipse изначально. Хотя проекты могли храниться вне рабочего каталога, в ранних версиях Eclipse не было возможности даже открыть внешний файл (сейчас это можно сделать с помощью опции File > Open File). Пользователям UNIX® повезло, поскольку они могли эмулировать гибкую структуру проекта, используя символьные ссылки, пользователи же Windows не имели таких привилегий. На сегодняшний день в Eclipse поддерживается привязка ресурсов на уровне IDE.

Привязка ресурсов в Eclipse осуществляется таким же образом, как работают символьные ссылки UNIX. Например, чтобы добавить большой тестовый файл входных данных в проект без копирования его из текущего месторасположения, выберите File > New > File, в окне, которое откроется, нажмите кнопку Advanced (см. рисунок 2). После их добавления, связанные ресурсы выделяются небольшой стрелкой на иконке (см. рисунок 3).

Рисунок 2. Добавление связанного файла
Добавление связанного файла
Рисунок 3. Связанный файл в проекте HelloWorld
Связанный файл в проекте HelloWorld

Совет: Использование связанных ресурсов для повышения эффективности

Использование связанного каталога в качестве выходного каталога Java

Чтобы использовать связанный каталог в качестве выходного каталога Java для существующего проекта, сначала необходимо, чтобы в вашем проекте использовались отдельные папки для исходных и .class-файлов (если это не так, нужно переместить исходные файлы в отдельную папку). Затем откройте Navigator (навигатор), отключите автоматическую сборку, удалите старый выходной каталог, создайте новый связанный каталог с тем же именем, включите автоматическую сборку и соберите проект с помощью функции Project > Clean.

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

В проектах Visual Studio C++ можно повысить эффективность сборки путем установления промежуточных каталогов на локальный компьютер. В Eclipse вы можете достичь того же эффекта, используя связанный выходной каталог, который указывает на каталог на локальном компьютере.

Для получения дополнительной информации об использовании переменных для определения платформо-зависимых ссылок, например, об использовании временного каталога /tmp в UNIX и с:\temp в Windows, см. раздел Ресурсы.

Устранение неразберихи с помощью рабочих наборов

Как уже упоминалось, многие разработчики загружают все свои проекты в единую рабочую область в Eclipse. Это удобно, но порой может привести к неразберихе. Помимо закрытия ненужных проектов, вы можете определить рабочие наборы (working sets) - группы элементов (проекты, папки, классы и т.д.). В Eclipse можно использовать рабочие наборы в различных представлениях (например, Package Explorer) и операциях (например, в операции поиска). Для дополнительной информации см. раздел Ресурсы.

Локальная история

Одной из лучших функций в Eclipse, которая отсутствует в Visual Studio, является функция локальной истории. Каждый раз, когда вы изменяете файл, класс или метод, изменения записываются в локальную историю Eclipse. Затем вы можете сравнить файл с тем, каким он был несколько минут, часов или дней назад. Если файл был удален, то с помощью функции Restore from Local History, которая находится в родительском контекстном меню, вы можете восстановить его.

Локальная история не представляет собой замену функции контроля версий. Скорее, эта функция напоминает расширенный механизм отката изменений (undo) с настраиваемыми временными границами и отведенными ресурсами памяти.


Сборка проектов

В отличие от Visual Studio, в котором проекты являются однотипными (C++/C#/J#), проекты в Eclipse могут иметь один, ни одного или несколько типов. Например, проекты Java в Eclipse являются проектами Java-типа, а динамические Web-проекты (создаются с помощью Eclipse WTP; см. раздел Ресурсы) являются Java- и (метафорическими) Web-проектами. Тип проекта определяет список компоновщиков, которые запускаются при сборке проекта. Например, тип Java запускает компоновщик, который компилирует исходные Java-файлы в файлы типа .class, а тип Web добавляет компоновщик, который проверяет файлы XML и HTML.

Автоматическая сборка проектов

Сборка не-Java-проектов

Автоматическая сборка идеально подходит для проектов Java, поскольку внутренний инкрементный компилятор (в Eclipse не используется javac) может быстро обрабатывать небольшие изменения кода. Хотя компоновщики работают в фоновом режиме, все же для таких проектов (например, проекты CDT), в которых небольшие обновления могут вызвать длительные компиляции, имеет смысл отключить функцию автоматической сборки (Project > Build Automatically). Вы можете запустить ручную сборку проекта (Project > Build All), или предоставить Eclipse возможность выполнить сборку перед запуском приложения.

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

Настраиваемая сборка

В проектах Visual Studio, в основном для проектов C++, для выполнения нестандартных задач часто используется настраиваемая сборка. В проектах Visual Studio команды настраиваемой сборки являются простыми инструкциями в виде командных строк. А в Eclipse для этих целей могут запускаться автономные программы или скрипты сборки Ant. Например, вы можете использовать скрипты Ant, чтобы собрать и развернуть архивированный файл Java (JAR), в котором содержатся классы проекта, каждый раз при сборке проекта. Также имеется редактор для файлов Ant - build.xml.

Настройки для компоновщика находятся в окне свойства проекта на странице Builders. Вы можете определить и запустить глобальные скрипты, выбрав Run > External Tools.


Запуск и отладка

Языки и точки входа

В языках Visual Studio (C++/C#) используется только одна точка входа для исполняемого файла, которая определяется во время компоновки. В языке программирования Java во время компиляции допускается наличие нескольких точек входа (методов main). Точка входа определяется через командную строку, когда запускается программа.

В Eclipse, в отличии от Visual Studio, нет такого понятия, как запуск проектов. Различие можно объяснить языковыми отличиями. Visual Studio еще больше ограничивает своих пользователей. В ней создается один исполняемый файл для проекта, а запускать его с различными параметрами, такими как аргументы командной строки, можно только для разных конфигураций проекта. Управление различными конфигурациями только ради наличия различных аргументов командной строки, в большинстве случаев является неудачной идеей.

В Eclipse для сбора параметров, которые необходимы для запуска приложения, используются конфигурации запуска. Для программ Java такими параметрами являются: имя основного класса и аргументы командной строки. Для запуска любого класса с методом main () у вас может быть несколько отдельных конфигураций в проекте. Новая конфигурация создается автоматически, когда вы запускаете приложение с новым main-классом с помощью команды Run > Run As (Выполнить > Выполнить как). Для создания и удаления конфигураций запуска вы можете воспользоваться окном Run (Run > Run).

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

Рисунок 4. Изменение месторасположения конфигурации запуска
Изменение месторасположения конфигурации запуска

Перспектива отладки

В Eclipse нет режима отладки, только перспектива отладки, которую вы можете включать и отключать. В основном представлении отладки отображаются все запущенные или отлаживаемые программы. Это позволяет вам отлаживать несколько программ одновременно, что намного сложнее сделать в Visual Studio. Чтобы узнать о возможностях отладки в Eclipse, прочитайте статью "Отладка с помощью платформы Eclipse" (см. раздел Ресурсы)


Плагины в Eclipse

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

Благоприятный для предпринимательской деятельности ресурс Eclipse поощряет развитие коммерческих плагинов и плагинов с открытым исходным кодом. Неудивительно, что более 800 плагинов представлено на официальном рынке плагинов в Eclipse Plugin Central.

Помимо плагинов, которые интегрированы в существующую версию Eclipse, некоторые компании создали полнофункциональные среды разработки на базе Eclipse, в которые включены инструменты IBM® Rational®, CodeGear JBuilder 2007 и Genuitec MyEclipse. Как правило, эти продукты предлагают инструменты для моделирования, Web-разработки и визуального проектирования. См. раздел Ресурсы, чтобы узнать больше о продуктах и плагинах.

Дополнительные проекты Eclipse

Основной набор инструментов для разработки ПО (SDK) в Eclipse содержит только Java IDE. Инструментарии других языков (C/C++, PHP), инструменты для моделирования и дополнительные расширения разрабатываются под эгидой Eclipse и могут быть установлены как плагины Eclipse. Дополнительную информацию о программном комплексе Europa, выпущенном в 2007 году и включившем в себя 21 наиболее популярный проект Eclipse, и о Callisto, предыдущем выпуске 2006 года 10 наиболее популярных проектов Eclipse, , можно найти в разделе Ресурсы.

Менеджер обновлений

Всякий раз, когда вы загружаете Eclipse впервые или в качестве обновления, вы получаете обычный архивный файл, который вы извлекаете в пустой каталог без необходимости установки, конфигурации. Для плагинов в Eclipse имеется менеджер обновлений Update Manager (Help > Software Updates), который управляет как установкой, так и обновлением. С его помощью можно включить или отключить плагины, аналогично менеджеру добавлений Add-in Manager в Visual Studio.

Менеджер обновлений устанавливает или обновляет плагины с сайтов обновлений (update sites), расположенных локально или в интернете). Для установки новых плагинов вам необходимо найти URL сайта обновлений на Web-сайте его поставщика и вручную ввести URL в окне диспетчера обновления. (Некоторые поставщики создали полноценные инсталляторы, которые самостоятельно взаимодействуют с менеджером обновлений).

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


Когда вам нужна помощь

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

Решение основных проблем

Всем известно, что IDE могут давать сбои. В Visual Studio вы можете заменить настройки заводскими путем ввода в командной строке devenv/setup. В Eclipse тоже есть подобный командный переключатель. Запуск eclipse.exe -clean через командную строку восстанавливает наиболее полную информацию об установленных плагинах. Опция -clean может быть полезной в том случае, когда вы установили новый плагин, а он не отображается.

Если Eclipse дает сбой, можно проверить журнал ошибок. Чтобы открыть представление Error Log с журналом ошибок, воспользуйтесь командой Window > Show View > Error Log. Необработанный журнал находится в файле <workspace dir>/.metadata/.log file.

Группы новостей

Если вы работали с продукцией Microsoft, вы знаете, что получить помощь вы можете на форумах и в группах новостей Microsoft Developer Network (MSDN). В сообществе пользователей Eclipse тоже есть свои группы новостей (см. раздел Ресурсы), и многие опытные пользователи Eclipse готовы прийти вам на помощь.

Сообщения об ошибках и запросы новых возможностей

В отличие от Microsoft, в котором отчеты об ошибках отправляются на Web-сайт Microsoft Connect, функцией которого является оказание поддержки пользователей, Eclipse Bugs - это фактически система отслеживания ошибок, которой пользуются разработчики Eclipse. С Eclipse Bugs вы можете не только найти ошибку, создать отчет о ней и огласить ее. У вас есть возможность добавить копию своей ошибки в базу, вы можете посмотреть, кому поручено отладить ее, узнать версию, в которой ошибка должна быть исправлена и многое другое. Вы можете добавлять запросы новых возможностей, используя тот же интерфейс (см. раздел Ресурсы).

Премиум-поддержка

Помимо моральной поддержки и помощи сообщества с открытым исходным кодом, разработчикам некоторых компаний требуется коммерческий уровень поддержки. При продаже продукции, созданной на базе Eclipse, поставщики обязаны оказывать поддержку таких продуктов, в том числе и основных компонентов Eclipse. Если вы пользуетесь базовой Eclipse SDK, вы можете воспользоваться поддержкой IBM Rational Elite Support для программ Eclipse с помощью плана поддержки 24x7x365, распространенного во всем мире.


Заключение

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

Если вы еще не сделали этого, то прочитайте руководство "Eclipse для разработчиков Visual Studio " (см. раздел Ресурсы), которое является хорошим введением в Java-разработку на базе Eclipse. Однако в Eclipse используется не только язык программирования Java. Посмотрите выпуски программных комплексов Callisto и Europa, в которых можно найти дополнительные проекты Eclipse, например, среду разработки C++. Затем посетите ресурс Eclipse Plugin Central и загрузите некоторые популярные плагины Eclipse.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=296284
ArticleTitle=Введение в Eclipse для пользователей Visual Studio
publish-date=03212008