Scala 2.8适用哪个集成开发环境(IDE)?

40

这里是一个关于旧版Scala最佳IDE的问题,但是他们说Eclipse插件已经得到极大改进。现在它是否成为了最好的IDE?不同的Scala IDE之间如何比较?


IDEA得到了最好的评论,但我在尝试让它工作起来时遇到了很大的困难:https://dev59.com/tnE85IYBdhLWcg3wqlaE - Alex R
2010年1月的同一个问题:哪些是2010年初好用的Scala IDE? - Łukasz Lew
Eclipse Scala IDE现在得到Odersky的Scala Solutions支持,因此Eclipse越来越适合我的期望!我偏爱Eclipse! - kajo
17个回答

26

我在使用IDEA 9方面相当成功。我曾尝试过Netbeans和Eclipse,但无法得到我想要的效果。Eclipse的代码自动补全功能不如我所愿,并且我找不到让Netbeans处理Scala脚本的方法。它只会抱怨这个文件不是一个类。

需要说明的是,我已经使用了几年的Java开发工具IDEA,请记住这一点 :)


你还记得自己想要但没得到的东西吗? - Łukasz Lew
2
@Łukasz -- 在Netbeans中,似乎无法处理scala脚本,只能处理类。Eclipse的代码补全和语法高亮有些不稳定。有效的scala语句被标记为错误。再次说明,由于我对Netbeans或Eclipse并不是非常熟悉,所以可能是我配置有误。 - Sean
我目前建议使用最新的IDEA 9.0.2和其中一个夜间版本的Scala插件组合,可以从这里下载:http://confluence.jetbrains.net/display/SCA/Scala+Plugin+Nightly+Builds,例如构建#1289。 - sroebuck

13

目前来看,IntelliJ IDEA中的Scala插件是最好的。它能够很好地处理Scala 2.8。IntelliJ IDEA社区版现在是免费且开源的(并且与Scala配合使用),所以我无法想象不使用它的任何理由。

该插件仍然有一些小错误(许多“false negatives”,即没有红色下划线的代码可能不会成功编译;但几乎没有“false positives”),但完全可用。最棒的是,你可以使用IDEA的出色调试器与Scala配合使用(虽然可能会有一些问题,但它确实有效!)。

最新版本还支持FSC(快速Scala编译器),这可以极大地节省时间。

该插件开发团队非常敏感。其中一些人直接在JetBrains工作,并拥有关于IDEA平台的深入了解,因此开发进展迅速。


8

JetBrains IDEA的Scala插件可以同样很好地处理2.7和2.8。

由于我只使用过IDEA,因此我无法进行任何比较。


6
使用Eclipse Helios与新的Scala(2.8)插件的dev版本,因为还没有官方发布。这确实是beta版,但我不能确认经常表达的观点,即这个插件完全糟糕;-)
我想说,体验已经可以,确实比当前的Groovy插件状态好。另一方面,纯Java的体验更加流畅(有时感觉像飞行),而当前的CDT我会评级在中间。
对我来说,增量编译和错误突出显示效果非常好;通过不断重写代码,将DSL实现调整到形式上,直到错误标记消失 - 毫无疑问地很有趣,并且再次显示FP /静态类型非常棒!
偶尔遇到的问题: - 在其他编译单元(尤其是嵌套/超级包)中的隐式和嵌套类型有时不会被拾取,当周围仍然存在其他错误时;他们将在完全构建后被拾取 - 我正在使用的版本(从2010年8月底)似乎存在内存泄漏,需要在工作几个小时后重新启动工作台 - 当您使用AspectJ时,请确保获取一个Scala插件版本,该版本依赖于与AJDT一起工作的JDT编织包版本
附注:我在所有项目中都使用maven构建,并使用eclipse-maven-plugin生成了eclipse项目,然后将其作为普通的平面eclipse项目导入。我强烈建议大家远离M2-eclipse插件(用于maven)的当前(2010年)状态,它会使您的工作台非常缓慢,存在错误并具有许多几乎不可预测的行为,因为它在幕后不断尝试进行魔术操作(除此之外,自今年春季以来,aspectj支持已经失效)。

5

我同时使用eclipse和IDEA

  1. eclipse支持类型检测比IDEA更好(如果你想以函数式编程的方式编写程序,了解表达式和变量的类型非常重要)。


    Edit1:IDEA也支持类型检测,但你需要在函数中定义一个值,例如:def testTs[A](a:List[String],b:List[A]) = for{ ai <- a bi <- b } yield (ai,bi) } 应该转换为 def testTs[A](a:List[String],b:List[A]):List[(String,A)]={ val result = for{ ai <- a bi <- b } yield (ai,bi) } 另外,你必须按下ctrl+q键才能查看变量的信息,而不是将鼠标悬停在变量上。

  2. eclipse在代码补全方面存在一些问题(当你在下一行使用一个变量并且想要获取该变量的属性时,eclipse会显示错误的代码建议)。
  3. 在IDEA中运行Scala应用程序比在eclipse中慢5秒钟(有一些解决方案可以缩短IDEA的运行时间,但这些方法会带来一些副作用和问题)。在idea中双击速度的问题很常见,会在很多情况下表现出来,比如打开文件或选择源代码中的字符串...你可以通过创建(或编辑)/home/.Xresources并添加这一行来增加双击超时时间:*.multiClickTime: 400

