`
TonyLian
  • 浏览: 396639 次
  • 性别: 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

 

分享到:
评论

相关推荐

    量具的使用方法

    第三章 螺旋测微量具 17 一 外径百分尺的结构 17 二 百分尺的工作原理和读数方法 19 三 百分尺的精度及其调整 20 四 百分尺的使用方法 21 五 百分尺的应用举例 22 六 杠杆千分尺 23 七 内径百分尺 23 八 内测百分尺 ...

    C++编程规范101条规则、准则与最佳实践PDF.rar

    第36条 优先提供抽象接口 62 第37条 公用继承即可替换性。继承,不是为了重用,而是为了被重用 64 第38条 实施安全的覆盖 66 第39条 考虑将虚拟函数声明为非公用的,将公用函数声明为非虚拟的 68

    第36节 母版的介绍与使用.flv

    第36节 母版的介绍与使用.flv

    Openoffice藏文本地化及其实现.pdf

    142.1 软件本地化9-102.2 藏文化102.3 国际化10-112.4 本地化的意义11-142.4.1 软件本地化的原因11-132.4.2 软件本地化带来如下的好处132.4.3 软件本地化的关键优势13-142.4.4 实施软件本地化工程主要步骤14第三章 ...

    yuchuangu85#Develop-Source#01. 考虑使用静态工厂方法替代构造方法1

    声明的返回类型的任何子类都是允许的。返回对象的类也可以随每次发布而不同。EnumSet 类(详见第 36 条)没有公共构造方法,只有静态工厂。在 OpenJDK

    oracle database 10g 完整参考手册part1

    第36章 面向对象的高级概念 第Ⅶ部分 Oracle中的Java 第37章 Java简介 第38章 JDBC程序设计 第39章 Java存储过程 第40章 Oracle真正应用群集 第41章 网格体系结构和管理 第Ⅷ部分 指南 第42章 Oracle数据字典指南 第...

    Jtest使用方法,一步一步教会你,声明这是一个朋友给地

    第三章 Jtest高级使用 17 一. 从Jbuilder导入测试工程(import project) 17 二. 自定义测试配置(JTest Configuration) 17 三. 使用Objects 提高测试覆盖率 21 四. 测试用例分析 30 五. 图形化增加测试用例 32 六. ...

    jonykchen#effective-java-3rd-chinese#01. 考虑使用静态工厂方法替代构造方法1

    声明的返回类型的任何子类都是允许的。返回对象的类也可以随每次发布而不同。EnumSet 类(详见第 36 条)没有公共构造方法,只有静态工厂。在 OpenJDK

    ActionScript 3.0 开发人员指南 (AS3开发帮助文档)

    第 36 章 : 使用菜单 第 37 章 : AIR 中的任务栏图标 第 38 章 : 使用文件系统 第 39 章 : 存储本地数据 第 40 章 : 在 AIR 中使用本地 SQL 数据库 第 41 章 : 使用字节数组 第 42 章 : 网络和通信基础知识 ...

    网络安全管理规定(1).doc

    信息安全管理制度 (第十五册 网络安全管理规定) 网络安全管理规定 第一章 总则 第一条 为加强本单位重要信息系统的安全平稳运行,有效管理,防止非授权的资源访问、使用 及控制,... 第三十六条 产品厂商负责向本单位

    C# 使用方法 入门教程

    第Ⅰ部分 C# 语 言 第1章 .NET体系结构.... 3 1.1 C#与.NET的关系...... 3 1.2 公共语言运行库...... 3 1.3 详细介绍中间语言...... 6 1.3.1 面向对象和接口的支持..... 7 1.3.2 相异值类型和引用类型..... 8 1.3.3 ...

    数据库系统安全配置管理办法.txt

    第二章 数据库系统配置管理责任 第三条 数据库系统配置管理的主要责任人员是数据库系统管理员,根据《系统运行安全管理制度》要求,负责对所管辖的数据库系统进行安全配置。 第四条 数据库系统管理员应定期对所管辖...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

    本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。... 第36章使用管道  第37章使用精细访问控制  第38章使用精细审计  第39章使用预警事件  第40章转换ROWID  第41章其他常用包 习题答案

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

    内容简介  本书是专门为oracle应用开发人员提供的sql和pl/sql编程... 第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 习题答案

    简单有效的日语五十音学习方法や第三十六节.mp4

    日语五十音,日语中的发音的音节,有平假名、片假名之分,各有五十个音,构成日语中发音基本的日语五十音图。相当于汉语的拼音,英文的音标,是学习日语的基本、入门。

    JAVA2核心技术(第二版中文PDF).part2.rar

    JAVA2核心技术(第二版中文PDF)本书一共17章。 目录见下: 第一章 java简介 第二章 java编程环境 第三章 java基本编程结构 第四章 对象与类 第五章 进一步介绍OOP:继承 ...第十六章 本地方法 第十七章 java发展概览

    Oracle 11g SQL和PL SQL从入门到精通.part1

    文件太大,分为2部分 ...内容简介  本书是专门为oracle应用开发人员... 第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 习题答案

    JAVA2核心技术(第二版中文PDF).part1.rar

    JAVA2核心技术(第二版中文PDF)本书一共17章。 目录见下: 第一章 java简介 第二章 java编程环境 第三章 java基本编程结构 第四章 对象与类 第五章 进一步介绍OOP:继承 ...第十六章 本地方法 第十七章 java发展概览

    Delphi XE10自带皮肤的使用方法

    2、尝试下载安装第三方的皮肤,但会使用APP尺寸暴增。 3、经测试,发现XE10竟然自带了36种皮肤,亲测可用,添加了皮肤后窗口,实在是太好看了! 4、本文详细介绍了Delphi XE10自带皮肤的使用方法,图文并茂,操作...

    数学物理方法习题答案解析

    梁昆淼 著 很好的答案,你可以参考一下 我很喜欢

Global site tag (gtag.js) - Google Analytics