Eignung von Emacs als Java-Entwicklungs-IDE


22

Ich mache noch einen weiteren Versuch, auf Emacs umzusteigen. Ich bin ein anständiger Vi-Benutzer, benutze aber Eclipse für die meisten meiner Entwicklungsarbeiten in den letzten 10+ Jahren (ist es so lange her).

Also habe ich ein bisschen nachgelesen und gedacht, dass JDEE der richtige Weg ist - ich habe es konfiguriert, habe aber noch einige grundlegende Fragen.

Aber nach einigen Nachforschungen scheint JDEE nicht gut gewartet zu sein und ich brauche vielleicht nur CEDET?

Also frage:

  1. Kann Emacs als Eclipse-Ersatz dienen? Ich organisiere meinen Build mit Maven?
  2. Wenn "1" ist, mit welcher Tool-Suite soll ich dann beginnen: CEDET? JDEE?

Vielen Dank.


4
Emacs ist ein großartiger Editor, aber keine großartige Java-IDE. Sie werden enttäuscht sein.
Thorbjørn Ravn Andersen

Antworten:


20

Ich werde konservativ sein und nein sagen , Emacs ist kein direkter Ersatz für Eclipse (besonders nicht sofort ). Dies bedeutet jedoch nicht, dass es nicht für die Java-Entwicklung geeignet ist.

Da Sie bereits mit Eclipse vertraut sind, empfehle ich Ihnen einen Blick auf eclim:

Eclim bietet die Möglichkeit , die Zugriff auf Eclipse - Code Bearbeitung Funktionen (Code - Vervollständigung, Suche, Code - Validierung, und viele mehr ) über die Kommandozeile oder eine lokale Netzwerkverbindung, so dass diese Funktionen mit Ihrem bevorzugten Editor integriert werden.

Eclim unterstützt Maven . Die Integration mit Emacs erfolgt über ein Paket namens emacs-eclim. Befolgen Sie die Schritte in der emacs-eclim README-Datei , um es zu installieren 1 :

  1. Laden Sie eclim herunter und installieren Sie es.

  2. Installieren Sie emacs-eclim:

    • Wenn Sie es noch nicht getan haben, fügen Sie MELPA hinzu zu package-archives:

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

    • Werten Sie den obigen Code aus (indem Sie C-x C-emit dem Punkt nach dem letzten schließenden Paren drücken) oder starten Sie Emacs neu.

    • Installieren Sie, emacs-eclimindem Sie tun M-x package-install RET emacs-eclim RET.
  3. Fügen Sie der Init-Datei den folgenden Code hinzu:

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

1 Anweisungen geändert, um nur eine einzige Installationsmethode zu enthalten.


1
vielen dank für die antwort - ich kenne mich mit eclim aus, aber ich versuche, mich von eclipse zu lösen, weil es aufgedunsen ist - obwohl ich es zu schätzen weiß, dass dies ein guter übergangsschritt ist.
user1172468

1
Also Frage: Sagen Sie, wenn es eclim nicht gibt, was wäre Ihre Empfehlung?
user1172468

Lerne dann zu leben, ohne umzugestalten.
Wasamasa

2
@ user1172468 Es kommt darauf an - Welche Arten von Funktionen möchten Sie? Ein ausgewachsener Ersatz für Eclipse wird unweigerlich etwas Aufblähung enthalten. Wenn Sie davon Abstand nehmen möchten, sollten Sie eine Liste spezifischer Anwendungsfälle erstellen und prüfen, ob (a) Emacs diese sofort unterstützt und / oder (b) ein Add-On-Paket zur Verfügung steht relevante Funktionalität. Wir können Ihnen dabei helfen, aber nur , wenn Sie uns in Ihren lassen must-have Funktionen :)
itsjeyd

1
Es sollte beachtet werden, dass Sie mit Eclim Eclipse ohne das GUI-Zeug ausführen können, was weniger Ressourcen verbraucht. Eine andere Sache bei Eclim ist, dass die automatische Vervollständigung nicht verwendet werden kann (der Puffer muss gespeichert werden, bevor der Abschluss angefordert wird + der Editor wird gesperrt, während auf eine Antwort gewartet wird).
wvxvw

11

Emacs / eclim war in den letzten Jahren meine primäre Java-IDE und funktioniert auch mit großen Codebasen einwandfrei (mein aktueller emacs / eclim-Arbeitsbereich enthält mehr als 4000 Java-Dateien). Emacs-eclim erfordert zwar, dass die Datei gespeichert wird, bevor sie aufgerufen wird eclimd, aber es ist kein so großes Problem, IMO. Die Bearbeitungserfahrung ist immer noch gut und der Debugger (mit gud) ist in Ordnung.

Wenn Sie alle auf Eclipse basierenden Lösungen erneut senden, würde ich den Malabar-Modus empfehlen . Ich habe das auch ein paar Jahre lang benutzt (bevor ich zu emacs-eclim gewechselt bin) und es hat einige nette Funktionen, von denen die Tatsache ist, dass es bei jedem Maven-Projekt sofort funktioniert. Wenn Sie Maven verwenden, erhalten Sie malabar-modesofort automatische Vervollständigung und Code-Navigation (unter anderem). Mit malabar habe ich jdibug zum Debuggen von Remote-Java-Prozessen verwendet.

Das älteste Java-Paket für Emacs, JDEE , ist möglicherweise ebenfalls einen Besuch wert. Hier finden Sie viele IDE-Funktionen, die in pure elisp implementiert sind (oder begleitende Java-Programme, die über gestartet wurden bsh), aber das letzte Mal, als ich es verwendet habe, war es ziemlich veraltet. Ich kann mich irren, aber als ich das letzte Mal nachgesehen habe, war JDEE am besten für Java <= 1.4 geeignet und der Debugger, der am besten damit funktionierte, war jdb(die anderen waren zu langsam).

Unabhängig davon, für welches Java-Paket Sie sich entscheiden, würde ich Projectile auch für viele projektbezogene Vorteile einsetzen.


8

Zu diesem Zeitpunkt (2018) ist LSP Java ( https://github.com/emacs-lsp/lsp-java ) ziemlich gut. Einige der Features:

  1. Autovervollständigen
  2. Refactoring (Methode extrahieren, umbenennen, Schnittstelle implementieren, lokal extrahieren, Konstante extrahieren usw.)
  3. Automatischer Import
  4. Code-Navigation während der Arbeit an mehreren Projekten
  5. Suchen Sie Referenzen, Implementierungen, offenen Typ.
  6. Maven / Gradle-Projektimport, automatische Erstellung, automatische Aktualisierung der Projektkonfiguration
  7. Einfach einzurichten
  8. Formatiererpräferenz
  9. Flycheck-Unterstützung + Schnellkorrekturen wie "Add cast", "Surround with try / catch" usw.

Das Hauptverkaufsargument ist, dass es Vollzeitentwickler gibt, die an dem LSP-Java-Backend https://github.com/eclipse/eclipse.jdt.ls arbeiten, das fast jede Woche neue Funktionen hervorbringt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.