8

您在 java 世界中首选的脚本语言(JVM 上的脚本语言)和方式是什么?什么时候你更喜欢你的脚本语言而不是 java(在什么情况下,例如原型设计)?您将其用于大型项目还是仅用于个人项目?

4

8 回答 8

5

For me, Clojure wins hands down. Being a Lisp, it's concise and dynamically typed, it has enormous expressive power so I can write a lot of functionality in a few lines. And its integration with Java is unsurpassed – I'm only partly joking when I say Clojure is more compatible to Java than Java itself. As a result, the entire breadth of Java libraries, both from the JDK and 3rd party, is fully useable.

Finally, with a little care Clojure code can be as fast as Java code, so I'm not even losing performance.

于 2009-12-11T21:56:10.780 回答
4

我最喜欢的是 Jython,我通过在我的 Java 应用程序中嵌入一个 Jython 解释器来使用它。它正在商业项目中使用,它允许根据客户的需要轻松定制应用程序,而无需编译任何东西。只需将脚本发送给他们,就是这样。一些客户甚至可以自己定制他们的应用程序。

于 2009-03-18T07:55:28.440 回答
4

我已经在一个商业项目中成功使用了Groovy 。由于鸭子类型和闭包,我更喜欢脚本语言:

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

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

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

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

恕我直言,使用不提供丰富列表操作(排序、过滤、转换)和闭包的语言的数据库只是作为一个例子,你不应该这样做。

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

于 2009-03-18T09:30:52.330 回答
3

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

于 2009-03-18T07:56:35.100 回答
3

JavaScript Rhino 有一个引人注目的优势——它包含在 JDK中。话虽如此,Rhino 比 Java 6 更高的版本具有很好的特性,比如生成器、数组解析和解构赋值。

每当处理 Java 异常的仪式使代码混乱而没有真正的好处时,我都喜欢使用它。当我想编写一个利用 Java 库的简单命令行脚本时,我也会使用它。

于 2009-03-18T09:15:26.813 回答
3

爪哇。严重地。它是一种功能强大、易于使用(虽然有点冗长)的语言,大家都知道。与 Java 的集成很棒。

于 2009-03-18T11:35:15.667 回答
1

我工作的公司将 Groovy 嵌入到 Java/Spring 网站中,该网站部署在多个站点上。脚本存储在编译后的 WAR 文件的外部,允许我们操作一些站点逻辑,而无需向每个站点推出新的 WAR。到目前为止,这种方法对我们来说非常优雅。

Groovy 的一个特别好的特性是它可以非常类似于 Java 代码,这使得将现有的 Java 类移植到它变得非常容易。

于 2009-03-18T11:47:12.970 回答
1

SISC(方案代码的第二解释器)怎么样?

参考:http ://sisc-scheme.org/

于 2009-10-23T12:08:35.143 回答