2010年初有哪些好的Scala集成开发环境(IDE)?

21
我知道这是一个完全的重复问题,但一年过去了,Scala似乎发展很快,所以我想再问一次:

现在最好的Scala开发IDE是什么?


1
主观和争议性较强,最好询问“有什么好的...”而不是“什么是最好的...”。 - Binary Worrier
4
修改了标题。如果它能帮助保持问题开放,那么这并不是一个问题。 - Jens Schauder
5个回答

17

我知道Eclipse插件还在开发过程中,正在为Scala 2.8进行完全重写,但我最近看到一位同事使用了一个夜间构建版本,效果非常差。

我使用的是IntelliJ IDEACommunity Edition 9是免费的),它的Scala插件非常好。语法高亮、代码导航等方面都很出色。虽然不及Java支持那么好,但我也不会指望它能达到那个水平。但它已经足够好,让我感觉比用Java更加高效了!

它还有Specs集成和控制台集成功能。


2
我同意关于Eclipse §$%&/()的看法。我已经在考虑转换到Notepad++或其他编辑器了。很高兴听到IntelliJ更好。 - Jens Schauder
就个人经验而言,IntelliJ非常不直观且难以使用。至少自动完成功能可以直接使用(不像Eclipse),但我仍然在努力在IntelliJ中运行“hello world”程序(尽管编译过程非常顺利)。 - Alex R
2
@Alex R - 我认为这是一个相当不公平的观察:它与Eclipse不同,因此可能会显得不直观,因为你习惯了某些范式。我也看不出为什么你不能运行hello world:按下CTRL+SHIFT+F10将运行当前作用域中的任何内容。 - oxbow_lakes
IntelliJ IDEA在Scala 2.8和CPS方面完全失败了。一般来说,Scala在eclipse中更好且更深度集成。然而,在IDEA中它更加稳定... - hotzen
我不认为 IDEA 是“一切都正常”的,但它是可用的。然而,我通过 Maven 编译 Scala。用户体验也和(几乎)任何 Java IDE 一样好。例如,有时它找不到错误,或者将一个必要的导入标记为未使用,这是隐式转换所必需的。 - v6ak

16

我尝试过 Eclipse、NetBeans 和 IntelliJ IDEA。

  • Eclipse 在我看来是最糟糕的。它很慢,有时会弄乱语法高亮,几乎总是弄乱自动完成,并且整个 IDE 有时会变得无响应。我不建议除了自虐之外任何类型的使用。
  • NetBeans 比 Eclipse 插件更好用。更好的高亮显示,更好的自动完成,但它一直在报告源代码中所有复杂语法的错误。但是当我点击运行时,代码编译得非常好。不知道为什么。另一个问题是,当你在类的主体内写作时,自动完成不能建议类的私有成员。很差!
  • IntelliJ IDEA 工作得非常好。如果你真的倾向于 Scala 开发,我会推荐这个。

我希望 Eclipse 插件会随着时间的推移变得更加成熟,但考虑到它有足够的时间来成熟,我不太喜欢这个想法。Scala具有巨大的潜力,它是一种经过深思熟虑的程序员友好型语言,运行于 JVM 上(这意味着高性能和高可用性),但糟糕的 IDE 支持是这种语言最糟糕的事情。在简单的文本编辑器上编写 PHP 是可以接受的,但对于 Scala 来说,具有如此复杂的语法和使用臃肿的 Java 库的要求,需要一些帮助。也许当前的 Scala 社区(拥有函数式和Java背景)无法理解这一点,但你不能指望新手立即轻松地采用这种语言。

无论如何,选择 IntelliJ IDEA ...


4
Eclipse的问题在于它内部使用scalac进行语法高亮。因此,如果你的代码无法编译,它就无法得到正确的高亮显示! - oxbow_lakes
谢谢提供信息。显然,这不是实现高亮的最佳方式 :)。 - Ekin Koc
1
我认为Eclipse插件在语法高亮方面使用了这个(非scalac):http://lampsvn.epfl.ch/trac/scala/browser/scala-plugin/trunk/src/scala/tools/eclipse/ScalaCodeScanner.scala - Matt R

10

你的主要选择是像IntelliJ IDEA、NetBeans或Eclipse这样完整的IDE,或者带有一些Scala意识的文本编辑器,例如TextMate或Emacs。

个人而言,我最喜欢IntelliJ。我用它进行Java开发已经很多年了,特别是因为它的重构和代码导航功能。Scala插件一开始相当粗糙,但不断改进。它是开源的,我一直在贡献错误报告和一些错误修复。

IDE插件一直在努力准备Scala 2.8版本。在过去的6个月中,这一目标一直在变化,尤其是在添加了新功能的同时打破了二进制兼容性。因此,您可能会升级到编译器的新版本,然后等待支持库(例如specs、scalatest)的更新和重新编译。

现在Scala 2.8 Beta即将发布,这些问题就会更少了。

IntelliJ实现了自己的解析器和类型推断,就像Java一样。这使得它对错误更加宽容,并且在您编辑代码时可以立即理解您的代码。类型推断尚未完全完成。Eclipse将大部分工作委托给scalac,这意味着它们应该始终保持一致,但信息仅在保存文件并重新运行编译器时才会重新生成。我不知道NetBeans在这方面是如何工作的。


5

现在,IntelliJ的IDEA。和一年前的一个重要区别是,现在有一个免费的开源版本可用。

个人而言,我使用的是IDEA CE 9.0.1,但编译和测试交由另一个窗口上运行的SBT处理,使用cc~test命令。


1
IDEA + SBT确实非常好。通常,SBT的构建速度比IDEA的“make”命令要快得多。但是,在某些奇怪的情况下,IDEA的Scala“make”命令中的固定开销超过了SBT对哪些文件实际上需要重新编译的保守确定。 - Randall Schulz

5
在2.8的环境下,我使用了带有晚间插件的Eclipse 3.5.x和IDEA Community Edition 9.0。对我来说,除了编译时间以外,IDEA表现得更好。但是我同时使用sbt来处理这个问题。
我对Eclipse插件的主要问题是:
- 无法更改选项卡设置(尽管其他人似乎可以) - 代码编译,但仍会突出显示一些错误,需要关闭并重新打开文件 - 自动完成只返回很多选择
在最近的插件0.3.385中,我在IDEA 9.0版本#IC-93.13中没有遇到这些问题。此外,IDEA还向我显示未使用的导入语句。
所有插件似乎都在快速发展,并且正在积极开发,我认为今天的真相可能在一个月后就不再适用。我希望几个月后,我们将能够使用我们喜欢的IDE并拥有良好的Scala支持。(请注意,这是我的最新答案原始问题的转贴。)

这个 SBT 是什么?长时间的构建和应用程序启动时间让我很烦恼。 - ziggystar
未使用的导入非常无用,因为它们不能正确跟踪隐式导入。也就是说,如果一个导入引入了一个你使用的隐式转换,IDEA会错误地将该导入标记为未使用。 - oxbow_lakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接