建议:谨慎的使用本地方法。

        Java Native Interface(JNI)允许Java应用程序可以调用本地方法,所谓本地方法是指用本地程序设计语言(比如C或者C++)来编写的特殊方法。本地方法在本地语言中可以执行任意的计算任务,并返回到Java程序设计语言。

        从历史上看,本地方法主要有三种用途。他们提供了“访问特定与平台的机制”的能力,比如访问注册表和文件锁。他们还提供了访问遗留代码块的能力,从而可以访问遗留数据。最后,本地方法可以通过本地语言,编写应用程序中注重性能的部分,以提高系统的性能。

        使用本地方法来访问特定与平台的机制是合法的,但是随着Java平台的不断成熟,他提供了越来越多以前只有宿主平台上才拥有的特性。例如,1.4发行版本中新增加的java.util.prefs包,提供了注册表的功能,1.6发行版本中增加了java.awt.SystemTray,提供了访问桌面系统托盘区的能力。使用本地方法来访问遗留代码也是合法的。

        使用本地方法来提高性能的做法不值得提倡。在早期的发行版本中,这样做往往是很有必要的,但是JVM实现变得越来越快了。对于大多数任务,现在即使不使用本地方法也可以获得与之相当的性能。

        使用本地方法有一些严重的缺点:因为本地语言不是安全的。所以,使用本地地方法的应用程序也不再能免受内存毁坏错误的影响。因为本地语言是与平台相关的,使用本地方法的应用程序也不再是可自由移植的。使用本地方法的应用程序也更难调试。在进入和退出本地代码时,需要相关的固定开销,所以,如果本地代码只是做少量的工作,本地方法就可能降低性能。最后一点,需要“胶合代码”的本地方法编写起来单调乏味,并且难以阅读。

        总而言之,在使用本地方法之前务必三思。极少数情况下会需要使用本地方法来提高性能。如果你必须要使用本地方法来访问底层的资源,或者遗留代码库,也要尽可能少用本地代码,并且要全面进行测试。本地代码中的一个Bug就有可能破坏整个应用程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值