Java + 脚本语言 (JSR 223)

7
我正在设计一个框架,希望将其附加到脚本语言API上,以使其更具通用性和易用性(对于某些事情,我自己确实更喜欢脚本方式;)。像JRuby、Jython或Rhino(JavaScript)这样的语言都有解释器可用于许多流行的脚本语言,而且据我所知,它们都实现了Java Scripting language API来嵌入到您的Java应用程序中。
您有使用过此方法的经验吗?我特别关注处理例如关联数组(或Java Bean)等内容。 性能如何(例如与CGI方式或本机Java方式相比)?是否容易在不同的解释器之间切换(当然,这是一个API规范,但我仍然不知道如何处理语言特定问题)?
1个回答

5
我曾经使用过Rhino、Jython、JRuby和Groovy。它们之间有明显的语言差异,而且性能普遍较慢。我发现,对于我的应用程序来说,Groovy是最容易创建特定领域语言(DSL)的语言。在包可访问性和运行时变量方面,Groovy也是最容易控制的语言,但需要使用Groovy API来实现,而不是JSR-223。
我感觉Groovy的工具/文档/API更适合JVM,但Ruby/Python肯定有很多追随者,而且语法可能更适合某些人。最终,我建议在您的框架中尝试它们,并选择一种。多种脚本语言听起来不错,但可能会给调试/支持/转换带来麻烦。
另外,你可以考虑一下BeanShell。

感谢您的建议。我同意支持多种语言可能会很麻烦,而且我已经在关注Groovy了(特别是因为Grails已经提供了我打算使用的一些功能)。但是,既然您说其他解释器速度相当慢,那么在尝试JSR-223候选项之前,我将尝试使用Groovy API。 - Daff
不要误会,所有的脚本语言都很慢,但你选择使用它们不是为了速度。 - basszero
明白了。这很有道理,当然这是时间/舒适度的权衡。但任何脚本语言都会因为可用性原因而受益于该框架。 - Daff

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