对java跨平台的疑惑!使用了JNI,或native的方法,就不能跨平台吗?
发布网友
发布时间:2022-04-23 17:14
我来回答
共4个回答
热心网友
时间:2023-10-10 11:30
JNI是使用了dll 即c的东西, c不能跨平台(windows下编译的东西和linux下编译的东西不同)
java当然是跨平台的, java面对的是jvm, 而jvm面对的是操作系统, 只要你系统中成功安装的了jvm, 那么就是一次编译处处运行
热心网友
时间:2023-10-10 11:31
JNI 本身的名字就知道,是平台依赖的。JNI 是JAVA的扩展。
JNI 也可以做到跨平台,就是写JNI时考虑不同平台的差别。
当然,和JAVA本身一样,不同平台,还是需要重新编译的。追问一般是编译一次就能在任何平台上运行,这是跨平台的意思。因为编译出来的是字节码文件,即.class文件,而到具体平台由具体的JVM运行,进行翻译成本地代码。但是不明白Object使用了native的方法,还说是跨平台。。。为啥呢?
追答JNI 是JAVA和系统的接口。一般的JAVA应用,还是可以真正跨平台的。如一般的WEB应用、Application应用等
热心网友
时间:2023-10-10 11:31
跨平台的含义不是这样理解的 跨平台的意思是,只要写一次代码就能在多个平台上运行,比如Linux平台,Windows平台,UNIX平台等等配置了JAVA运行环境的平台
热心网友
时间:2023-10-10 11:32
六年了,我想你应该早就明白了这个原理,只是希望后面如果还有疑惑的人能够明白。
正式回答:
native是告诉操作系统这个方法由你来实现,而我JDK是什么也不会做的。JDK只负责通知,接收方是Windows那就用你Windows的办法给我实现好这个方法,接收方是Linux那你Linux就给我把这个方法实现好。所以不管什么操作系统JDK做的事情都是一样的。