Код
#статьи

Среда разработки Eclipse: на что способна популярная IDE для джавистов

Считается, что работать в Eclipse — уже немодно и неванильно. Опровергаем этот миф и разбираемся, почему «Затмению» всё же стоит дать шанс.

Иллюстрация: Eclipse / Colowgee для Skillbox Media

Eclipse — это среда разработки, которая поддерживает множество языков программирования, но в основном ценится именно в Java-комьюнити. Поэтому, чтобы разобраться в тонкостях этой IDE, мы обратились к Андрею Когуню — преподавателю, тимлиду и организатору встреч московского сообщества джавистов JUG.MSK.

Как выяснилось, Андрей любит и использует Eclipse, а ещё — давно ждёт, когда кто-нибудь расспросит его про возможности этой IDE. Ну а кто мы такие, чтобы не исполнить мечту человека? Получился подробный обзор фишек Eclipse, да ещё и с комментариями эксперта — всё, как вы любите.

Содержание:


Андрей Когунь

Организатор встреч московского сообщества Java-разработчиков JUG.MSK, тимлид группы Java-разработчиков в компании «КРОК», преподаватель разработки с применением Java-технологий в московских вузах.

Краткая история Eclipse: от застенков IBM до конкуренции с IntelliJ IDEA

Несмотря на то, что сейчас Eclipse — среда разработки с открытым исходным кодом, истоки появления у неё вполне коммерческие. Изначально её развивала IBM как преемницу своей IDE VisualAge и потратила на это аж 40 млн долларов. А потом взяла и отдала проект в руки сообщества. И на то было две причины:

  • По одной из версий — потому что сделала ставку на Java и хотела, чтобы как можно больше разработчиков участвовало в развитии экосистемы. Мол, делайте нам бесплатные инструменты и библиотеки, а мы в сторонке постоим покурим :)
  • По другой — из-за того, что решила постепенно уходить с рынка домашних и рабочих ПК, переориентируясь на консалтинг. По той же причине, кстати, IBM избавилась от линейки ноутбуков ThinkPad, передав её Lenovo.

Как бы то ни было, со временем вокруг проекта вырос целый некоммерческий фонд Eclipse Foundation, под крылом которого развивается целая когорта проектов — в их числе, например, платформа Jakarta EE от Oracle и графический фреймворк SWT, который тоже вышел из IBM.

Когда вышла первая версия Eclipse, на рынке рабочих сред для джавистов правила бал NetBeans — что совсем неудивительно, ведь её разработала Sun Microsystems, автор языка Java. Но IBM серьёзно вкладывалась в маркетинг, поэтому Eclipse тоже со временем стала популярна.

В какой-то момент положение на рынке достигло партитета — каждой IDE пользовалось примерно одинаковое число разработчиков. Среди козырей Eclipse было огромное количество всевозможных средств, которые позволяют использовать её как базовую платформу для разработки. Например, IBM поставляет сервер приложений для Java и на базе Eclipse разрабатывает для него весь тулинг. В результате Eclipse стала незаменимым инструментом в корпоративном секторе.

NetBeans считалась средой разработки, заточенной под Java, поэтому на каждой конференции, где показывали фишки языка, это делали именно в ней. Но потом появилась и набрала обороты IntelliJ IDEA, и NetBeans стала довольно маргинальной — вот уже несколько лет за ней мало кто следит.

Eclipse, в отличие от NetBeans, конкуренцию с IntelliJ выдержала. Но сейчас шайба, кажется, на стороне последней — её используют как опытные разработчики на отраслевых конференциях, так и совсем новички. Джуны обычно начинают с версии для сообщества, а затем, когда возникает потребность в коммерческих функциях, переходят на максимальную.

Вот статистика за 2023 год — 42% разработчиков используют IntelliJ, согласно опросу JRebel. На третьем месте находится VS Code, где поддержка Java обеспечивается плагином от Red Hat — о том, как это устроено, поговорим чуть дальше.

