哪种可能成为一种强大的JVM替代语言:Scala、Clojure、Fan、JavaFX脚本或其他?

哪种可能成为一种强大的JVM替代语言:Scala、Clojure、Fan、JavaFX脚本或其他?,clojure,jvm-languages,Clojure,Jvm Languages,我目前正在决定使用另一种JVM语言来移植用Java6编写的现有Swing桌面应用程序。鉴于JavaFX专门针对此类应用程序,我的最佳选择似乎是JavaFXScript 但是,其他类型的应用程序和库呢?JavaFX脚本通常是第二种JVM语言的最佳选择吗 目前看来,Scala似乎是Java语言最受关注的替代方案。本月(2009年10月),它在中处于第34位,而JavaFX脚本位于第44位,Clojure、Fan和Groovy位于50位以下 那么,你的印象如何?假设您可以自由选择在JVM中运行的给定项

我目前正在决定使用另一种JVM语言来移植用Java6编写的现有Swing桌面应用程序。鉴于JavaFX专门针对此类应用程序,我的最佳选择似乎是JavaFXScript

但是,其他类型的应用程序和库呢?JavaFX脚本通常是第二种JVM语言的最佳选择吗

目前看来,Scala似乎是Java语言最受关注的替代方案。本月(2009年10月),它在中处于第34位,而JavaFX脚本位于第44位,Clojure、Fan和Groovy位于50位以下


那么,你的印象如何?假设您可以自由选择在JVM中运行的给定项目的语言,您会将时间花在学习和使用哪种语言上(以及为什么?

这些听起来都是不错的选择。您可以添加到列表中…

最佳替代语言,总体而言,最好的语言IMO是最适合您以最佳模式编写程序的语言

因此,如果您正在编写GUI应用程序,那么Scala可能是错误的选择,因为您不会离开Swing

如果JavaFX最能满足您的需求,那么就使用这种语言

如果您知道LISP,那么Clojure将是一个很好的选择,但是,像Scala一样,对于这个问题,它听起来像

如果您不懂lisp,并且想要/需要一种函数式编程语言,那么Scala将是最佳选择


基本上,没有一种语言在所有情况下都是最好的,它有助于了解您想要做什么,以及各种选项的优缺点。

我的主要问题是:为什么要移植现有的应用程序?这个问题的答案可能会让你知道你想去哪里

关于主要选择的一些快速观点:

  • 在我看来,Scala是比Java更好的Java。如果您希望一种语言能够充分利用Java的优点,但又能添加许多新的创新和特性,那么它很可能适合您
  • Clojure是一种设计精良的语言,特别是如果您相信未来会出现高度复杂的并发应用程序。它的效率也非常高——我可能可以用Clojure比任何其他语言每小时创造更多的价值。然而,除非你已经知道Lisp,否则一开始它看起来很陌生。如果你愿意生活在最前沿以获得这些好处,Clojure很可能适合你
  • JavaFX脚本-具有一些非常好的GUI设计功能,并且显然支持Sun/Oracle。另一方面,我不认为它在这个领域之外有巨大的吸引力。我建议试运行一下,看看它是否满足您的需要
  • Java-应该仍然在您的列表中!如果您进行移植的原因是因为代码变得难以维护,那么在继续使用Java的同时,重新分解的重点阶段可能会为您带来想要的好处。用Java编写完美的GUI应用程序是可能的
  • Groovy——JVM上非常好的脚本语言。如果您想在现有Java/JVM应用程序中嵌入脚本功能,这一点尤其好。但我不确定我会选择它来(重新)编写一个完整的应用程序
  • JRuby/Jython-我自己没见过这么多,但听到了一些好消息。如果您在团队中拥有Ruby/Python技能,并且希望获得JVM平台的好处,那么这可能是最合适的

我同意你所说的一切,但我并不真正期待为JVM学习/使用六种不同的语言。而且,这些语言中的大多数可能永远不会成为主流……请注意它们。例如,如果您不懂lisp,那么忽略Clojure。如果您不需要FP,请跳过Scala。如果Java SE/ME/EE可以满足您的所有需求,但是您缺少一个或两个特性,那么只需找到有助于实现这一点的语言并学习它即可。不久前,Sun似乎对推广JRuby很感兴趣。现在,焦点(和资金)似乎转移到了JavaFX。如果真的是这样的话,那就很有意思了。好吧,JRuby开发者已经从Sun搬到了Engine Yard。Ruby显然做得很好,我希望JRuby和Ruby都能留下来。JRuby确实运行Rails,这是Ruby功能的酸性测试。(Rails奇点)还有其他Ruby项目仍然无法做到这一点,我同意Sun、呃、Oracle显然在投资JavaFX。但我也认为我们不在乎英特尔是否支持在其CPU线路上运行的给定事物。也许Sun对给定JVM编译器的支持没有什么大不了的?我理解你的担忧,但在引用了Tiobe索引后,你拒绝了前10名中的一种语言,而支持了一些被屠杀的语言,我作为Scala和Clojure的粉丝这么说:-)我现在只对JVM语言感兴趣,所以Ruby(毫无疑问,这是一项伟大而成功的技术)没有被考虑。我也知道JRuby的进步。但是,考虑到目前的情况,我仍然会在未来的Scala或JavaFX脚本上下赌注。