【第36条】谨慎地使用本地方法

xiaoxiao2026-09-12  10

    Java Native Interface(JNI,Java本地接口),可以调用本地方法。这里的“本地”是指用其他语言(如 C, C++) 编写的特殊方法。

 

    从历史上看,使用JNI主要有三个用途:

 

1)由于Java程序是运行在虚拟机之上的,虚拟机作为中间件,带来的平台无关性的好处的同时,也使得那些要求访问OS甚至硬件的底层操作变得无所适从。通过JNI可以调用C/C++等编写的代码,来提Java完成,比如读写Windows的注册表,取得硬盘的序列号等。

 

2)由于一些“古老”的资源要使用“古老”的代码库,为其再开发一个Java版本是不划算的。于是JNI又派上用场了。

 

3)最后是为了性能。Java的性能可能是所有语言中几乎最慢的了,关键性的部分可以通过JNI调用性能好的语言,如C/C++/Colob等。但是,随着Java版本的升级,性能在不断提高,如今绝大多数地方已经不值得使用JNI来提高性能了。

 

    然而,使用JNI是有着相当的弊端的。就是从此失去了Java的平台无关性。对于第一点中的原因,很好理解吧,你通过JNI调用了一段C++的代码去读Windows的注册表。如果移植到其他OS上,何来的注册表??

 

 

 

【Effective Java 学习笔记】系列连载专题请见: http://tonylian.iteye.com/categories/64208

 

转载请注明原文地址: https://www.6miu.com/read-5052599.html

最新回复(0)