之前有个帖子 ,不过我感觉我问得更具体一点,还是另开帖说,现在的方案似乎有:
lsp-mode + company-lsp
meghanada
spacemacs的java layer : This layer adds support for the Java language using the Eclim client/server. 用的eclim(“eclipse+vim”) develop branch 已经可以在meghanada/ensime/eclim中选择后端
伸一下手,还请用过的坛友说说,这三个功能是覆盖面是一样的?还是各有侧重?什么样的组合比较好用呢?
2 个赞
我个人的限制,由于公司的环境,大家JAVA 基本用POM来进行配置。
spacemacs java layer 支持三种,eclim/meghanada/ensime
我个人的尝试:
eclim, 感觉写代码有明显卡顿,不太能忍受;
我写scala,用sbt配置文件,用ensime非常舒服,速度极快,体验比在IntelliJ下好一点;但java 中用pom配置文件的情况下,ensime没有配置成功,总有各种问题。ensime对pom的支持有限。
用meghanada,spacemacs在develop分支中推荐这个。写代码卡顿,但算能忍受,我之前会用它写java,复杂的语法分析用intelliJ,目前已经完全在intelliJ写java,会用emacs,结合project, magit, meghanada, ivy等浏览代码,及写小片段。
lsp-mode 没用过
以上是我目前的体验。我个人觉得ensime如果能在java中,不论sbt或者mvn,都流畅使用,就好了。
2 个赞
之前用过,首先我的配置,win10 pci-ssd.我一直都在找java的emacs layer,因为方便用org管日程.目前java属于弃坑的状态.
最早用的eclim,太大了,而且卡顿,开代码提示根本没法敲代码.放弃了.
然后开始用meghanada,一开始感觉很好用,没有发现卡顿问题.但是当打开引入的包比较多的项目的时候,由于代码提示的问题会导致整个emacs卡死.无奈只能写小项目.最近的版本把卡死的问题改好了,但是提示会变得有是有有时没有.因为emacs这边玩的不是很6.所以暂时也弃坑了.
现在主要的开发工作还是在IDEA里面做,emacs全屏占一整个屏幕.用多屏切换着用.emacs更多的是敲前端.
1 个赞
看来这几个 server 当中,ensime 性能最好。
对 Java 开发不了解。sbt 和 pom 不能共存/相互转换吗?这个工具 https://github.com/ensime/ensime-maven 用来做什么?
sbt, maven分别是scala, java的构建工具,用途(语言)不一样,就不存在转换[build tool配置文件]的问题了(转了也没用)。
这个链接是怎样配置ensime识别maven的工程配置来把ensime跑起来吧。
理论上,ensime 支持mvn(尽管功能不如sbt全面) 和 java.
但我就没有配置成功过。。。
放弃的姿势……
我是对java彻底放弃,而我们这儿已经没人用Emacs写Java了,全都投入IDEA的怀抱
2 个赞
刚刚试了一下 lsp-java ,服务端是 Eclipse JDT Language Server 。
补全很快,当然,这只是一个 helloworld,大一点的程序未必。内存占用不知算如何,没用过其它 server。
是否支持 POM 未知,我还没弄明白它怎么工作的。
同意,java那种用库远远多于基本语言功能的语言,还是用大型IDE吧
1 个赞
现在有了 lsp ,还是可以期待的。
Emacs 作好前端展示,把其它的锅甩给 lang-server。
当 lsp 一统江湖的时候,当 IDE 也只是 lsp 前端的时候,就无须再纠结 Emacs 还是 IDE 了。
1 个赞
LdBeth
2018 年2 月 23 日 15:19
11
讲个故事,Java 之父是第一个 Unix 版本 Emacs 的作者
1 个赞
看起来不错, 但我还没有尝试, 计划找个时间入坑看看. 最近从meghanada转为ensime (both for java and scala), java上还是存在定义跳转的缺陷等, 但速度上比meghanada能快一点.
3 个赞
是否用过 eclipse.jdt.ls ,这是 eclipse 官方的 lava language server,看它的介绍应该是比较完善的。但是在我这里表现不佳,不能补全 pom.xml 引入的包。是 Emacs 配置不正确吗?
(打算抽空把公司的 Java 项目过一遍,但我是个外行)
之前尝试了intellij-lsp, 还不错, 我这边用起来比较方便, 但需要下载intelliJ, 且不同project跳转的时候好像有点问题, 记不清楚了.
lsp-java 默认的server是eclipse提供, 我这边没有配置成功. 对lsp-ui感觉太过于冗余, 总是跳出来信息有些干扰写代码. 插一句, lsp-python, 我这边也一直没有配置好.
ensime 在java的项目上体验不佳, 远不如在scala上顺滑. 好像ensime本身现在更新的也较少了.
现在meghanada相当好用, 我基本不变了, 它也是目前spacemacs的默认. 跳转等很快, 经常更新维护.
zsxh
2018 年10 月 18 日 14:03
16
lsp-java 跟 meghanada 感觉差不多了, dap-mode 用来给 debug (dap-java debug 经常显示数组越界和json解析异常,还是不太稳,dap-python 感觉要好不少)
1 个赞
ztlevi
2018 年10 月 19 日 16:29
18
我试过,挺好用的,我也 一直在用,唯一的问题是它会把你的ide都窗口关掉,让我想 debug的时候有点烦。
请问你是怎么配置 intellij-lsp 的?我一直没有配置成功。
作者提供了一个参考
把它作为local layer 就可以了. 如果有问题, 就是作者对lsp-intellij 或是intellij-lsp命名不统一. 改一下就好.