【问题标题】:What is the current status of Java scripting? (i.e., JSR 223 or successors)Java 脚本的现状如何? (即 JSR 223 或后续版本)
【发布时间】:2020-11-10 00:40:29
【问题描述】:

我想为现有 Java 应用程序中的事件添加脚本功能。环顾四周,我发现 JSR 223 用于 Java 脚本。但它被撤回了,wikipedia tells me那个

决定将此功能作为 Java 9 及更高版本的一个组成部分。

然而,看着the wikipedia page on Java SE versions,我发现从 Java SE 9 到现在(Java SE 16,正在开发中)对我来说听起来像是“脚本”。

那么,目前推荐的将脚本工具集成到现有 Java 程序中的方法是什么? (我是否错过了 Java SE 9+ 中与此相关的内容?)(或者它 确实 出现在该维基百科页面上的 Java SE 8 中的事实是否意味着它实际上是“早期" - 对于“早期”的一些定义,包括处于后期发布中......)

【问题讨论】:

  • 这很复杂。使用GraalVM。或者决定要使用哪种语言和哪个版本的 Java 并寻找一个实现。如果你想嵌入 JavaScript,Nashorn 或 Rhino。用于 Python 的 Jython。等等。
  • @ElliottFrisch - 使用GraalVM 是否意味着它是特定实现的一部分,而不是正式的“Java”本身?如果我正确理解该版本页面,Rhino(早期)和 Nashorn(后来)都已被弃用并从 Java 中删除。
  • @ElliottFrisch - 我想此时我或多或少与脚本语言无关 - 我想知道我是否正在寻找支持 JSR 223 或其他东西的脚本语言引擎还有吗?
  • 目前,这在很大程度上是无关紧要的。而 GraalVM 似乎是 Oracle 追求的方向。所以如果你想知道“官方”的路线,似乎就是这样。很少有一个用例涉及支持多种脚本语言;这使得 JSR 223 成为“值得拥有”(不是必需品)。而且,在某些情况下,无论如何,您都必须摆弄脚本语言实现的内部结构(这使得 JSR 223 不切实际)。我用 Nashorn 完成了一个大型项目。这很有趣。
  • @ElliottFrisch - 好的,谢谢!

标签: java jsr223


【解决方案1】:

我认为您可以忽略撤回状态,尤其是因为它已经在工作/嵌入到 Java 中

我正在查看您的 wiki link,它指出 JSR 223 在 Java SE 8 上

JSR 223、JEP 174:Project Nashorn,一个 JavaScript 运行时,允许开发人员在应用程序中嵌入 JavaScript 代码

甚至是 Java 6:

脚本语言支持 (JSR 223):用于与脚本语言紧密集成的通用 API,以及内置的 Mozilla JavaScript Rhino 集成。

实际上,自Java 7 以来有一些改进

Java SE 7 中的增强功能 JDK 7 版本与 Mozilla Rhino JavaScript 引擎捆绑在一起,该引擎基于 1.7R3 版预发布源并经过 Oracle 修改。您可以在 java.net 下载 Oracle 修改过的 Rhino 源代码。

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多