有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java每个jar如何在linux和windows上工作?

我知道Java有一个强大的优势:Java代码被编译成字节码,这个字节码由JVM执行,因此Java是关于可移植性的。但是,存在一些函数,它们的实现取决于操作系统

https://speakerdeck.com/raboof/jvm-hacking(第四张幻灯片)
正如您所看到的,有一些依赖于系统的C代码。它是如何工作的?我的意思是,同样的jar使用bind方法可以在windows和linux上执行。毕竟,linux和windows上的绑定方法可能会有很大的不同(参数的数量、名称等等)

你能给我解释一下吗


共 (1) 个答案

  1. # 1 楼答案

    是JVM及其运行库发挥了神奇的作用

    纯Java程序由字节码组成,JVM解释或编译字节码,因此本地CPU/OS可以执行它

    然后是声明为“本机”的方法,Windows x86的特定Java运行时库有它的实现,x64版本有另一个实现,Linux XYZ还有另一个实现,等等。这些本机方法的特征码(参数的数量和类型)在所有实现中都是相同的,在它们包装的Windows/Linux/macOS功能上构建了一个通用的抽象

    如果需要在代码中自己使用本机方法,则必须为程序(.dll、.so或目标系统所需的任何内容)提供所有必要的实现。但幸运的是,这几乎没有必要,因为Java库相当完整