Лишь 27% опрошенных используют Eclipse и лишь 13% — NetBeans
Инфографика: JRebel

А вот данные за 2021 год, из опроса Snyk:

Лишь 25% опрошенных используют Eclipse
Инфографика: Skillbox Media

Сейчас Eclipse максимально завязана на «кофейной» экосистеме — даже релизы проекта происходят примерно в одно время с обновлениями Java. Если раньше новые версии Eclipse выходили ежегодно, то теперь разработчики перешли на так называемые роллинг-релизы — то есть на регулярные ежеквартальные обновления.

Eclipse постоянно тестируют под новые релизы Java, которые проходят минимум дважды в год, — благодаря этому разработчики, использующие Eclipse, получают свежие версии Java в числе первых.

Философия Eclipse: всё есть плагин

Уникальность Eclipse в том, что это не единая система, а модульная — то есть она практически полностью состоит из плагинов.

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

Грубо говоря, Eclipse — это программный каркас, который можно гибко настраивать по своему вкусу. Скажем, если нужно разрабатывать на Spring — можно скачать плагин Spring Tool Suite. Хотите писать веб-приложения на PHP — пожалуйста, для этого есть плагин PHP Development Tools.

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

Кстати, согласно консенсусу разработчиков, большинство плагинов для Eclipse распространяются бесплатно. Посмотреть список расширений и установить что-то в свою сборку можно в маркетплейсе Eclipse. А можно подключиться к магазину плагинов прямо из среды разработки:

Скриншот: Skillbox Media

Фишка плагинов в том, что можно очень быстро создать собственную IDE, построенную на базе Eclipse. Мы, кстати, часто так и делали для корпоративных заказчиков. А вот на IntelliJ IDEA, например, это сделать не так просто, потому что система плагинов в ней проприетарная — то есть для неё почти никто не выпускает расширения, кроме самой JetBrains.

Приложения на базе Eclipse

Другая фича Eclipse состоит в том, что на её основе можно собрать не только свою версию IDE, но и готовое приложение с графическим интерфейсом на Java. Да ещё и с поддержкой плагинов из маркетплейса Eclipse и с возможностью запуска на разных ОС — в общем, красота.

Приложения, созданные на базе Eclipse, называются богатыми клиентами. А среда, которая отвечает за их создание, — Eclipse Rich Client Platform, или буквально «платформа Eclipse для богатых клиентов». Под капотом у неё лежат три основных компонента:

Фреймворк SWT — для отрисовки графики. Его особенность в том, что рендеринг осуществляется средствами ОС, поэтому на каждой платформе, под которую есть сборка Eclipse, приложения выглядят нативно. У IntelliJ IDEA, кстати, другой подход: там используется родной для Java фреймворк Swing, который рисует один и тот же интерфейс для разных платформ.

Ядро Eclipse Runtime управляет плагинами и следит, чтобы они эффективно расходовали ресурсы системы. Например, замораживает неактивные модули до тех пор, пока они не понадобятся пользователю.

Фреймворк JFace — для разработки пользовательских интерфейсов.

Кстати, вот пример приложения для работы с базами данных и SQL, построенного полностью на базе Eclipse — называется DBeaver.

Интерфейс RCP-приложения DBeaver
Скриншот: DBeaver Community

А ещё Eclipse и приложения на его основе можно запускать удалённо, прямо из браузера. Утилита, которая позволяет так делать, называется RAP, в переводе — «платформа удалённых приложений». По сути, то же самое, что и RCP, но с ориентацией на веб-разработку.

Версии и сборки Eclipse

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

Выбрать и скачать нужную сборку можно двумя способами: на специальной странице с версиями или непосредственно в установщике.

Скриншот: Skillbox Media

Давайте пройдёмся по самым популярным версиям Eclipse.

