Emacs作为Java开发IDE的适用性


22

我还在尝试转换为Emacs。我是一位体面的Vi用户,但是过去10多年(我用了这么长时间)一直在大多数开发工作中使用Eclipse。

因此,我进行了一些阅读,并认为JDEE是必经之路-配置它,但仍然存在一些基本问题。

但是,在进行了更多研究之后,似乎JDEE可能无法得到很好的维护,也许我只需要CEDET?

所以问题:

  1. Emacs可以代替我的Eclipse吗?我使用Maven组织构建吗?
  2. 如果“ 1”是,那么我应该从哪套工具开始:CEDET?JDEE?

谢谢。


4
Emacs是出色的编辑器,但不是出色的Java IDE。您会失望的。
托尔比约恩Ravn的安德森

Answers:


20

我要保守,并说没有,Emacs是不是一个下拉更换为Eclipse(尤其是不开箱)。但是,这并不意味着它不适合Java开发。

由于您已经熟悉Eclipse,因此建议您看一下eclim

Eclim提供了通过命令行或本地网络连接访问Eclipse代码编辑功能(代码完成,搜索,代码验证)的功能,从而可以将这些功能与您喜欢的编辑器集成在一起。

Eclim 支持Maven。它通过名为的软件包与Emacs集成emacs-eclim。请按照emacs-eclim 自述文件中概述的步骤进行安装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修改说明以仅包括一种安装方法。


1
可能非常感谢您的回答-我熟悉eclim,但是由于它膨胀,我正试图摆脱eclipse-尽管我确实感谢这是一个很好的过渡步骤。
user1172468

1
那么问题来了:说如果eclim不存在,您的建议是什么?
user1172468

学会生活而不重构。
wasamasa

2
@ user1172468这取决于-您想要什么类型的功能?Eclipse的全面替代将不可避免地包含一些膨胀。如果您想避免这种情况,最好的选择是列出特定用例,并检查(a)Emacs是否开箱即用和/或(b)有一个附加软件包可提供相关功能。我们可以为您提供帮助,但
前提

1
应该注意的是,使用Eclim,您可以在不使用GUI的情况下运行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进程。

Emacs最早的Java软件包JDEE也可能值得一试。在这里,您会发现许多以纯elisp(或通过发行的随附Java程序bsh)实现的IDE功能,但是上次我使用它的时间过长。我可能会弄错了,但是上一次我检查时,JDEE最适合Java <= 1.4,而使用它效果最好的调试器是jdb(其他的速度太慢)。

最后,无论您选择哪种Java包,我都会把Projectile放在很多与项目相关的优点上。


8

此时(2018年),LSP Java(https://github.com/emacs-lsp/lsp-java)相当不错。几个功能:

  1. 自动完成
  2. 重构(提取方法,重命名,实现接口,提取本地,提取常量等。)
  3. 自动导入
  4. 在多个项目上工作时的代码导航
  5. 查找参考,实现,开放类型。
  6. Maven / Gradle项目导入,自动构建,自动项目配置更新
  7. 易于设置
  8. 格式化程序首选项
  9. Flycheck支持+快速修复,例如“添加演员”,“尝试/捕获周围”等。

主要卖点是,有全职开发人员在LSP Java后端https://github.com/eclipse/eclipse.jdt.ls上工作,几乎每个星期都会带来新功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.