java—kotlin如何自动为jvm生成绑定?

4c8rllxm  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(294)

我对语言互操作感兴趣。
对于kotlin/jvm目标,我们可以直接调用java代码,而无需定义任何绑定接口或使用swig库、jni等工具。这是如何实现的?

bweufnob

bweufnob1#

简而言之:java运行时处理所有这些;不需要绑定。
jvm运行的所有类和接口(除了使用jni或类似的本机调用)都作为java字节码(通常以.class文件的形式)提供给它;无论字节码是从java、kotlin、groovy、scala还是任何其他jvm语言编译的,都是一样的。
字节码包含类或接口的所有构造函数、字段和方法的详细信息。  当它引用其他类时,它通过它们的完全限定名(例如。 java.lang.String )-jvm知道如何查找(例如,通过搜索类路径)并加载给定其完全限定名的任何类。  (具体来说,它使用一个类加载器——通常是系统加载器,不过在适当的情况下也可以使用自定义加载器。)  装入类之后,可以构造示例并直接调用它们的方法。
因此jvm不需要任何辅助手段来识别或访问类/接口或它们的方法;它都在字节码中指定,可以直接访问。
(如果您想了解更多详细信息,java虚拟机规范可能是最终的参考。)

相关问题