Для разработчиков на Java. Самая базовая и одновременно флагманская сборка Eclipse. Предназначена, как следует из названия, для работы с Java, и содержит для этого все нужные плагины и функции, включая компиляцию, отладку, автодополнение кода, рефакторинг и так далее.

Для корпоративной Java-разработки. Чуть более продвинутая сборка, заточенная на создание корпоративных и веб-приложений. В отличие от базовой версии, поддерживает работу с веб-серверами и интерфейсами.

Для разработчиков на PHP. Ещё одна популярная версия с ориентацией на веб. Поддерживает фантастическую четвёрку языков для создания фронтенда и бэкенда веб-приложений: PHP, JavaScript, HTML и CSS. А бонусом ещё и майкрософтовский JS на максималках — TypeScript.

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

Помимо вышеперечисленных сборок, есть ещё пакеты для разработки на C и C++, интернета вещей, научных вычислений и многих других задач. Раньше, кстати, была сборка и для Android-разработки, но после того, как зелёный робот переехал на Kotlin, Eclipse осталась немного не у дел — ведь вся основная работа сейчас происходит в IntelliJ IDEA и Android Studio.

Главные фишки Eclipse: пошаговая сборка кода, перспективы и кодогенерация

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

Инкрементальная компиляция

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

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

Скриншот: Skillbox Media

Рабочие пространства (воркспейсы)

Ещё в Eclipse можно сгруппировать несколько связанных между собой проектов в единую рабочую область и задать им общие настройки. Например, можно выбрать форматирование кода, версию Java и даже собрать уникальный набор плагинов для каждой задачи.

Фишка в том, что проекты в рабочих областях могут зависеть друг от друга: первый использует ресурсы второго, второй — функции третьего и так далее. И если изменить что-то в одном проекте, код остальных под это подстроится по правилам вышеупомянутой инкрементальной компиляции.

Скриншот: Skillbox Media

Организовать рабочие области можно как угодно — программа запомнит их расположение и откроет в нужном порядке при следующем запуске редактора:

Скриншот: Skillbox Media

Темы

Светлые тёмные, цветные, вырвиглазные — в Eclipse есть темы на любой вкус. Нам, например, понравилось вот такое инопланетное оформление под названием «Плутон» — и нескучное, и глаза практически не режет. Посмотреть остальные темы можно в маркетплейсе Eclipse.

Тема Pluto для IDE Eclipse
Скриншот: Eclipse.org

Горячие клавиши

Известно, что настоящие профи работают в IDE без помощи мыши, одними только хоткеями. И хотя Eclipse далеко не Vim, у неё для этого есть все возможности. Например, с помощью комбинации Alt + Shift + R можно переименовать сразу несколько переменных в коде — это называется refactoring rename.

Переименовали переменную сразу везде с помощью комбинации Alt + Shift + R
Скриншот: Skillbox Media

Комбинаций, на самом деле, огромное множество. Почти любая кнопка на клавиатуре в сочетании с Ctrl и Shift вызывает какую-то функцию. Со временем горячие клавиши как бы оседают в пальцах и начинаешь решать почти любую проблему с помощью кнопок, как многорукий Шива :)

Хорошую шпаргалку по хоткеям в Eclipse можно найти здесь.

Перспективы

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

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

В этом примере открыта перспектива под отладку — система показывает, в каких участках кода есть проблемы
Скриншот: Skillbox Media

Контроль утечек памяти

А ещё в Eclipse есть утилита, которая анализирует Java-код на предмет утечек памяти — называется MAT (memory analyzer tool). Например, она может дать сигнал, если в приложении есть ненужные ссылки на объекты или слишком большие коллекции, а потом рассказать, как это исправить.

К слову, ничего подобного в IntelliJ даже близко нет. Так что шах и мат, JetBrains :)

Кодогенерация

