1
12
在Java 6中,脚本引擎支持是内置的。例如,
你为什么要用?原因有:
实现包括RHIO(JavaScript的Java实现)、Jython(Java Python)以及更多。 |
2
9
以下是我使用过的一些案例。 1)Java想要调用脚本语言,示例1。 我有一个Java应用程序,它通过WMD JavaScript小部件接受用户的评论。(实际上,stackoverflow使用的是相同的小部件。)用户以降价格式输入注释,一个名为showdown的javascript库将其转换为两个位置的HTML:(1)在客户机上,以支持实时预览;(2)在服务器上,因为我希望客户机将纯降价发送到服务器,并将其存储在服务器上,以便用户可以编辑M。稍后关闭(而不是以某种方式将HTML反转为标记)。在服务器上存储注释时,我也会在那里运行转换,并将HTML与标记一起存储,这样在显示注释列表时就不必动态转换标记。为了确保服务器上的HTML与客户机上的HTML匹配,我希望使用完全相同的决战库。所以我在RhinoJavaScript引擎内部运行摊牌服务器端。 2)Java想要调用脚本语言,示例2。 我正在开发一个部署自动化应用程序,它涉及不同角色的涉众,如开发人员、系统管理员和发布工程师。整个应用程序(工作流和UI)是一个Java应用程序,但在不同的位置,它调用各种脚本(例如Ruby、BASH),例如用于推送包、验证配置、安装包、冒烟测试等。这部分是因为脚本更好地/更经济地用于表示目录创建、复制、移动、WIGET等,以及部分。因为拥有这一特定馅饼的人知道如何使用脚本语言,而不是Java。因此,我们使用Java的脚本API调用脚本。诚然,在这种情况下,我们可以执行Java以外的脚本,但见下面的第3条。 3)脚本语言想要调用Java。 在前面提到的部署应用程序中,我们有基于Web的部署日志,并且我们花了大量精力使部署日志尽可能容易阅读和理解,因为大型开发人员/sqa/发布工程师群体会消耗这些日志,而不是每个人都能理解部署的所有细节。漂亮的印刷和彩色编码是方法的一部分。我们在Java中实现了一个漂亮的打印部署日志API,但是我们希望脚本能够调用它。例如,当Ruby Push脚本运行时,我们希望它将进度记录到漂亮的打印机上。在JRuby中运行Ruby允许Ruby脚本看到Java漂亮的打印机API。 |
3
1
“使用脚本引擎最合适的用例是什么?”这是一个相当模糊的问题。有很多用例。以下是我能马上想到的几个问题:
我假设你指的是 JSR 223 特别地。如果是这样,你应该看看 scripting.dev.java.net |
4
1
我没有专门使用JavaScript,但我已经将groovy集成到我的应用程序框架中,以提供一种特定于域的语言(DSL)。我已经创建了钩住我的应用程序的函数和类。 允许用户在应用程序(宏)中编写通用操作脚本,并实现轻量级处理,以避免更重的代码编译器JAR部署解决方案。如果用户对我的处理框架有一个插件的想法,他们可以实时地通过Groovy进行原型化,并在有时间(或者需要速度的时候)移回Java(甚至是原生的)。请记住,脚本的速度通常要比Java/C/Y/C/C++慢一些。 |