Adéquation d'Emacs en tant qu'IDE de développement Java


22

Je fais encore une autre tentative de conversion vers Emacs. Je suis un utilisateur décent de Vi, mais j'utilise Eclipse pour la plupart de mes travaux de développement depuis plus de 10 ans (cela fait-il si longtemps).

J'ai donc fait quelques lectures et j'ai pensé que JDEE était la voie à suivre - le faire configurer mais avoir encore quelques questions de base.

Mais, après avoir fait plus de recherches - il semble que JDEE ne soit pas bien entretenu et peut-être que je n'ai besoin que de CEDET?

Alors question:

  1. Emacs peut-il me remplacer Eclipse? -Je organiser ma build en utilisant Maven?
  2. Si "1" est oui, quelle suite d'outils dois-je commencer par: CEDET? JDEE?

Merci.


4
Emacs est un excellent éditeur, mais pas un excellent IDE Java. Vous serez déçu.
Thorbjørn Ravn Andersen

Réponses:


20

Je vais être conservateur et dire non , Emacs n'est pas un remplacement direct pour Eclipse (surtout pas prêt à l'emploi). Cependant, cela ne signifie pas qu'il n'est pas adapté au développement Java.

Puisque vous connaissez déjà Eclipse, je vous suggère de jeter un œil à eclim:

Eclim offre la possibilité d'accéder aux fonctionnalités d'édition de code Eclipse (complétion de code, recherche, validation de code, etc. ) via la ligne de commande ou une connexion réseau locale, permettant à ces fonctionnalités d'être intégrées à votre éditeur préféré.

Eclim prend en charge Maven . Il s'intègre à Emacs via un package appelé emacs-eclim. Suivez les étapes décrites dans le emacs-eclim fichier README pour l'installer 1 :

  1. Téléchargez et installez eclim.

  2. Installer emacs-eclim:

    • Si ce n'est pas déjà fait, ajoutez MELPA à package-archives:

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

    • Évaluez le code ci-dessus (en appuyant sur C-x C-eavec le point positionné après la dernière paren de fermeture) ou redémarrez Emacs.

    • Installez emacs-eclimen faisant M-x package-install RET emacs-eclim RET.
  3. Ajoutez le code suivant à votre fichier init:

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

1 Instructions modifiées pour n'inclure qu'une seule méthode d'installation.


1
merci beaucoup pour la réponse - je connais eclim, mais j'essaie de m'éloigner de l'éclipse à cause de son ballonnement - bien que j'apprécie que c'est une bonne étape de transition.
user1172468

1
Alors question: dites si eclim n'existait pas, quelle serait votre recommandation?
user1172468

Apprenez à vivre sans refactoring alors.
wasamasa

2
@ user1172468 Cela dépend - Quels types de fonctionnalités voulez-vous? Un remplacement complet pour Eclipse contiendra inévitablement un peu de ballonnement. Si vous voulez vous éloigner de cela, votre meilleur pari est de dresser une liste de cas d'utilisation spécifiques et de vérifier si (a) Emacs les prend en charge prêts à l'emploi et / ou (b) il existe un package complémentaire qui fournit fonctionnalités pertinentes. Nous pouvons vous aider avec cela, mais seulement si vous nous indiquez vos fonctionnalités indispensables :)
itsjeyd

1
Il convient de noter qu'avec Eclim, vous pouvez exécuter Eclipse sans l'interface graphique, qui utilisera moins de ressources. Une autre chose à propos d'Eclim est que son autocomplétion n'est pas utilisable (il doit enregistrer le tampon avant de demander l'achèvement + il verrouille l'éditeur en attendant la réponse).
wvxvw

11

Emacs / eclim a été mon principal IDE Java au cours des deux dernières années et dirait qu'il fonctionne bien, même avec de grandes bases de code (mon espace de travail emacs / eclim actuel contient plus de 4000 fichiers Java). Il est vrai qu'emacs-eclim nécessite que le fichier soit enregistré avant de faire son appel eclimd, mais ce n'est pas un gros problème OMI. L'expérience d'édition est toujours bonne et le débogueur (en utilisant gud) est ok.

Si vous n'aimez pas toutes les solutions basées sur Eclipse, je recommanderais le mode Malabar . Je l'ai également utilisé pendant quelques années (avant de passer à emacs-eclim) et il a de belles fonctionnalités, en plus de cela, il fonctionne dès le départ avec n'importe quel projet Maven. Si vous utilisez Maven, vous malabar-modeobtiendrez instantanément la saisie automatique et la navigation par code (entre autres). Avec malabar, j'ai utilisé jdibug pour déboguer des processus Java distants.

Le plus ancien package Java pour Emacs, JDEE , pourrait également être intéressant à vérifier. Ici, vous trouverez de nombreuses fonctionnalités IDE implémentées dans pure elisp (ou les programmes Java associés lancés via bsh), mais la dernière fois que je l'ai utilisé, c'était assez daté. Je peux me tromper, mais la dernière fois que j'ai vérifié, JDEE était le mieux adapté pour Java <= 1.4 et le débogueur qui fonctionnait le mieux avec lui l'était jdb(les autres étaient trop lents).

Enfin, quel que soit le package Java que vous choisissez, je jetterais également Projectile pour beaucoup de bienfaits liés au projet.


8

À ce stade (2018), LSP Java ( https://github.com/emacs-lsp/lsp-java ) est plutôt bon. Peu de fonctionnalités:

  1. Saisie automatique
  2. Refactoring (extraire la méthode, renommer, implémenter l'interface, extraire local, extraire constante et ainsi de suite.)
  3. Importation automatique
  4. Navigation dans le code tout en travaillant sur plusieurs projets
  5. Trouvez des références, des implémentations, du type ouvert.
  6. Importation de projet Maven / Gradle, construction automatique, mise à jour automatique de la configuration du projet
  7. Facile à installer
  8. Préférence de formatage
  9. Prise en charge de Flycheck + correctifs rapides comme "Ajouter un casting", "Surround avec try / catch", etc.

Le principal argument de vente est qu'il existe des développeurs à temps plein travaillant sur le backend LSP Java https://github.com/eclipse/eclipse.jdt.ls, qui propose de nouvelles fonctionnalités presque chaque semaine.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.