Scala的工具现状是什么?

3

在过去的一年中,我听到了越来越多关于Scala语言的炒作。我知道有几个现有的项目计划与IDE集成支持Scala;然而,并不总是很清楚集成的质量如何。

他们目前是否支持像Java语言一样的Intellisense以及Eclipse和Netbeans呢?他们也支持即时验证吗?

6个回答

5
我个人无法对IntelliJ或NetBeans插件的稳定性进行评估(尽管我听说过一些好消息),但是Scala IDE for Eclipse最近发布了一个新版本,支持Scala 2.7.4。从架构上讲,这个版本与以前的版本有很大不同,它使用Equinox Aspects作为扩展JDT(和其他跨插件扩展)的官方支持机制。以前,Scala插件必须使用私有API和反射来欺骗系统正常运行,现在它只需声明其扩展点即可,让系统完成剩下的工作。很难描述这使事情变得更加稳定的程度。我并不是说现在就是完美的,但是如果您以前尝试过并拒绝了该插件(就像我一样),那么现在是时候重新考虑了。
至于功能方面如何比较,SDT没有任何重构支持(IntelliJ有一些基本的功能,例如“重命名”),编辑器也不会执行某些操作,例如“标记出现次数”。然而,它具有比NetBeans更好的概述,比IDEA更好的编译器支持,以及非常好的语义高亮。这三个插件都支持内容辅助(或者像Microsoft所称的“智能感知”),但目前它们都不是特别可靠。Scala IDE for Eclipse是唯一支持增量编译(alla Eclipse的Java工具)的插件。
我的建议:四处看看,尝试所有三个插件,看看哪个最适合您。根据我听到的消息,Scala IDE for Eclipse在最新版本中超越了竞争对手,但其他插件也表现出了如此稳定和持续进步的特点,因此不能轻视它们。

不幸的是,我认为Eclipse插件甚至没有Java所拥有的“构建可执行jar”功能。Netbeans插件具备该功能,这对我来说是胜利者。 - Rayne
3
即使在Java项目中,我从不使用Eclipse创建JAR文件。这不是因为我不信任IDE......实际上,是的。我的观点是:如果你的项目足够重要以至于值得使用JAR文件,那么它也足够重要以至于值得拥有一个适当的构建系统。只需要四行简短的代码就可以创建一个Buildr构建脚本来处理所有的Scala构建需求(包括JAR文件),那么为什么不把它解决掉呢? - Daniel Spiewak
如果我只是在编写一个简单的项目,并希望分发它,以便人们可以轻松地使用它,而不必编写shell脚本等等,那么有一个“构建”按钮可点击是很好的。 - Rayne

3
这里有一个类似的问题:哪个是最适合Scala开发的IDE? 在我非常短暂地使用Eclipse的Scala IDENetbeans的Scala插件的经验中,Netbeans插件似乎比Eclipse插件更加稳定。
在使用Scala IDE for Eclipse时,我遇到了运行Hello World类型的Scala对象的问题,有时语法高亮也会出现问题。然后,我尝试了Netbeans插件,它似乎比Eclipse插件更加实用。
我没有深入使用过任何一个Scala IDE插件,所以我不能根据很多经验来表达我的看法,但仅从我的初步印象来看,Netbeans插件似乎比Eclipse插件更加稳定。

是的,我看到了另一个问题,但基本上只是人们投票支持其中一个。我更感兴趣的是他们的详细实际经验或实践。感谢您的反馈! :)听起来Netbeans项目更成熟,并且发展速度也稍微快一些。 - jsight
这可能在几年前是正确的,但今天并不正确。Eclipse插件非常高效。 - James Moore

3

目前,所有三个主要的IDE都在支持方面处于大致相同的水平。

  • IntelliJ - 插件有时会完全不工作,但其他情况下表现相当不错。自v8以来,在Linux上底层平台变得缓慢。
  • Eclipse - 插件正在接受大量支持,并且正在积极开发中。
  • NetBeans - 在我看来,插件比Eclipse更好一些,但无法运行任意文件是一个主要的缺点。

以上所有软件都无法在所有上下文中解析AST。例如,通过混合特征和隐式定义,很容易让它们混淆。当IDE建议存在语法错误时,不能完全信任它。要确保,请退回到编译器。


3

我非常喜欢使用IntelliJ IDEA 8.1及其Scala插件,并且可以推荐它。甚至它还有一个路线图,你可以通过投票来影响你最喜欢的缺失功能 :) 不幸的是,我没有使用其他IDE的Scala支持的经验。


0
我正在使用Eclipse Scala插件。 它相当不错,但与Java工具的水平还不同。

-2
关于IntelliJ,我不知道。 但是在Eclipse和Netbeans之间,我必须说Netbeans,尤其是如果你不想用maven换sbt,并且你想要一个不会妨碍maven的IDE。
Netbeans对maven的支持非常好。
Netbeans的scala编辑器也工作得很好。 我不关心netbeans中集成的scala开发工具包或编译器插件,或任何类似的辅助工具。我只期望netbeans能做到以下三点: (a) 不妨碍maven运行我的构建 (b) 给我一个像样的编辑器 (c) 让我从我的.scala文件中深入到由我的maven依赖引用的库的源代码中。
Netbeans能够很好地满足这三个要求,即使有时候感觉有点慢。
我可以说的是: (1) 你不会遇到任何编译问题,因为这个任务交给了maven。 maven编译器插件有点慢。但是编译scala和java总是这样痛苦的。不过,如果你尝试过将java编译为javascript的GWT,那就更加痛苦了。

(2) Netbeans 可以完美地解析出你的 Maven 依赖源代码,你可以深入到最晦涩的 Scala 操作符,例如 Lift 的 CSS 映射器。

至于 Eclipse,Eclipse 的 Maven 集成一直很糟糕。 如果你有一个具有太多依赖和模块的大型项目,Netbeans 的 Maven 集成可能会变得非常糟糕。然后,Netbeans 所做的外部更改检查就会变得可怕缓慢。这是 Netbeans 的缺点。

然而,如果你是 SBT 的粉丝...那么答案可能会有所不同。

但对我来说,自从 Maven 成为今天的事情以来,我再也不想回到那些“Web 应用程序项目”、“库项目”等向导式选项,这些选项在创建 IDE 中的新项目时都会出现。 我只想要“Maven 项目”,请通过读取 pom 文件来确定我的输出工件。


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