首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何摆脱警告: Nashorn引擎计划从未来的JDK版本中删除?

Nashorn是Java 8中引入的一个轻量级JavaScript引擎,它允许Java应用程序执行JavaScript代码。然而,从JDK 15开始,Nashorn引擎已被标记为废弃,并计划在未来的JDK版本中完全移除。这是因为Oracle决定专注于GraalVM的JavaScript引擎,它提供了更好的性能和更广泛的兼容性。

基础概念

  • Nashorn: Java 8引入的JavaScript引擎。
  • GraalVM: 一个高性能的运行时环境,提供了多种语言的编译器和解释器,包括JavaScript。

相关优势

  • 性能: GraalVM的JavaScript引擎通常比Nashorn更快。
  • 兼容性: GraalVM支持更多的ECMAScript标准特性。
  • 多语言支持: GraalVM不仅支持JavaScript,还支持Python、Ruby等多种语言。

类型与应用场景

  • 类型: JavaScript引擎可以分为解释型和编译型。Nashorn是解释型的,而GraalVM的JavaScript引擎是编译型的。
  • 应用场景: 这些引擎常用于需要在Java应用中嵌入JavaScript代码的场景,比如在Web服务器中执行客户端脚本,或者在桌面应用中实现动态行为。

解决方法

如果你遇到警告“Nashorn引擎计划从未来的JDK版本中删除”,你可以采取以下几种方法来解决这个问题:

1. 升级到GraalVM

将你的项目迁移到GraalVM,这是一个长期且推荐的解决方案。

代码语言:txt
复制
# 安装GraalVM
# 下载地址: https://www.graalvm.org/downloads/

# 设置环境变量
export JAVA_HOME=/path/to/graalvm
export PATH=$JAVA_HOME/bin:$PATH

2. 使用其他JavaScript引擎

如果你不想迁移到GraalVM,可以考虑使用其他JavaScript引擎,比如Rhino。

代码语言:txt
复制
<!-- 在Maven项目中添加Rhino依赖 -->
<dependency>
    <groupId>org.mozilla</groupId>
    <artifactId>rhino</artifactId>
    <version>1.7.13</version>
</dependency>

3. 检查并替换Nashorn代码

如果你使用的是Nashorn特定的API,需要检查并替换为兼容的替代方案。

代码语言:txt
复制
// Nashorn示例
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("print('Hello, World!');");

// 替换为GraalVM示例
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
engine.eval("console.log('Hello, World!');");

总结

为了避免未来的兼容性问题,建议尽快迁移到GraalVM或其他现代JavaScript引擎。这不仅能够解决当前的警告问题,还能让你的应用享受到更好的性能和更多的功能支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JAVA16版本.JDK16即将发布,你准备好了吗?

JDK 16 新增了基于值的类警告和密封类(第二次预览)作为计划功能,还加入了一系列新的特性,从外部链接程序API,到模式匹配,再到用于垃圾回收的并发线程堆栈处理。...基于嵌套访问控制、动态类文件常量、误操作垃圾回收器、删除Java EE和 CORBA 模块、ChaCha20与Poly1305加密算法、Aarch64增强、ZGC试用、弃用 Nashorn JS引擎...作为 Jigsaw 项目 的一部分,此提案的目标包括提高 JDK 的安全性和可维护性,并鼓励开发人员从直接使用内部元素逐渐迁移为使用标准 API,这样开发人员和最终用户都可以轻松地升级到 Java 的未来版本...该计划的目标包括从ZGC安全点中删除线程堆栈处理,使堆栈处理变得懒性、协同、并发和增量,从ZGC安全点移除所有其它单一线程的 root 处理,并为其它虚拟机子系统提供了一种延迟处理堆栈的机制。...从 JDK8 开始,Java 语言就越显得更加具有攻击性和包容性,版本升级速度和周期也是极其惊人,如今短短几年,已是 JDK 16,所以本人特别看好 Java 在未来市场的占比和技术能力的持续延伸,加油

