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

    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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值