Edit1: 总之,我更喜欢使用IDEA而不是eclipse。


4
我认为目前最好的选择是Eclipse的ScalaIDE。您可以访问ScalaIDE网站并自行查看。 http://scala-ide.org/ 我认为它的优点有:
- 文档 - 教程 - 持续发布 - 得到Typesafe的支持
以下是主要功能的摘要:
Scala IDE提供了在Eclipse平台上开发Scala应用程序的支持。它的主要目标是支持Scala语言和与Eclipse Java工具的集成。它提供了许多Eclipse用户所期望的功能,包括:
  • 支持混合Scala/Java项目和任何组合的Scala/Java项目依赖项。类型驱动操作在Scala和Java文件和项目之间是透明的,允许从Scala到Java和反向引用。
  • 具有语法高亮、推断类型、链接到定义、代码完成、错误和警告标记、缩进、括号匹配的Scala编辑器。
  • 项目和源代码导航,包括在包资源管理器视图中支持Scala,带有嵌入式大纲、大纲视图、快速大纲、打开类型、打开类型层次结构。
  • 增量编译、应用程序启动与集成调试器、从堆栈跟踪到Scala源代码的超链接、交互式控制台。
  • 支持Eclipse插件和OSGi开发,包括从plugin.xml和manifest文件到Scala源代码的超链接。

更新:此答案提到的功能和优势适用于Scala 2.9和2.10版本,因为它已经停止了。请看这里:

"2.0.1版本仅适用于Scala 2.9,如果您想使用Scala IDE与Scala 2.8,请安装2.0.0版本(在2.0.0版本后,不再支持Scala 2.8)"


4

我的经验清楚地指出 IntelliJ IDEA:

大约六个月前,当我开始一个严肃的Scala(多模块)项目时,我不得不放弃Eclipse作为我最喜欢的Java IDE并切换到IntelliJ(9.0.x)。 Eclipse Scala IDE太过错误,并且即使是最简单的项目也经常停止响应。对于CI(Hudson)和命令行构建,我依赖Maven(带有Scala插件)。 IntelliJ很好地拾取了Maven依赖项(包括Scala库)。

几天前,我更新到了带有当前插件(每夜版本)的IDEA X(CE),工作变得更加顺畅。尽管fsc仍然在空闲一段时间后终止。

从我所看到的,我想补充说,似乎在IntelliJ方面有更多的活动来响应错误并持续改进插件。纠正我如果我错了,但是Eclipse Scala IDE开发似乎几乎停滞不前。仍然没有“官方”的Helios发布!

NB:只提供一些背景(不是吹嘘,真的):上述项目由大约25个Scala模块(POM)、5个Java模块、325个Scala文件组成,总共约360个Scala类、case类和特征(>19kLOC,包括注释)。我的平台是OS X 10.6、Scala 2.8.1、Java 1.6。

更新:在需要进行相当广泛的重构(主要是移动类、重命名包)之后,我发现最近的IDEA 10.0.1插件0.4.413(可能也适用于旧版本)在正确获取内容方面存在很多问题。我不想解释具体情况,但我(几乎总是)最终手动修复未解决的引用或其他混乱的代码。您可以查看http://youtrack.jetbrains.net以了解情况。

对于每个真正考虑使用Scala进行严肃开发的人,我强烈建议评估所涉及的IDE超出基础知识。当你采用敏捷方法时,这需要无痛的重构支持而没有意外情况(特别是在多模块项目中),目前情况非常紧张。

如果有人提出一个类似于IDE独立规范的重构列表(和期望的结果),这将非常好,可以用来验证IDE的重构支持。


这是我认为与您所要求的列表相近的内容:http://www.refactoring.com/catalog/index.html - johncip

4

一个无关紧要的答案:没有。

根据大多数人的说法,IDEA可能是目前最好的Scala IDE。但它(即Scala插件)很糟糕。它不能很好地处理fsc,类型推断混乱,许多错误未显示,一些非错误被标记为错误,当检查打开时它很慢,测试运行器默默地吞噬中止(!=失败)的测试...

因此,我转向了一个简单的文本编辑器,在一个屏幕上进行语法高亮,并在另一个屏幕上使用SBT(simple build tool)的最大化shell。太棒了! SBT反应灵敏(您可以让文件更改触发受影响代码的重新编译甚至测试),非常顺畅地管理依赖项,并具有有用的输出(尤其是测试方面;使用ScalaTest)。与IDEA相比,SBT极大地提高了我的生产率。

当然,您会失去代码完成功能,虽然Geany为我提供了已识别的符号。但只要IDE无法正确地工作类型推断,代码完成也无济于事。

有些人非常关心代码重构。好吧,IDE似乎在这方面也做得不好。即使他们会,我也宁愿只为这个特定任务打开它们,而不是一直使用它们。


1
有两个适用于 SBT 和 IDEA 的插件,实际上是两个。我制作了一个修改版,可以将错误注入到文档中,您可以在此处查看代码:https://github.com/null77/idea-sbt-plugin - nullspace

3

官方支持的Scala 2.9 IDE是Eclipse(由Typesafe支持)。当前版本比以前的版本要好得多,包括上下文感知REPL、完整功能调试器,甚至可以调试REPL语句。我认为这个问题需要更新并重新审视答案。


2

我不推荐使用Scala IDE / Eclipse。 它没有许多甚至对于Java的Eclipse都可用的功能。 而且存在一些错误。


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