6410
  • 2017年3月Java9带来的革新!

    模块化 201: 源代码模块化 211: 删除 Import 语句过时的警告 212: 解析 Lint 和 Doclint 告警 213: 打磨Coin项目:(译注:Coin是一个改进Java语法使用性的项目...) 214: 移除 JDK 8 中废弃的GC组合 215: 让 javac 支持分层变量 216: 正确处理 Import 语句 217: 注解管道 2.0 219: 数据包传输层安全(DTLS) 220...232: 改进应用安全性能 233: 自动生成运行时编译器测试用例 235: 测试 javac 生成的 class 文件属性 236: 为 Nashorn 提供解析API:(译注:Nashorn是JDK...自带的Javascript引擎) 237: Linux/AArch64 移植 238: JAR 文件支持多个版本:JAR文件可同时包含多个版本的class文件 240: 移除 JVM TI hprof...: 将 JavaFX/Media 更新到更新版本的 GStreamer 258: HarfBuzz 字体布局引擎 259: 栈遍历 API 260: 封装大部分内部 API 261: 模块系统 262:

    1K40

    JDK的版本迭代(JDK9 - JDK20)

    从Java 9 这个版本开始,Java 的计划发布周期是 6个月。 这意味着Java的更新从传统的以特性驱动的发布周期,转变为以时间驱动的发布模式,并且承诺不会跳票。...应该如何学习新特性 对于新特性,应该从哪几个角度学习新特性呢?...语法层面: 比如JDK5中的自动拆箱、自动装箱、enum、泛型 比如JDK8中的lambda表达式、接口中的默认方法、静态方法 比如JDK10中局部变量的类型推断 比如JDK12中的switch 比如...JDK13中的文本块 API层面: 比如JDK8中的Stream、Optional、新的日期时间、HashMap的底层结构 比如JDK9中String的底层结构 新的 / 过时的 API 底层优化...比如JDK8中永久代被元空间替代、新的JS执行引擎 比如新的垃圾回收器、GC参数、JVM的优化

    1.7K40

    java 11 新特效解读(2)

    全新的HTTP 客户端API HTTP,用于传输网页的协议,早在1997年就被采用在目前的1.1版本中。直到2015年,HTTP2才成为标准。...而在未来的Java 11版本中,通过一个java命令就直接搞定了,如以下所示: java Javastack.java 一个命令编译运行源代码的注意点: 执行源文件中的第一个类, 第一个类必须包含主方法...废弃Nashorn引擎 废除Nashorn javascript引擎,在后续版本准备移除掉,有需要的可以考虑使用GraalVM。 ZGC GC是java主要优势之一。...Java平台首席架构师MarkReinhold在JDK 9邮件列中说:“这个JEP将是平台上的一个有用的补充,但是在计划中,它并不像Oracle资助的其他功能那么重要,可能会重新考虑JDK 10或更高版本中实现...此前,Oracle公布的JSR 354定义了一套新的Java货币API:JavaMoney,计划会在Java9中正式引入。但是目前没有出现在JDK新特性中。

    23820

    Java JDK 11:现在可以使用所有新功能

    删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能 目录 哪里可以下载JDK 11 Java 11 JDK中的新功能 从Java JDK 11中删除了什么 Java Development...稳定存储库可以接受选定的错误修复,如果获得批准,则可以做为JDK发布过程中的后期增强功能。 Oracle标准Java实施的最新版本是长期支持(LTS)版本,该版本将获得Oracle的商业支持至少八年。...为了最大限度地降低不兼容的风险,TLS 1.3默认会实现向后兼容模式。应用程序可以根据需要关闭或打开此模式。 Nashorn JavaScript引擎与JJS工具的弃用,旨在将来删除它们。...从Java JDK 11中删除了什么 Java EE EE和CORBA模块在Java SE 9中已弃用,其目的是在以后的发行版中删除它们 - 即JDK 11。...没有第三方CORBA版本,并且不确定第三方是否可以接管CORBA API维护。 JavaFX正在被删除,因此它与Java JDK的两年更新计划无关。

    2K40

    JDK 15 要来了,新特性尝鲜。

    JDK15紧随3月17日发布的JDK14。甲骨文公司遵循标准Java六个月的发布计划,新版本每年发布两次。...删除对Solaris/SPARC、Solaris/x64和Linux/SPARC端口的源代码和构建支持,而在JDK 14中不赞成删除这些端口,但可在将来的版本中删除它们。...记录作为不可变数据的透明载体的类,在jdk14中作为早期预览发布之后,将被包含在jdk15的第二个预览版本中。该计划的目标包括设计一个面向对象构造来表达一个简单的值聚合。...一年前,它已经被集成到jdk12中。 2014年3月在jdk8中首次亮相的Nashorn被移除,由于其被GraalVM等技术淘汰。...OpenJDK 15提议要求删除Nashorn APIs和用于调用Nashorn的jjs命令行工具。 弃用RMI激活机制,以方便将来删除。

    80720

    最强 Java 15 新特性讲解!突然感觉 Java 8 不香了!

    JDK 15 新特性说明 JDK 15 为用户提供了14项主要的增强/更改,包括一个孵化器模块,三个预览功能,两个不推荐使用的功能以及两个删除功能。 1....移除了 Nashorn JavaScript 脚本引擎 移除了 Nashorn JavaScript 脚本引擎、APIs,以及 jjs 工具。...Nashorn 是 JDK 1.8 引入的一个 JavaScript 脚本引擎,用来取代 Rhino 脚本引擎。...文本块最早准备在 JDK 12 添加的,但最终撤消了,然后在 JDK 13 中作为预览特性进行了添加,然后又在 JDK 14 中再次预览,在 JDK 15 中,文本块终于转正,暂不再做进一步的更改。...这是一个从 JDK 12 引入的回收算法,该算法通过与正在运行的 Java 线程同时进行疏散工作来减少 GC 暂停时间。

    2.2K10

    JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK15特性讲解】

    JDK各个版本特性讲解-JDK15特性 一、JAVA15概述 2020年9月15日,java15正式发布,(风平浪静的一个版本)共有14个JEP,是时间驱动形式发布的第六个版本.相关文档: https...Shenandoah 和ZGC 对比 相同: 性能几乎认为是相同的 不同: ZGC是OracleJDK的, 而Shenandoah只存在于OpenJDK中,因此使用时需要注意JDK版本 打开方式: 使用...(延迟激活: 延迟激活对象,推迟到客户第一次使用之前)被标记为删除,在未来的版本中将会删除,自JAVA8依赖一直是可选的,而不是必选项目....,将使OpenJDK社区的贡献者们能够加速开发新功能,从而推动平台向前发展 移除 Nashorn JS 引擎 Nashorn 是JDK提出的脚本执行引擎,该功能时2014年3月发布的JDK8的新特性,在...性能是Nashorn 的两倍以上 JDK15 移除了Nashorn JAVAScript Engine 以及jjs命令工具,具体就是jdk.scripting.nashorn及jdk.scripting.nashorn.shell

    1K20

    Java 11 新特性解读(1)

    从时间节点来看,JDK 11的发布正好处在JDK 8免费更新到期的前夕,同时JDK 9、10也陆续成为“历史版本”,下面是Oracle JDK支持路线图: JDK 11是一个长期支持版本(LTS, Long-Term-Support...从JVM GC的角度,JDK11引入了两种新的GC,其中包括也许是划时代意义的ZGC,虽然其目前还是实验特性,但是从能力上来看,这是JDK的一个巨大突破,为特定生产环境的苛刻需求提供了一个可能的选择。...新的长期支持版本每三年发布一次,根据后续的发布计划,下一个长期支持版Java 17 将于2021年发布。...the Nashorn JavaScript Engine(弃用 Nashorn JavaScript 引擎) 336: Deprecate the Pack200 Tools and API(弃用...局部变量类型推断升级 在var上添加注解的语法格式,在jdk10中是不能实现的。在JDK11中加入了这样的语法。

    32620

    Nashorn在Hello出行物联网平台下的实践与性能调优

    用JS作为规则脚本我们需要做到JS能调用后端API接口,API接口能调用JS本地方法,经过多次技术调研,我们选择了JDK1.8的Nashorn引擎来作为最终落地方案。...它依赖于对 Java 平台 (JSR 292) 上的动态类型语言的支持(这个概念首先在实验性的达芬奇机器中实现,并且是 Java 7 及更高版本的标准部分。)...Nashorn 已包含在Java 8到 JDK 14 中。 从 JDK 6 开始,Java 就已经捆绑了JavaScript 引擎,该引擎基于 Mozilla 的 Rhino 。...该特性允许开发人员将 JavaScript 代码嵌入到 Java 中,甚至从嵌入的 JavaScript 中调用 Java。...从 JDK 8 开始, Nashorn 取代 Rhino 成为 Java 的嵌入式 JavaScript 引擎。Nashorn 完全支持 ECMAScript 5.1 规范以及一些扩展。

    1.1K20

    Java新特性总结(Java 8Java 9Java 11)

    为什么不去了解、去体会它的妙处呢?下面根据生产平台的不同进行Java新特性的总结。 1、 Java 8 新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。...- 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。 - 新工具 − 新的编译工具,如:Nashorn引擎 jjs、      类依赖分析器jdeps。...- Nashorn, JavaScript 引擎 − Java      8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。...- 多版本兼容 JAR 包:多版本兼容 JAR 功能能让你创建仅在特定版本的 Java      环境中运行库程序时选择使用的 class 版本。...而在未来的 Java 11 版本中,通过一个java命令就直接搞定了。

    1.3K11

    JDK1.8新特性(一):JDK1.8究竟有哪些新特性呢

    目前JDK1.8被各大公司、各大项目纷纷使用,作为Java开发中使用最多的版本,细心的你,或许早已发现它与之前版本存在着较大的差异。如果能熟练掌握使用这些差异、新特性,你会发现另一片天地。...(JDK1.8新特性常常在面试中被问及的频率很高哦) JDK1.8概述 JDK1.8,又称之为Java 8(我习惯叫它为JDK1.8,后续统一叫做JDK1.8),是Java语言开发的一个主要版本。...新增了非常多的特性,本专题主要讨论以下几个: Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)。...默认方法:默认方法就是一个在接口里面有了一个实现的方法。 新工具:新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。...Nashorn,JavaScript引擎:JDK1.8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。

    2K50
    领券