`
TonyLian
  • 浏览: 402196 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【第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

 

分享到:
评论

相关推荐

    解决多出的本地连接的方法

    3. **使用第三方工具**:部分第三方网络管理工具提供了更简便的删除多余连接的功能,例如使用NetSetMan等软件。 #### 四、预防多余本地连接的产生 1. **定期更新系统及驱动程序**:确保操作系统及网络适配器驱动...

    jni开发手册

    2. **实现本地方法**:使用C或C++编写本地方法的实现,并将其实现为共享库。 3. **加载本地库**:通过`System.loadLibrary()`方法加载本地库。 4. **调用本地方法**:Java代码通过JNI接口调用本地方法。 #### 五、...

    计算机网络系统安全管理规定.docx

    第三条指出网络系统的管理和维护由总裁办公室内务主管负责,未经许可,任何部门和个人不得擅自改动网络设备或配置,确保了网络管理的集中化和专业化。 第四条禁止利用联网计算机进行损害本地局域网服务器和工作站的...

    android_jni操作指南.zip

    Android JNI(Java Native Interface)是Android系统中用于Java和C/C++代码交互的桥梁,它允许开发者在Android应用中调用本地(Native)代码,从而实现高性能计算、利用硬件特性或者整合第三方C库等功能。...

    yahoo 前端优化34条规则

    - **优点**:解决第三方内容加载问题,如广告。 - **缺点**:即使内容为空也会占用资源,影响页面加载速度。 - **解决方案**: - **谨慎使用iframe**:仅在必要时使用,并确保其内容对用户体验有益。 - **优化加载...

    移动web最佳实践

    - **定义**:减少对第三方站点的依赖,尽可能本地化资源。 - **实现方法**: - 存储常用资源,如字体和图像,于本地服务器; - 使用缓存策略降低重复加载; - 监控外部资源的可用性,及时替换失效链接。 ##### ...

    修改电脑网卡MAC地址的方法.docx

    例如,用户可以在DOS环境下通过网卡的Setup程序来完成,或者使用第三方软件如“超级兔子魔法设置”等工具。这些工具通常提供图形化的界面,使得修改过程更加简单直观。尽管如此,对注册表进行修改需要谨慎操作,以免...

    Git学习手册

    - **第三方托管的选择:** - **GitHub:** 最知名的Git仓库托管服务之一,提供免费和付费计划。 - **GitLab.com:** GitLab的在线托管服务,同样提供免费和付费选项。 - **Bitbucket:** Atlassian提供的托管服务...

    计算机病毒与防范练习题.doc

    所以第三题答案是D)对U盘进行格式化。 4. 病毒对计算机的影响:计算机病毒通常不会导致硬件物理损坏(如使磁盘发霉或内存芯片损坏),也不会直接影响计算机的运算结果,但它们可以破坏计算机系统和数据。因此,第四...

    Python PEP8编码规范

    通常,标准库的导入应该放在最前面,接着是第三方库的导入,最后是项目的本地模块导入。这样做的目的是为了提高代码的可读性和清晰度,让读者能够快速了解依赖关系。 #### 五、空格 在某些情况下,如运算符前后...

    做网站最实用的88种推广方法.docx

    这是一种比较特殊的推广方式,通过在网站页面底部或内容中加入自己的“第三极”标识或编号,以此来增加知名度并可能带来额外收入。“第三极”可能指的是某种网络货币或积分系统,具体实施时需结合实际情况考虑。 ##...

    Git学习笔记

    - 注意:谨慎使用此命令,避免误删重要文件。 #### 八、关联远程仓库 - **远程仓库关联**:使用`git remote add origin <url>`命令将本地仓库与远程仓库关联起来。 - `<url>`指的是远程仓库的URL。 - 关联成功...

    JAVA 编码规范_沈阳东软软件股份有限公司

    - **synchronized语句**:synchronized块用于实现线程安全,应谨慎使用。 **8.3 标签语句** 标签语句可用于跳出多重循环或异常处理等复杂结构。 #### 九、性能优化常识 **9.1 前提** 性能优化需要在不影响代码...

    GIT魔法 一份git使用的教程

    ### Git魔法——一份Git使用的教程 #### 一、前言 **Git** 是一款非常强大的分布式版本控制系统,因其高效、灵活而备受推崇。对于初学者来说,了解Git的基本概念及如何使用它至关重要。 #### 二、Git核心概念 1....

    最强大的xp精简教程.docx

    ### 第三章:Documents and Settings文件夹 此文件夹包含了用户的配置信息和文档,可以检查并删除不再需要的用户账户,或者合并用户设置以减少冗余。 ### 第四章:Program Files文件夹 这里存放了所有应用程序,...

    python编码规范

    - **按照标准库、第三方库、本地模块的顺序排列导入语句**。 - **避免使用通配符导入**(如`from module import *`),这样可以避免命名空间污染和降低调试难度。 #### 五、空格 空格的正确使用对于代码的整洁至关...

    svn中文资料不可多的

    TortoiseSVN提供了这样的功能,但应谨慎使用。 ##### 15.5 统计信息 统计信息提供了有关提交频率、贡献者排名等统计数据,有助于评估团队成员的活跃度和贡献程度。 #### 十六、分支/标记 分支和标记是版本控制中...

    \Linux一句话精彩回答.pdf

    - **描述**: 使用`apt`或相应的包管理器可以轻松地安装所需的软件包。 ### 40. 设置/删除环境变量 - **命令**: `export VAR_NAME=value` (设置) - **描述**: 使用`export`命令可以设置环境变量。例如,`export PATH...

Global site tag (gtag.js) - Google Analytics