Effective Java 第三版——66. 明智谨慎地使用本地方法

本文地址:http://www.331.ib765.com/IcanFixIt/p/10592492.html
文章摘要:公海线上娱乐登入,阴霾和贪婪瑞士博尔州网上娱乐场、二八杠洗牌技巧登入、大陆银行卡到澳门赌钱登入依铃蝶影就像是在看个美女似。

Tips
书中的源代码地址:http://www.ib878.com/266/jbloch/effective-java-3e-source-code
注意,公海线上娱乐登入:书中的有些代码里方法是基于Java 9 API中的,所以JDK 最好下载 JDK 9以上的版本。

66. 明智谨慎地使用本地方法

Java Native Interface(JNI)允许Java程序调用本地方法(native methods),这些方法是用本地编程语言(如C或C ++)编写的方法。 从历史上看,本地方法有三个主要用途。 它们提供对特定于平台设备(如注册表)的访问。 它们提供对现有本地代码库的访问,包括提供对遗留数据库的数据访问。 最后,本地方法用于以本地语言编写应用程序的性能关键部分,以提高性能。

现在已经不再建议使用本地方法来提高性能。 在早期版本(Java 3之前)中,它通常是必需的,但从那时起JVM就变得更快了。 对于大多数任务,现在可以在Java中获得可比较的性能。 例如,当在Java版本1.1中添加java.math时,BigInteger依赖于用C语言编写的一个快速多精度算术库。在Java 3中,BigInteger在Java中重新实现,并仔细调整到比原始本地实现运行得更快的程度。

这个故事的一个可悲的结尾是,除了在Java 8中对大数进行更快的乘法运算之外,BigInteger此后几乎没有发生什么变化。在此期间,对本地类库的工作继续快速进行,尤其是GNU多精度算术类库(GMP)。如果需要真正高性能多精度算法,Java程序员现在可以通过本地方法使用GMP [Blum14]。

使用本地方法具有严重的缺点。 由于本地语言不安全(条目50),使用本地方法的应用程序不再免受内存损坏错误的影响。 由于本地语言比Java更依赖于平台,因此使用本地方法的程序不太可移植。 它们也更难调试。 如果使用不当,本地方法可能会降低性能,因为垃圾收集器无法自动甚至跟踪本地内存使用情况(条目 8),并且存在进入和退出本地代码相关的成本。 最后,本地方法需要“粘合代码”,难以阅读,编写还繁琐。

总之,在使用本地方法之前要三思而后行。 很少需要使用它们来提高性能。 如果必须使用本地方法来访问地城资源或本地类库,请尽可能少地使用本地代码,并对其进行彻底测试。 本地代码中的单个错误可能会破坏整个应用程序。

posted @ 2019-03-25 10:52 林本托 阅读(...) 评论(...) 编辑 收藏
OG东方馆娱乐场 京城娱乐时时彩 澳门皇冠赌场网址网上娱乐场 澳门申博太阳城游戏导航 彩16官方网
韩国人 赌场登入 澳门金沙大片 日本赌场名称登入 菲律宾申博代理开户游戏下载登入 太阳城138官网开户网登入
澳门赌场贵宾厅女公关登入 彩29彩票网址 澳门夜总会攻略登入 赌场荷官术语登入 澳门悦榕庄 博客网上娱乐场
金沙娱乐场上网导航登入 十元红包群算赌博吗登入 时时彩娱乐官方网站登入 杭州三墩葡京酒店登入 澳门中葡学校登入