使用Rhino(Mozilla的Rhino)的优势

14

我一直在了解如何在我的Java代码中实现JavaScript,Rhino是一个有用的方式。

阅读了一段时间,通过Google和这里的搜索,我无法找到使用JavaScript在Java内部的真正原因。

你能列举一些在普通Java应用程序中使用Rhino的真实优势吗?


除了其他人所说的,游戏开发是一个很好的例子。在游戏开发中使用外部脚本是一个非常常见的做法,有许多原因,如果你正在使用Java编写游戏并想要使用JavaScript作为脚本语言,Rhino是一个很好的选择。 - Josh1billion
5个回答

15
请注意,自Java 6以来,脚本API已经包含在标准Java库中 - 参见包javax.script的文档。 javax.script中的API是Rhino的一种改编版本。脚本API不仅支持JavaScript,还支持许多其他脚本语言。
请参阅Java Scripting Programmer's Guide
该网站首页提到了一些您可能想要使用脚本的原因:
- 应用程序扩展/定制:您可以“外部化”应用程序的某些部分 - 比如配置脚本、业务逻辑/规则和金融应用程序的数学表达式。 - 应用程序的命令行Shell - 用于调试、运行时/部署时配置等。大多数应用程序现在都有基于Web的GUI配置工具。但是系统管理员/部署人员通常更喜欢命令行工具。与发明临时脚本语言相比,可以使用“标准”的脚本语言。
例如:您可以使用Python脚本对Oracle Weblogic进行脚本化,例如配置应用程序服务器域、启动或停止服务器以及执行其他管理任务。

这些其他语言是什么? - Weslei Prudencio
1
@WesleiPrudencio 参见 https://dev59.com/HGgt5IYBdhLWcg3wwwK- - Jesper

11
  1. 使用Rhino和E4X处理XML相比于大多数Java XML API来说更加愉快。
  2. 您已经存在“正常运行”的JavaScript代码,您不想重写它。如果您在客户端进行某些计算或处理,并将其移动到服务器上,则可能会发生这种情况。
  3. 各种有趣的缓存和代码加载技巧。
  4. 如果您的问题可以由比Java更动态的语言更好地解决。
  5. 列表推导 ;)

1
你说得对。为了涵盖你提出的大部分要点,我会使用Jython而不是JavaScript。但是你可能更喜欢Java吧。 - Santi

6
嵌入像JavaScript这样的脚本语言到软件中的好处是,您可以为他人提供编写插件而不必泄露源代码的方式。
使用另一种语言编写整个应用程序的原因是您能够为公司编写应用程序,而无需学习Java,并在其Java EE环境中部署它。

2
为了让其他人能够插入您的应用程序而不泄露源代码,您只需要一个带有一些接口的软件包。 - Bart van Heukelom
IBM Maximo 7.5+可以使用Rhino或Jython实现此功能,并且额外的好处是您可以避免定制他们的软件,这使得升级更加顺畅。 - Bratch

4
我们在其中一个产品中使用JS(通过Rhino实现)。这不是一个很好的DSL,但这是我们如何使用JS的问题,而不是Rhino的问题。

我非常支持简短明了,但在这个上下文中,DSL是什么并不清楚。你能否给我解释一下? - WynandB
1
DSL = 领域特定语言。基本上,我们需要一种允许人们表达规则的语言。JavaScript很好,因为可以通过指定全局上下文中的内容来轻松设置用户可以做什么和不能做什么。不需要包含任何文件。 - user1545858

0
如果您考虑使用 .Net,我建议您选择Rhino。
除了Java环境外,Rhino是.NET环境下(使用IKVM)性能最佳的解释器之一。另一方面,Nashorn在.NET上非常慢。
将您自己的Rhino项目移植到.NET并不困难。

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