Пригодность Emacs как среды разработки Java

22

Я делаю еще одну попытку перейти на Emacs. Я приличный пользователь Vi, но использую Eclipse для большинства моих разработок за последние 10 с лишним лет (это было так долго).

Поэтому я немного почитал и подумал, что JDEE - это то, что нужно - настроить его, но у меня все еще есть некоторые базовые вопросы.

Но после нескольких исследований - кажется, что JDEE не в хорошем состоянии и, возможно, все, что мне нужно, это CEDET?

Итак, вопрос:

  1. Может ли Emacs служить моей заменой Eclipse? Ли я организовать сборку с помощью Maven?
  2. Если «1» - это «да», то с какого набора инструментов мне следует начать: CEDET? JDEE?

Благодарю.

user1172468
источник
4
Emacs - отличный редактор, но не отличный Java IDE. Вы будете разочарованы.
Турбьерн Равн Андерсен

Ответы:

20

Я собираюсь быть консервативным и сказать нет , Emacs не является заменой Eclipse (особенно не из коробки). Однако это не означает, что он не подходит для разработки на Java.

Поскольку вы уже знакомы с Eclipse, я предлагаю вам взглянуть на eclim:

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

Эклим поддерживает Maven . Он интегрируется с Emacs через пакет под названием emacs-eclim. Следуйте инструкциям в emacs-eclim README, чтобы установить его 1 :

  1. Скачайте и установите eclim.

  2. Установить emacs-eclim:

    • Если вы еще этого не сделали, добавьте MELPA в package-archives:

      (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)

    • Оцените приведенный выше код (нажав C-x C-eна точку, расположенную после последнего закрывающего элемента) или перезапустите Emacs.

    • Установите emacs-eclim, делая M-x package-install RET emacs-eclim RET.
  3. Добавьте следующий код в ваш init-файл:

(require 'eclim)
(global-eclim-mode)

1 Инструкции изменены, чтобы включить только один метод установки.

itsjeyd
источник
1
может большое спасибо за ответ - я знаком с eclim, однако я пытаюсь уйти от затмения из-за его раздувания - хотя я действительно ценю, что это хороший переходный этап.
user1172468
1
Итак, вопрос: скажите, если eclim не существует, что бы вы посоветовали?
user1172468
Учитесь жить без рефакторинга тогда.
Васамаса
2
@ user1172468 Это зависит - какие функции вы хотите? Полноценная замена Eclipse неизбежно будет содержать некоторый раздув. Если вы хотите избежать этого, лучше всего составить список конкретных вариантов использования и проверить, (а) Emacs поддерживает их из коробки и / или (б) есть дополнительный пакет, который обеспечивает соответствующая функциональность. Мы можем помочь вам в этом, но только если вы дадите нам свои необходимые функции :)
itsjeyd
1
Следует отметить, что с Eclim вы можете запускать Eclipse без графического интерфейса, который будет использовать меньше ресурсов. Еще одна вещь, связанная с Eclim, заключается в том, что его автозаполнение невозможно использовать (необходимо сохранить буфер перед запросом завершения + он блокирует редактор во время ожидания ответа).
wvxvw
11

Emacs / eclim был моей основной Java IDE в течение последних нескольких лет, и я бы сказал, что он отлично работает, даже с большими базами кода (мое текущее рабочее пространство emacs / eclim имеет более 4000 файлов Java). Это правда, что emacs-eclim требует сохранения файла перед его вызовом eclimd, но это не такая уж большая проблема IMO. Опыт редактирования все еще хорош, и отладчик (использование gud) в порядке.

Если вы возмущаетесь всеми решениями, основанными на Eclipse, я бы порекомендовал режим Malabar . Я также использовал это в течение пары лет (до того, как перешел на emacs-eclim), и у него есть несколько приятных особенностей, в первую очередь это то, что он работает из коробки с любым проектом Maven. Если вы используете Maven, malabar-modeвы мгновенно получите автозаполнение и навигацию по коду (среди прочего). С malabar я использовал jdibug для отладки удаленных процессов Java.

Старейший пакет Java для Emacs, JDEE , также стоит проверить. Здесь вы найдете множество функций IDE, реализованных на чистом elisp (или сопровождающих Java-программах, запускаемых через bsh), но в прошлый раз, когда я использовал его, он был довольно устаревшим. Я могу ошибаться, но в прошлый раз, когда я проверял, JDEE лучше всего подходил для Java <= 1.4, и отладчик, который работал лучше всего с ним, был jdb(другие были слишком медленными).

И наконец, независимо от того, какой Java-пакет вы выберете, я бы также добавил Projectile для большого количества проектов, связанных с совершенством.

skybert
источник
8

На данный момент (2018) LSP Java ( https://github.com/emacs-lsp/lsp-java ) довольно хорош. Немного из особенностей:

  1. Автозаполнение
  2. Рефакторинг (метод извлечения, переименование, реализация интерфейса, извлечение локального, извлечение константы и т. Д.)
  3. Авто импорт
  4. Навигация по коду при работе над несколькими проектами
  5. Найти ссылки, реализации, открытого типа.
  6. Импорт проекта Maven / Gradle, автоматическая сборка, автоматическое обновление конфигурации проекта
  7. Простота установки
  8. Предпочтение форматера
  9. Поддержка Flycheck + быстрые исправления, такие как «Add cast», «Surround with try / catch» и т. Д.

Основной момент продажи состоит в том, что есть постоянные разработчики, работающие над бэкэндом LSP Java https://github.com/eclipse/eclipse.jdt.ls, который предлагает новые функции почти каждую неделю.

Иван Димитров Йончовски
источник