这里是一个关于旧版Scala最佳IDE的问题,但是他们说Eclipse插件已经得到极大改进。现在它是否成为了最好的IDE?不同的Scala IDE之间如何比较?
这里是一个关于旧版Scala最佳IDE的问题,但是他们说Eclipse插件已经得到极大改进。现在它是否成为了最好的IDE?不同的Scala IDE之间如何比较?
我在使用IDEA 9方面相当成功。我曾尝试过Netbeans和Eclipse,但无法得到我想要的效果。Eclipse的代码自动补全功能不如我所愿,并且我找不到让Netbeans处理Scala脚本的方法。它只会抱怨这个文件不是一个类。
需要说明的是,我已经使用了几年的Java开发工具IDEA,请记住这一点 :)
目前来看,IntelliJ IDEA中的Scala插件是最好的。它能够很好地处理Scala 2.8。IntelliJ IDEA社区版现在是免费且开源的(并且与Scala配合使用),所以我无法想象不使用它的任何理由。
该插件仍然有一些小错误(许多“false negatives”,即没有红色下划线的代码可能不会成功编译;但几乎没有“false positives”),但完全可用。最棒的是,你可以使用IDEA的出色调试器与Scala配合使用(虽然可能会有一些问题,但它确实有效!)。
最新版本还支持FSC(快速Scala编译器),这可以极大地节省时间。
该插件开发团队非常敏感。其中一些人直接在JetBrains工作,并拥有关于IDEA平台的深入了解,因此开发进展迅速。
JetBrains IDEA的Scala插件可以同样很好地处理2.7和2.8。
由于我只使用过IDEA,因此我无法进行任何比较。
我同时使用eclipse和IDEA
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键才能查看变量的信息,而不是将鼠标悬停在变量上。
*.multiClickTime: 400
Edit1: 总之,我更喜欢使用IDEA而不是eclipse。
更新:此答案提到的功能和优势适用于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)"
我的经验清楚地指出 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的重构支持。
一个无关紧要的答案:没有。
根据大多数人的说法,IDEA可能是目前最好的Scala IDE。但它(即Scala插件)很糟糕。它不能很好地处理fsc,类型推断混乱,许多错误未显示,一些非错误被标记为错误,当检查打开时它很慢,测试运行器默默地吞噬中止(!=失败)的测试...
因此,我转向了一个简单的文本编辑器,在一个屏幕上进行语法高亮,并在另一个屏幕上使用SBT(simple build tool)的最大化shell。太棒了! SBT反应灵敏(您可以让文件更改触发受影响代码的重新编译甚至测试),非常顺畅地管理依赖项,并具有有用的输出(尤其是测试方面;使用ScalaTest)。与IDEA相比,SBT极大地提高了我的生产率。
当然,您会失去代码完成功能,虽然Geany为我提供了已识别的符号。但只要IDE无法正确地工作类型推断,代码完成也无济于事。
有些人非常关心代码重构。好吧,IDE似乎在这方面也做得不好。即使他们会,我也宁愿只为这个特定任务打开它们,而不是一直使用它们。
官方支持的Scala 2.9 IDE是Eclipse(由Typesafe支持)。当前版本比以前的版本要好得多,包括上下文感知REPL、完整功能调试器,甚至可以调试REPL语句。我认为这个问题需要更新并重新审视答案。
我不推荐使用Scala IDE / Eclipse。 它没有许多甚至对于Java的Eclipse都可用的功能。 而且存在一些错误。