Object JavaJNI如何与Kotlin/Native交互以查找对象值?

Object JavaJNI如何与Kotlin/Native交互以查找对象值?,object,java-native-interface,kotlin,native,Object,Java Native Interface,Kotlin,Native,从JetBrains网站: Kotlin/Native是一种将Kotlin编译为在没有任何VM的情况下运行的本机二进制文件的技术 但是Kotlin如何与JNI交互呢?据我所知,如果使用JNI的C/C++程序想要访问java字段,它必须使用GetFieldID函数,但是C程序需要来自JVM的描述对象及其值的信息 kotlin/Native如何解析字段的值,如果kotlin生成的程序不依赖于VM,它如何获取Java字段的值?什么是kotlin Native Kotlin/Native与JNI的功能不

从JetBrains网站:

Kotlin/Native是一种将Kotlin编译为在没有任何VM的情况下运行的本机二进制文件的技术

但是Kotlin如何与JNI交互呢?据我所知,如果使用JNI的C/C++程序想要访问java字段,它必须使用
GetFieldID
函数,但是C程序需要来自JVM的描述对象及其值的信息

kotlin/Native如何解析字段的值,如果kotlin生成的程序不依赖于VM,它如何获取Java字段的值?

什么是kotlin Native Kotlin/Native与JNI的功能不同,该站点对Kotlin/Native的描述如下

Kotlin/Native是一种将Kotlin编译为在没有任何VM的情况下运行的本机二进制文件的技术。它包括用于Kotlin编译器的基于LLVM的后端和Kotlin运行时库的本机实现。Kotlin/Native主要用于在不需要或不可能使用虚拟机(如iOS、嵌入式目标)的平台上进行编译,或者在开发人员需要生成大小合理、不需要额外运行时的自包含程序的平台上进行编译。 []


JNI允许Java代码与本机代码对话,而Kotlin/native允许您将Kotlin代码编译成不需要JVM运行的本机可执行文件。

我的问题不是JNI和Kotlin/native之间的区别,而是Kotlin/native如何取代JNI,例如,在.net native中替换P/invoke调用编译器加载包含非托管代码的dll之后,他在最终可执行文件中发出代码,kotlin/native的进程是否相同。kotlin native与JNI做的事情不同,因此它不需要处理本机调用如果它不这样做,我们现在都知道kotline是在java字节码下构建的,java字节码必须使用jni调用本机代码来做很多事情Skotlin/native不会编译成java字节码,它可以在JVM之外运行,因此,JNI是不可访问的。这在kotline站点是正确的:请注意,我们不打算让任意Kotlin/JVM程序在Kotlin/Native或Kotlin/JS上运行。这相当于实现另一个JVM,这对运行时来说既需要大量的工作,也有很多限制。我们走的是另一条路:为所有平台提供公共语言,同时通过与平台代码的无缝互操作性创建公共库。谢谢你,伙计。