 | Уровень сложности: средний Геннадий Березкин, разработчик программного обеспечения, OCSolutions
21.03.2008 Eclipse
- это новый мир для разработчиков Microsoft ® Visual Studio®, и первое
знакомство с Eclipse может привести к замешательству. Новые концепции,
такие, как архитектура плагинов, структура проекта, ориентированная на
рабочую область, и автоматическая сборка на первый взгляд могут
показаться не логичными. Изучив эти и другие различия между двумя
средами, вы будете чувствовать себя в среде Eclipse более свободно.
У
всех интегрированных сред разработки (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
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
Совет: Использование связанных ресурсов для повышения эффективности
 |
Использование связанного каталога в качестве выходного каталога 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.
Ресурсы Научиться
-
Оригинал статьи "An introduction to Eclipse for Visual Studio users" (EN).
- Проект Eclipse располагается на Eclipse.org. Вы можете пользоваться прямыми ссылками Ошибки в Eclipse и Разработка проекта Eclipse.(EN)
-
Руководство "Eclipse для разработчиков Visual Studio" является общим введением в Eclipse и руководством по созданию своей первой программы Java в Eclipse.(EN)
- В руководстве "Переход от проектов Visual Studio C / C++ к проектам Eclipse CDT" рассказывается о программировании на C/C++ в Eclipse.
- Основные
изменения Eclipse представлены в виде "объединенных релизов", которые
одновременно являются обновлениями платформы Eclipse и ключевых
проектов. Узнать больше об октябрьском выпуске 2006 года можно из
раздела "Что нового в Eclipse V3.2 Callisto", а об июньском релизе 2007 года - из раздела "Беглый тур по Eclipse Europa."(EN)
- Узнайте больше об "Отладке с помощью платформы Eclipse " (EN).
-
Создание связанных ресурсов объясняет, как использовать переменные для создания независимой от платформы ориентации.(EN)
-
Просмотрите документацию Eclipse.org, чтобы узнать об использовании рабочих наборов.(EN)
-
Проверьте "Рекомендуемый список чтения Eclipse." (EN)
-
Посмотрите содержание Eclipse на developerWorks.
- Начинаете работать в Eclipse? Прочитайте статью developerWorks "Начало работы с платформой Eclipse" , чтобы узнать о происхождении и архитектуре Eclipse, а также о том, как расширить Eclipse с помощью плагинов.
-
Улучшайте свои навыки работы с Eclipse, изучив раздел Ресурсы проектов Eclipse.(EN)
- Чтобы прослушать интересные беседы и обсуждения разработчиков программного обеспечения, проверяйте подкасты developerWorks.(EN)
-
Будьте в курсе технических мероприятий и трансляций developerWorks.(EN)
-
Смотрите и узнавайте о функциях технологий IBM и технологий с открытым исходным кодом на сайте developerWorks On demand demos.(EN)
-
Следите за предстоящими конференциями, выставками, трансляциями,
которые представляют интерес для разработчиков программного обеспечения
с открытым исходным кодом на сайте IBM. (EN)
-
Посетите раздел Open Source,
в котором находится обширная практическая информация, инструментарии и
обновления проектов. Изучение этого раздела поможет вам при разработках
с помощью технологий с открытым исходным кодом и пользоваться этими
разработками совместно с продуктами IBM.
Получить продукты и технологии
Обсудить
Об авторе  | |  | Геннадий
Березкин разрабатывает программное обеспечение более девяти лет. Он
пользовался Visual Studio для различных проектов C++ и C# и пользуется
Eclipse для разработок на языке Java с момента выпуска первого релиза
1.0 в 2001г. В 2002 году он создал плагин RMI для Eclipse,
который позволяет разработчикам эффективно разрабатывать, отлаживать и
запускать приложения, в которых используется технология Java Remote
Method Invocation (RMI). Геннадий имеет степень бакалавра (диплом с
отличием) и степень магистра компьютерных наук, полученную в
техническом университете Технион, Хайфа, Израиль. |
Выскажите мнение об этой странице
|  |