对于旧版本的 Scala,这也是同样的问题,但他们说 Eclipse 插件已经得到了很大的改进。它是现在最好的 IDE 吗?今天不同的Scala IDE如何比较?
17 回答
我在 IDEA 9 上取得了相当大的成功。我曾短暂地尝试过 Netbeans 和 Eclipse,但无法得到我想要的。Eclipse 的代码完成功能不如我所愿,而且我找不到让 Netbeans 处理 Scala 脚本的方法;它只是抱怨该文件不是一个类。
需要明确的是,我在 Java 中使用 IDEA 已经有几年了,所以请记住这一点:)
目前,IntelliJ IDEA 中的 Scala 插件是最好的。它可以很好地处理 Scala 2.8。IntelliJ IDEA 社区版现在是免费和开源的(并且可以与 Scala 一起使用),所以我看不出有任何不使用它的理由。
该插件仍然有些错误(许多“误报”,即没有红色下划线的代码可能无法成功编译;但几乎没有“误报”),但完全可以使用。最好的事情是您可以在 Scala 中使用 IDEA 出色的调试器(并非没有问题,但它确实有效!)。
最新版本也支持 FSC(快速 Scala 编译器)。一个巨大的节省时间。
插件开发团队反应迅速。有些人直接在 JetBrains 工作,对 IDEA 平台有深入的了解,所以开发进展很快。
JetBrains IDEA 的 Scala 插件同样可以很好地处理 2.7 和 2.8。
我无法进行任何比较,因为我只使用过 IDEA。
将 Eclipse Helios 与新的 Scala(2.8) 插件的开发版本一起使用,因为还没有正式版本。绝对是测试版——但我无法证实经常表达的观点,即这个插件非常糟糕;-)
我想说,这种体验已经很不错了,而且确实比目前使用 Groovy 插件的情况要好。OTOH,使用纯 Java 的体验更加流畅(有时感觉像是在飞翔),而当前的 CDT 则介于两者之间。
增量编译和错误突出显示对我来说效果很好;只需不断地重写代码直到错误标记消失,就可以将 DSL 实现调整为形式——无需测试运行你的程序——非常有趣,并且再次表明 FP / 静态类型非常棒!
不时遇到的问题: - 其他编译单元(尤其是嵌套/超级包)中的隐式和嵌套类型在仍有其他错误时不被拾取;它们将在完整构建后被拾取 - 我现在正在使用的版本中似乎存在内存泄漏(从 2010 年 8 月末开始),需要在工作几个小时后重新启动工作台 - 使用时要小心AspectJ,确保您获得依赖于 JDT 编织捆绑版本的 Scala 插件版本,该版本也适用于 AJDT
PS:我在所有项目中都使用 maven 构建,并使用 eclipse-maven-plugin 生成了 eclipse 项目,然后将它们作为普通的 eclipse 项目导入。我可以强烈建议每个人远离当前(2010)状态的 M2-eclipse 插件(用于 maven),它使你的工作台非常缓慢,有很多几乎不可预测的行为,因为它不断尝试做幕后的神奇事物(除此之外,aspectj 支持自今年春天以来就被打破了)
我同时使用 eclipse 和 IDEA
eclipse 支持类型检测比 IDEA 更好(如果你想要功能风格的程序,你可以从表达式和变量的类型中知道,这是非常必要的事情。)
Edit1:IDEA 支持像 eclipse 这样的类型检测,但您必须在函数中定义一个值,例如:
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- eclipse 在代码完成方面存在一些问题(当您在下一行中使用变量并且想要获取此变量的属性时,eclipse 会显示错误的代码建议)
- 在 IDEA 中破坏 Scala 应用程序比 Eclipse 慢 5 秒(有一些解决 IDEA 运行时间问题的解决方案,但这些有副作用有一些问题)在想法中,双击速度存在一个众所周知的问题,在很多情况下都会显示出来,例如打开文件或选择源中的字符串...您可以通过创建(或编辑)/home/.Xresources 并添加以下行来增加双击超时:
*.multiClickTime: 400
Edit1:在夏天,我更喜欢使用 IDEA 而不是 eclipse
我的经验清楚地指向 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 版本!
注意:只是为了提供一些上下文(不是吹牛,真的):上述项目由大约 25 个 Scala 模块(POM)、5 个 Java 模块、325 个 Scala 文件组成,总共大约 360 个 Scala 类、案例类和特征(> 19 kLOC,包括评论)。我的平台是 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,类型推断是一团糟,许多错误没有显示,一些非错误被标记为错误,它很慢(当检查打开时),测试运行器默默地吞下 aborting (!=失败)测试,...
因此,我切换到一个简单的文本编辑器,其中一个具有语法高亮显示,另一个屏幕上具有 SBT(简单构建工具)的最大化外壳。惊人的!SBT 具有响应性(您可以让文件更改触发受影响代码的重新编译,甚至重新运行测试),非常顺利地管理依赖关系并具有有用的输出(尤其是用于测试;使用 ScalaTest)。与 IDEA 相比,SBT 大大提高了我的工作效率。
当然,您会丢失代码完成,尽管 geany 为我提供了已识别的符号。但是,只要 IDE 没有使类型推断正常工作,代码完成就无济于事。
有些人非常关心代码重构。好吧,IDE 显然在那里也做得不好。即使他们愿意,我也宁愿只为这个特定的任务打开它们,而不是一直使用它们。
我认为目前最好的选择是 ScalaIDE for Eclipse。你可以去 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 和清单文件超链接到 Scala 源代码。
更新:此答案中提到的功能和优势适用于 Scala 的 2.9 和 2.10 版本,因为它已经停产。看这里:
“2.0.1 版本仅适用于 Scala 2.9,如果您想在 Scala 2.8 中使用 Scala IDE,请安装 2.0.0 版本(2.0.0 版本后对 Scala 2.8 的支持已停止) ”
Scala 2.9 的官方认可和支持(由 Typesafe)是 Eclipse。当前版本远远优于以前的版本,包括上下文感知 REPL、功能齐全的调试器,甚至可以调试 REPL 语句。我认为这个问题需要更新并重新审视答案。
我不推荐 Scala IDE/Eclipse。它没有很多甚至可用于带有 Java 的 Eclipse 的特性。并且有错误。
我正在使用最新的 NetBeans,还没有尝试过其他任何东西。在使用 Scala 编码时,我在 NetBeans 中遇到了至少 2 个值得注意的错误:
一:NB偶尔来个程序无法运行,挂在classpath扫描上。
解决方案:创建一个新项目,将代码复制到那里并继续。
评论:这个 bug 已经有 10 多年的历史了。
二:有时 NB看不到特定命名空间或类的成员,在使用时会报错。
解决方案:忽略并继续 - 编译器没有发现错误并且程序可以正常工作。
我现在推荐 IDEA 的插件。
NetBeans 的 Scala 插件也很不错。不过,它还不支持最新版本的 NetBeans 6.9,您仍然需要手动下载它,而不是直接从 NetBeans 内的插件管理器安装它。
然而,它与 Maven 项目的集成比 IDEA 的插件更好(在我看来,这对于 NB 和 IDEA 来说一般都是如此)。
这部分取决于您的工作方式,因为所有选项都有优点和缺点。
如果您需要跨混合的 java/scala 项目进行重构,那么 IntelliJ 是您唯一的选择。
如果您想对编译器或编译器插件进行任何工作,那么 Eclipse 的优势在于能够使用自定义编译器构建(包括断点)启动运行时工作区。它还在 2.8 Scala 版本中得到了极大的改进。
如果您已经非常熟悉该平台,Netbeans 是一个不错的选择,学习新环境的成本可能远远超过任何收益,并且所有三种解决方案都在迅速改进。
我还没有尝试过 netbeans scala 插件,但我发现 Intellij IDEA 插件在任何方面都比 Scala eclipse 插件好得多,后者太慢了,让我发疯。虽然 Swing 应用程序不能很好地与我的平铺窗口管理器配合使用。
试试 IDEAX 最新的 Intellij IDEA 社区版(版本 10),它改进了 scala 插件,它具有更快的代码编译和执行速度,此外它还支持 Maven3 和 SBT,我们可以使用它来开发 Lift 应用程序。
IntelliJ IDEA 社区版 + Scala 插件 + SBT 插件
对于最近的版本(2021),哪个 ide 占据了主页很大一部分的问题 https://scala-lang.org/