包含C语言本机代码的Java程序是否依赖于机器?

包含C语言本机代码的Java程序是否依赖于机器?,java,jvm,Java,Jvm,Java支持本地语言代码,这是否意味着我可以使用Java程序执行C语言代码。如果是,那么这是一个依赖于机器的代码还是独立于机器的代码?由于JVM对java代码应用了许多与安全相关的限制,因此它们会影响C语言中的代码吗? JVM应用的限制是否也适用于本机C语言代码?是的,项目将依赖于机器。如果本地库/代码不能被该JVM链接(例如,如果您有一个Windows JVM和一个ELF/.so库,或者一个32位JVM和64位库),那么System.loadLibrary(String)将失败,并出现不满意的

Java支持本地语言代码,这是否意味着我可以使用Java程序执行C语言代码。如果是,那么这是一个依赖于机器的代码还是独立于机器的代码?由于JVM对java代码应用了许多与安全相关的限制,因此它们会影响C语言中的代码吗?

JVM应用的限制是否也适用于本机C语言代码?

是的,项目将依赖于机器。如果本地库/代码不能被该JVM链接(例如,如果您有一个Windows JVM和一个ELF/.so库,或者一个32位JVM和64位库),那么
System.loadLibrary(String)
将失败,并出现
不满意的linkError

严格来说,C传统上是作为编译语言实现的;它不能直接执行。您可以执行的是由C代码生成的编译代码。这种编译后的代码依赖于体系结构和平台,也就是说,它只能在运行合适操作系统平台的合适arcitecture的CPU上运行。