在Java世界中(JVM上的)你偏好哪种脚本语言和方式?

8

在Java世界中,您首选的脚本语言是什么(JVM上的脚本语言)?在什么情况下,您会选择使用脚本语言而不是Java(例如用于原型制作)?您将其用于大型项目还是仅限于个人项目?

8个回答

5
对我而言,Clojure毫无疑问胜出。作为一种Lisp语言,它简洁且动态类型,具有巨大的表现力,因此我可以用很少的代码编写许多功能。它与Java的集成是无与伦比的 - 当我说Clojure比Java本身更兼容Java时,我只是部分开玩笑。因此,整个Java库的广度,包括JDK和第三方库,都可以完全使用。
最后,只要稍加注意,Clojure代码就可以像Java代码一样快,因此我甚至不会失去性能。

2
+1 - 正如Stuart Halloway所指出的:Clojure比Java更好的Java。 - wlangstroth

4

我曾在商业项目中成功使用Groovy。我更喜欢脚本语言,因为它们支持鸭子类型和闭包:

def results = []
def min = 5
db.select(sql) { row ->
    if (row.value > min)
        results << row;
}

翻译:对数据库运行SQL查询,并将所有列“value”大于“min”的行添加到“result”中。请注意,您可以轻松地将数据传递给内部的“loop”,或从其中获取结果。是的,我知道我也可以使用SQL实现相同的功能:

def results = []
def min = 5
db.select(sql, min) { row ->
    results << row;
}

请想象一下,“sql”中的字符串在正确的位置上有一个“?”。

在我看来,使用一种不提供丰富的列表操作(排序、筛选和转换)和闭包的语言来使用数据库,只是一个你不应该采用的例子。

我很想更多地使用Jython,但是Jython 2.5的工作只是最近才开始,而Python 2.2对于我的目的来说太过陈旧了。


不仅可以使用SQL实现相同的功能,而且如果你这样做的话,效率更高,阅读起来也更容易。 - Steven Huwig
1
我没有一个简单的例子可以放入五行代码,而且每个人都可以在不用10行解释的情况下理解。请注意意图,先生。 - Aaron Digulla

4

我最喜欢的是Jython,我通过在Java应用程序中嵌入Jython解释器来使用它。它被用于商业项目中,并且可以根据客户需求轻松定制应用程序,而无需编译任何东西。只需将脚本发送给他们,就可以完成定制。有些客户甚至可能自己定制他们的应用程序。


3

我可能更喜欢Scala,但是我现在还在学习。目前使用Groovy编写小型实用程序。甚至没有尝试过基于Grails的Groovy。也听说过Lift Framework for Scala很好。


我曾经是Scala的粉丝(这并不是贬低,是针对自己而非你),但我发现它对类型的严谨和有些复杂的语法让我感到烦恼。它感觉像是一个安装了太多厨房水槽的语言。我发现Clojure更加舒适。当然,每个人的感受可能都不同。 - Carl Smotricz

3
JavaScript Rhino有一个很大的优势——它被包含在JDK中。话虽如此,比Java 6附带版本更高的Rhino具有许多不错的功能,例如生成器、数组解析和解构赋值。 我喜欢在处理Java异常的仪式化代码没有实际好处时使用它。我还会在想要编写简单的命令行脚本并利用Java库时使用它。

3

Java。说真的,它是一种功能强大、易于使用(尽管有点啰嗦)的语言,人人都知道。与 Java 的集成非常好。


1
我工作的公司将Groovy嵌入到Java/Spring网站中,部署在多个站点上。这些脚本存储在已编译的WAR文件的外部,使我们能够在不必为每个站点推出新的WAR的情况下操纵一些站点逻辑。到目前为止,这种方法非常优雅地为我们工作。
Groovy的一个特别好的特性是它可以与Java代码紧密相似,这使得将现有的Java类移植到其中非常容易。

1

+1 感谢指出这种语言。看起来非常酷,特别是对于那些不愿切换到 Clojure 的经验丰富的 Scheme 专家。 - Carl Smotricz

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