龙空技术网

JEP 419:JDK18将无需JNI调用JVM外部程序和数据

解道Jdon 2385

前言:

现在小伙伴们对“jeppython”大体比较注意,兄弟们都想要知道一些“jeppython”的相关资讯。那么小编在网上收集了一些对于“jeppython””的相关内容,希望我们能喜欢,小伙伴们快快来了解一下吧!

外部函数和内存 API 是由JEP 412提出的,该API能使Java程序无需JNI直接能够调用本地库和处理本地数据。

根据Java 17中反馈进行了改进,并在 Java 18 中重新推出孵化 API。

目标

易用性— 用高级的纯 Java 开发模型替换 Java 本机接口 ( JNI )。性能 — 提供与JNI和sun.misc.Unsafe等现有API相当的性能通用性— 提供对不同类型的外部内存(例如,本机内存、持久内存和托管堆内存)进行操作的方法,并且随着时间的推移,以适应其他平台(例如,32 位 x86)和用其他语言编写的外部函数比 C(例如,C++、Fortran)。安全——默认禁用不安全的操作,只有在应用程序开发人员或最终用户明确选择后才允许它们。

多年来,出现了许多框架来填补 JNI 留下的空白,包括JNA、JNR和JavaCPP。虽然这些框架通常比 JNI 有了显着的改进,但情况仍然不太理想,尤其是与提供一流的本地互操作的语言相比时。例如,Python 的ctypes包可以在本地库中动态包装函数,无需任何胶水代码。其他语言,例如Rust,提供了从 C/C++ 头文件机械地派生本机包装器的工具。

最终,Java 开发人员应该有一个受支持的 API,让他们可以直接使用任何被认为对特定任务有用的本地库,而没有 JNI 的繁琐和笨拙。

JEP 419:JDK18将无需JNI调用JVM外部程序和数据

标签: #jeppython