В разработке бывают ситуации, когда спецификации к программе надо быстро перевести в готовый код. Проблема в том, что спецификации эти часто сложные, громоздкие и довольно однотипные. Чтобы как-то упростить и автоматизировать эту задачу, используют предметно-ориентированные языки (DSL) — они позволяют создавать шаблонный код на основе анализа текста.

В экосистеме Eclipse есть средство, которое позволяет создавать такие языки, — называется Xtend. Его можно поставить как отдельный плагин, а можно скачать готовую сборку с ним — Eclipse IDE for Java and DSL Developers.

Мы активно пользуемся кодогенерацией в Xtend для разработки заказных решений. Подробнее этот опыт я описывал в статье на «Хабре».

Переносимость

Так как Eclipse не интегрирована глубоко в систему, её можно со всеми плагинами упаковать в архив и довольно быстро перенести на другой компьютер. Причём делается это без всяких расширений, штатными средствами системы: через меню FileExport.

Интересное: как Eclipse взаимодействует с VS Code

Если вы пользуетесь Visual Studio Code, то наверняка знаете, что поддержку Java там можно «нарулить» буквально в два клика с помощью плагина (например, от Red Hat). И получить всё, что нужно для жизни: автодополнение, подсветку кода, компиляцию, дебаггинг и так далее.

Но мало кто знает, что поддержка Java в VS Code работает именно на базе Eclipse с помощью так называемого language server protocol (LSP). То есть сама по себе VS Code ничего про Java не знает: на неё ставится плагин, который запускает отдельный процесс «Eclipse без графического интерфейса» и предоставляет средства для работы с языком.

Ирония в том, что многим джавистам, использующим VS Code, не нравится Eclipse — мол, он не модный и вообще морально устарел. Ан нет: оказывается, это ещё вполне себе бодрый и боеспособный дедушка.

Со стороны кажется, будто VS Code знает, что делать с вашим Java-кодом, — но на самом деле ему подсказывает Eclipse
Скриншот: Skillbox Media

Недостатки среды

Эстетика. Eclipse не конкурент IntelliJ для ценителей прекрасного, то есть с точки зрения дизайна. Считается, что иконки у «Затмения» — некрасивые. А разработчики — люди с тонкой душевной организацией. Им подавай всё ламповое, красивое и эстетичное :)

Элементы интерфейс Eclipse выглядят довольно устаревшими в 2023 году
Скриншот: Skillbox Media

Скорость. Эти претензии у Eclipse с IntelliJ — взаимные. Первая быстрее справляется в одних задачах, вторая — в других. Сторонники Eclipse по-прежнему считают, что IntelliJ для работы нужно знать обо всех исходниках, которые подключены в проект. И в этот момент она ещё немного майнит биткоины, поэтому так тормозит.

Если Eclipse не хватает ресурсов, она может заблокировать окно и не давать совершить какое-то действие — примерно как Windows. Из-за этого в какие-то моменты ей может быть тяжеловато пользоваться.

Стабильность. Главным образом она страдает из-за уменьшения комьюнити — меньше людей контрибьютит в проект, меньше тестирует, меньше ищет ошибки. С другой стороны, серьёзных багов всё ещё почти не встречается — это всё-таки проект, который продолжает развиваться.

Сложность. Наверное, главный минус, из-за которого Eclipse немного в стороне от мейнстримных IDE. Дело в том, что среда совсем не интуитивно понятная — вам обязательно нужен человек, который проведёт по ней мастер-класс и расскажет, как пользоваться основными функциями.

В этом, кстати, и есть основное отличие Eclipse от IntelliJ — в последней всё достаточно просто и понятно даже при первом запуске. В Eclipse же — дополнительный уровень сложности с перспективами и окошками.

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

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

С поддержкой тоже полный порядок. Когда с каким-то из плагинов возникали сложности, моя команда обращалась за помощью в службу техподдержки и вопрос быстро решился. Более того, после ухода JetBrains из России Eclipse для многих компаний стал основным решением для работы с Java.

Что дальше

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

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

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Java-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована