Pau*_*lor 8 java nashorn java-14 java-15
在我的 Java 应用程序中,一个重要的小功能是能够根据音频文件的元数据(例如专辑/艺术家 -title)重命名音频文件,并且使用Javascript指定掩码,这使得重命名功能非常灵活和强大。
我知道 Javascript 已被弃用,但现在看来它实际上将从 Java 15 中删除。这种功能的丢失对我来说可能是一个主要问题,所以我问,即使它被正式删除,我是否可以继续在 Java 15 应用程序中使用 Javascript,即它是否可以作为 opensrc 插件使用,我可以在我自己的风险。开发在 Ecmascript 5.1 停止的事实对我来说不是一个主要问题。
有人提到使用GraalVM,但没有解释如何执行此操作,我认为这不适合我的场景,特别是我的应用程序可用于某些 32 位Arm环境,而 GraalVM 不可用于 32 位。
我已经从 Java 11 转移到 Java 14 以解决其他一些问题,所以我不能真正回到 Java 11,而且由于 Java 14 不是LTS版本,我不能真正坚持使用 Java 14 很长一段时间。
这是我的大部分 Javascript 代码
try
{
mask = includeUserDefinedFunctions(mask);
ScriptEngine engine = manager.getEngineByName("JavaScript");
for(SongFieldName next:SongFieldName.values())
{
if(next.getScriptVar()!=null && next.getSongFieldKey()!=null)
{
engine.put(next.getScriptVar(), cleanValue(song.getFieldValueSpaceSeparatedOrEmptyString(next.getSongFieldKey()), song));
}
}
String result = (String)engine.eval(mask);
return result;
}
catch(ScriptException se)
{
throw se;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 Nashorn 的独立版本: https: //github.com/openjdk/nashorn。
Nashorn 是一个 JPMS 模块,因此请确保它及其传递依赖项(Nashorn 依赖于多个 ASM JAR)位于应用程序的模块路径上,或者适当地添加到模块层,或者以其他方式配置为模块。
虽然独立 Nashorn 主要与 Java 15 及更高版本一起使用,但它也可以与 也具有内置版本 Nashorn 的Java 版本 11 至 14 一起使用。有关两个版本都存在时的使用详细信息,请参阅此页。
您可以在任何 JVM 上运行 GraalVM 的 JavaScript 引擎,作为从 Maven 中心提取的一堆依赖项。这是一个例子:https : //github.com/graalvm/graaljs/blob/master/docs/user/RunOnJDK.md
如果没有 GraalVM 编译器,它会更慢,因为 GraalVM 的语言实现框架需要来自编译器的某些 api,而其他 JIT 中没有。
如果您考虑迁移应用程序以使用 GraalVM 的 JavaScript,如果您使用某些 Nashorn 功能,它可能无法在代码之外运行,请考虑从--nashorn-compatibility-mode(这里有更多详细信息:https : //github.com/graalvm/ graaljs/blob/master/docs/user/NashornMigrationGuide.md)。
| 归档时间: |
|
| 查看次数: |
1824 次 |
| 最近记录: |