Przydatność Emacsa jako środowiska programistycznego Java

22

Podejmuję kolejną próbę przejścia na Emacsa. Jestem przyzwoitym użytkownikiem Vi, ale korzystam z Eclipse przez większość moich prac programistycznych przez ostatnie 10 lat (tak długo).

Przeczytałem więc trochę i pomyślałem, że JDEE jest właściwą drogą - skonfiguruj go, ale wciąż mam kilka podstawowych pytań.

Ale po przeprowadzeniu dalszych badań - wydaje się, że JDEE może nie być dobrze utrzymane i być może potrzebuję tylko CEDET?

Więc pytanie:

  1. Czy Emacs może służyć jako mój zamiennik Eclipse? Organizuję swoją kompilację za pomocą Maven?
  2. Jeśli „1” to tak, od jakiego zestawu narzędzi powinienem zacząć: CEDET? JDEE?

Dzięki.

użytkownik1172468
źródło
4
Emacs to świetny edytor, ale nie świetny IDE Java. Będziesz rozczarowany.
Thorbjørn Ravn Andersen

Odpowiedzi:

20

Będę konserwatywny i powiem nie , Emacs nie zastępuje Eclipse (zwłaszcza nie po wyjęciu z pudełka). Nie oznacza to jednak, że nie nadaje się do programowania Java.

Ponieważ znasz już Eclipse, proponuję spojrzeć na eclim:

Eclim zapewnia dostęp do funkcji edycji kodu Eclipse (uzupełnianie kodu, wyszukiwanie, sprawdzanie poprawności kodu i wiele innych ) za pośrednictwem wiersza poleceń lub połączenia sieci lokalnej, umożliwiając zintegrowanie tych funkcji z ulubionym edytorem.

Eclim wspiera Maven . Integruje się z Emacsem za pośrednictwem pakietu o nazwie emacs-eclim. Wykonaj kroki opisane w emacs-eclim README, aby zainstalować 1 :

  1. Pobierz i zainstaluj eclim.

  2. Zainstaluj emacs-eclim:

    • Jeśli jeszcze tego nie zrobiłeś, dodaj MELPA do package-archives:

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

    • Oceń powyższy kod (naciskając C-x C-ez punktem ustawionym za ostatnim zamykającym paren) lub uruchom ponownie Emacsa.

    • Zainstaluj emacs-eclimwykonując M-x package-install RET emacs-eclim RET.
  3. Dodaj następujący kod do pliku init:

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

1 Instrukcje zmodyfikowane, aby obejmowały tylko jedną metodę instalacji.

itsjeyd
źródło
1
może wielu dziękuję za odpowiedź - znam eclim, jednak staram się uciec od zaćmienia z powodu jego wzdęcia - choć doceniam, że jest to dobry krok przejściowy.
user1172468,
1
Więc pytanie: powiedz, gdyby eklim nie istniał, jaka byłaby twoja rekomendacja?
user1172468,
Naucz się wtedy żyć bez refaktoryzacji.
wasamasa
2
@ user1172468 To zależy - Jakiego rodzaju funkcji chcesz? Pełnowymiarowy zamiennik Eclipse nieuchronnie zawiera trochę wzdęć. Jeśli chcesz odejść od tego, najlepiej postawić listę konkretnych przypadków użycia i sprawdzić, czy (a) Emacs obsługuje je po wyjęciu z pudełka i / lub (b) istnieje pakiet dodatków, który zapewnia odpowiednia funkcjonalność. Możemy Ci w tym pomóc, ale tylko wtedy, gdy wpuścisz nam swoje niezbędne funkcje :)
itsjeyd
1
Należy zauważyć, że dzięki Eclim możesz uruchomić Eclipse bez GUI, co zużywa mniej zasobów. Inną rzeczą w Eclim jest to, że jego autouzupełnianie nie jest użyteczne (musi zapisać bufor przed zażądaniem uzupełnienia + blokuje edytor podczas oczekiwania na odpowiedź).
wvxvw
11

Emacs / eclim był moim podstawowym środowiskiem Java IDE przez ostatnie kilka lat i powiedziałbym, że działa dobrze, nawet z dużymi bazami kodu (mój obecny obszar roboczy emacs / eclim ma ponad 4000 plików Java). To prawda, że ​​emacs-eclim wymaga, aby plik został zapisany przed wywołaniem eclimd, ale nie jest to taki duży problem IMO. Edycja jest nadal dobra, a debugger (za pomocą gud) jest w porządku.

Jeśli nie podoba ci się wszystkie rozwiązania oparte na Eclipse, poleciłbym tryb Malabar . Używam tego również przez kilka lat (zanim przełączyłem się na emacs-eclim) i ma kilka fajnych funkcji, z których najważniejsze jest to, że działa od razu z każdym projektem Maven. Jeśli użyjesz Maven, malabar-modenatychmiast zapewni automatyczne uzupełnianie i nawigację po kodzie (między innymi). W przypadku malabara użyłem jdibug do debugowania zdalnych procesów Java.

Warto również sprawdzić najstarszy pakiet Java dla Emacsa, JDEE . Tutaj znajdziesz wiele funkcji IDE zaimplementowanych w czystym elisp (lub towarzyszących programach Java uruchamianych za pośrednictwem bsh), ale ostatnim razem, gdy go użyłem, było dość przestarzałe. Mogę się mylić, ale kiedy ostatnio sprawdzałem, JDEE najlepiej pasowało do Javy <= 1.4, a debuger, który działał najlepiej, to był jdb(inne były zbyt wolne).

Na koniec, niezależnie od tego, który pakiet Java wybierzesz, wrzuciłbym również Pocisk dla wielu zalet związanych z projektem.

skybert
źródło
8

W tym momencie (2018) LSP Java ( https://github.com/emacs-lsp/lsp-java ) jest całkiem dobra. Kilka funkcji:

  1. autouzupełnienie
  2. Refaktoryzacja (metoda wyodrębniania, zmiana nazwy, implementacja interfejsu, wyodrębnianie lokalne, wyodrębnianie stałej i tak dalej.)
  3. Automatyczny import
  4. Nawigacja kodu podczas pracy nad wieloma projektami
  5. Znajdź referencje, wdrożenia, typ otwarty.
  6. Import projektu Maven / Gradle, automatyczna kompilacja, automatyczna aktualizacja konfiguracji projektu
  7. Łatwy w konfiguracji
  8. Preferencje formatyzatora
  9. Obsługa Flycheck + szybkie poprawki, takie jak „Dodaj rzut”, „Surround z try / catch” itp.

Główną zaletą jest to, że są pełnoetatowi programiści pracujący nad backendem LSP Java https://github.com/eclipse/eclipse.jdt.ls, który wprowadza nowe funkcje prawie co tydzień.

Ivan Dimitrov Yonchovski
źródło