我应该使用Jython、JRuby、Beanshell、Groovy、Rhino或其他什么技术来完成这个小任务?

6
我有一些批量数据操作脚本,用于支持小型企业网站。这些脚本是Perl、Java和存储过程的"老鼠窝",它们根据各种来源和算法定期运行以更新数据。我想摆脱Perl,至少要利用事务管理,通过在整个过程中使用JVM管理的数据库连接来实现。为此,我需要使用哪种Java动态/脚本语言?该语言应满足以下条件:
- 提供类似的表达能力、I/O、正则表达式等功能,方便迁移Perl代码。 - 具有良好的IDE支持,包括代码完成和调试,最好是Eclipse。 - 安装简单。最好整个脚本引擎都在一个单独的jar文件中。 - 不是孤立的技术。我希望选择一个未来5年仍然存在的技术。 - 当然,要与我已经有的其他Java代码进行清晰的集成。
希望我的标准足够清晰,不会被标记为主观问题。对我来说,这绝对是一个编程问题。我把所有这些语言都看作是"有用的Java库"。谢谢!
3个回答

2

我会选择Jython,因为它可以与现有的Java代码进行交互,并且拥有强大的支持基础。更不用说它使用的是Python语言,易学易用。Eclipse对于语法高亮、调试和自动补全都有很好的支持。最后,安装非常容易,只需一个独立的文件夹(没有真正的“安装”)。

我承认我有偏见,因为除了Jython之外,我使用其他工具的次数要少得多,但我从未需要过,因为Jython已经完全满足了我的需求。


1
难道不能说JDK 1.8将拥有一些功能(如Coin、Lambda和Jigsaw项目),这些功能可能导致Jython最终被放弃吗? - djangofan
@djangofan:完全不是这样,他们正在积极地使JVM对像Python这样的语言更具吸引力。Java永远不会成为Python或Ruby。 - Andrew White

2
公正地说,Jython、JRuby和Groovy都是不错的选择。它们都有良好的IDE支持,语法表达能力强,比Perl更加简洁。(Python和Ruby在设计上都受到了Perl的影响,因此从Perl移植并不太麻烦)
当然,Beanshell和Javascript(以Rhino形式)也足够使用,尽管它们的语法表达能力较弱。
根据当前的使用趋势来看,我认为Jython和JRuby可能是最受欢迎、最具普遍性和长寿命的两种语言。
实际上,选择哪种语言取决于您对每种语言的熟练程度,但我建议您使用Jython,如果您更喜欢Ruby,则使用JRuby。

1
有没有任何参考资料证明“比Perl更简洁”的论点?我对这两种语言都不太熟悉,所以希望能有一些示例代码来说明Ruby或Python与Perl代码的简洁程度比较。顺便说一句,选择你最熟悉的那个语言是个好主意。 - DVK
@DVK - 关于Perl vs Python/Ruby的主要观点是后者都支持面向对象的方法(当然,Moose也为Perl提供了面向对象的支持)- 它们还具有比Perl更好的子程序/函数定义,我不喜欢Perl的子程序语法和参数支持。 - ocodo
2
唯一的区别是花括号(不会增加或减少简洁性),以及命名参数而不是通用 Perl 的 @_ 参数列表,可以在 1 行中扩展为命名参数。我不确定我同意它使这两个语言“比 Perl 更简洁”,特别是在需要更复杂的参数处理的情况下,例如传递 3 个标量值(我很想看看 Ruby/Python 如何处理获取参数列表、附加另一个列表的内容并将其传递给另一个函数的任务。Perl 就像这样:sub f1 () { my @append=(1,2,3); f2(@_, @append); }; - DVK
说到底,Perl、Python和Ruby之间的语言比较纯粹是习惯用语。个人而言,我认为Python和Ruby的语法比Perl更加简洁易读,或许“比Perl更简洁”这个说法不太准确。即便如此,在与其他选项进行比较时,Jython可能是最简洁的选择。 - ocodo

0

我应该说,几个基准测试表明,与Jython和BeanShell相比,Groovy在速度上获胜。测试是使用DMelt(http://jwork.org/dmelt)框架执行的,您可以从一种语言跳转到另一种语言,调用相同的Java库。


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