【发布时间】:2009-03-18 07:45:43
【问题描述】:
您在 java 世界中首选的脚本语言是什么(JVM 上的脚本语言)和方式?什么时候你更喜欢你的脚本语言而不是 java(在什么情况下,例如原型设计)?您将其用于大型项目还是仅用于个人项目?
【问题讨论】:
标签: java scripting-language jvm-languages
您在 java 世界中首选的脚本语言是什么(JVM 上的脚本语言)和方式?什么时候你更喜欢你的脚本语言而不是 java(在什么情况下,例如原型设计)?您将其用于大型项目还是仅用于个人项目?
【问题讨论】:
标签: java scripting-language jvm-languages
对我来说,Clojure 赢得了胜利。作为一个 Lisp,它简洁且动态类型,它具有强大的表达能力,因此我可以用几行代码编写很多功能。它与 Java 的集成是无与伦比的——当我说 Clojure 与 Java 比 Java 本身更兼容时,我只是在开玩笑。因此,来自 JDK 和 3rd 方的所有 Java 库都可以完全使用。
最后,稍加注意,Clojure 代码可以与 Java 代码一样快,因此我什至不会损失性能。
【讨论】:
我最喜欢的是 Jython,我通过在我的 Java 应用程序中嵌入一个 Jython 解释器来使用它。它正在商业项目中使用,它允许根据客户的需要轻松定制应用程序,而无需编译任何东西。只需将脚本发送给他们,就是这样。一些客户甚至可以自己定制他们的应用程序。
【讨论】:
我已经在一个商业项目中成功使用了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 对我来说太旧了。
【讨论】:
我可能更喜欢 Scala,但我不能说,还在学习。目前使用 Groovy 编写小型实用程序。甚至没有在 Grails 上尝试过 Groovy。也听说过很多关于 Lift Framework for Scala 的好消息。
【讨论】:
JavaScript Rhino 有一个引人注目的优势——它是included with the JDK。话虽如此,Rhino 的版本比 Java 6 的版本更高,但它具有很好的功能,例如 generators, array comprehensions, and destructuring assignment.
每当处理 Java 异常的仪式使代码混乱而没有真正的好处时,我都喜欢使用它。当我想编写一个利用 Java 库的简单命令行脚本时,我也会使用它。
【讨论】:
Java。严重地。它是一种功能强大、易于使用(如果有点冗长)的语言,每个人都知道。与 Java 的集成很棒。
【讨论】:
我工作的公司将 Groovy 嵌入到 Java/Spring 网站中,该网站部署在许多网站上。脚本存储在编译后的 WAR 文件的外部,允许我们操作一些站点逻辑,而无需向每个站点推出新的 WAR。到目前为止,这种方法对我们来说非常有效。
Groovy 的一个特别好的特性是它可以非常类似于 Java 代码,这使得将现有的 Java 类移植到它变得非常容易。
【讨论】:
SISC(方案代码的第二解释器)怎么样?
【讨论】: