知识大全 步入本地方法圣殿的七个步骤

Posted

篇首语:怀抱观古今,寝食展戏谑。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 步入本地方法圣殿的七个步骤相关的知识,希望对你有一定的参考价值。

Java 技巧:步入本地方法圣殿的七个步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  只编写一套 Java 代码即可使它在安装了 Java 运行时环境的每个系统上运行 这是 Java 的主要优点之一 但这种平台独立性有一大缺点 如何利用大量的现有代码呢?解决这一问题的技巧即使用所谓的 本地方法接口   编写本地方法需要将 C 代码导入 Java 应用程序中 在这篇技巧中 我将逐步分析创建本地方法以及在 Java 应用程序中使用这些本地方法的基本步骤     步入本地方法圣殿的七个步骤  创建本地方法的步骤如下所示     编写 Java 代码   编译 Java 代码   创建 C 头文件( h 文件)   创建 C stubs 文件   编写 C 代码   创建共享代码库(或 DLL)   运行应用程序   我们的任务是在本地方法内向控制台输出一些文本 本例的细节将特定于一种类 Unix 的系统 明确地说 就是 Linux 我还会指出在细节上与其他平台不同的地方     编写 Java 代码  像往常一样编写 Java 代码 要在 Java 代码中使用本地方法 必须完成两项任务 首先 为您要使用的每个本地方法编写本地方法声明 这与编写普通 Java 方法接口的声明没什么不同 但您必须指定 native 关键字 如下所示     public native void printText ();      必经的第二个环节是您必须显式地加载本地代码库(我们稍后会创建它) 为此 我们在类的一个静态块中加载这个库     static    System loadLibrary ( happy );      为了将这些代码整合在一起 请创建一个名为 Happy java 的文件 其内容如下所示     class Happy    public native void printText ();    static    System loadLibrary ( happy ); /* 请注意 类名是小写的! */      public static void main(String[] args)    Happy happy = new Happy ();  happy printText ();        编译 Java 代码  编译 Happy java 文件     % javac Happy java    创建 C 头文件  为了将我们的 C 代码用作本地方法 您必须使用一些极好的固定做法 Java 编译器的 javah 功能将根据 Happy 类生成必要的声明 这将生成 Happy h 文件 以供在我们的 C 代码中包括它     % javah Happy    创建 C stubs 文件  回忆一下 C++ 转换程序对 C++ 方法名的处理 Java 编译器也有类似的愚蠢行为 为了减轻不得不编写大量乏味代码(以便在 Java 运行时系统中调用 C 代码)的痛苦 Java 编译器可为我们自动生成必要的框架代码 (trampoline code)     % javah stubs Happy    编写 C 代码  现在 我们编写用来显示问候语的实际代码 根据约定 我们将这段代码存入一个文件中 该文件的名称为我们的 Java 类名加上字符串 Imp 其结果就是 HappyImp c 请将以下代码存入 HappyImp c     #include /* 标准本地方法信息 */  #include Happy h /* 前面生成的头文件 */  #include /* 标准 C IO 信息 */    void Happy_printText (struct HHappy *this)    puts ( Happy New Year!!! );      将 C 代码与 Java 对接还涉及许多其他方面 如如何传递和返回 myriad 类型 有关详细信息 请参阅 Java Tutorial 或 Hermetica 的本地方法论文(有关 URL 请参阅参考资源部分)     创建共享库  本部分是与系统最紧密相关的部分 似乎每种平台和每种编译器/链接器的组合都用不同的方法来创建和使用共享库 如果您使用的是 Microsoft Windows 平台 要了解详细信息 请查看您所用的 C 编译器的文档     如果您是 Linux 用户 请阅读以下使用 GCC 创建共享库的步骤 首先 编译我们所创建的 C 源文件 您必须通知编译器在何处查找此 Java 本地方法的支持文件 但此处的主要技巧是您必须显式通知编译器生成位置无关的代码     % gcc I/usr/local/java/include I/usr/local/java/include/genunix fPIC c Happy c HappyImp c      现在 请用下面极好的固定做法根据所生成的对象 ( o) 文件创建共享库     % gcc shared Wl soname libhappy so o libhappy so Happy o HappyImp o    请将共享库文件复制为标准短名     % cp libhappy so libhappy so    最后 您可能需要通知动态链接程序在何处查找这个新的共享库文件 使用 bash shell     % export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH    执行应用程序  像往常一样运行此 Java 应用程序     % java Happy    好了 这就是所要做的全部工作 感谢 Tony Dering 提供了 Linux 特定的固定做法     设计点滴  在埋头为全部遗留代码编写本地方法之前 我提醒您一定要仔细审查系统 看是否可用更好的方法将它们结合到 Java 中 例如 在 Java 中 您可以用 Java 数据库连接 (JDBC) 甚至更高级的解决方案来访问数据库 因此 请查看您掌握的全部技巧 并使用就您手头的项目而言比较合理的解决方案 cha138/Article/program/Java/JSP/201311/19604

相关参考

知识大全 战国时期的七个国家哪些是大国,哪些是小国

战国时期的七个国家哪些是大国,哪些是小国?初期秦国,魏国,赵国,楚国,齐国,燕国都是大国,其中楚国最大,韩国是小国;到后期魏国也沦为了小国,而秦国则是无可比拟的超级大国。战国时期的七个国家哪个国家最强

知识大全 成功面试的七步法

如果你想在面试中有出色的表现,就需要采取以下七个步骤:第一步:对用人单位情况及面试过程进行调查研究要对面试进行准备,你首先应该对用人单位和要对你进行面试的人的情况,以及面试过程做一些调查研究。某单位一

知识大全 Jakarta Struts应用的七个经验(3)

JakartaStruts应用的七个经验(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  把

知识大全 Jakarta Struts应用的七个经验(1)

JakartaStruts应用的七个经验(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  编

知识大全 Jakarta Struts应用的七个经验(5)

JakartaStruts应用的七个经验(5)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使

知识大全 Jakarta Struts应用的七个经验(4)

JakartaStruts应用的七个经验(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使

知识大全 JavaScript初学者应注意的七个细节

JavaScript初学者应注意的七个细节  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 PHP比ASP优秀的七个理由[2]

PHP比ASP优秀的七个理由[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MySQL使P

知识大全 PHP比ASP优秀的七个理由[1]

PHP比ASP优秀的七个理由[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP是微软公

知识大全 有效准备面试的七步法

如果你想在面试中有出色的表现,就需要采取以下七个步骤:第一步:对用人单位情况及面试过程进行调查研究要对面试进行准备,你首先应该对用人单位和要对你进行面试的人的情况,以及面试过程做一些调查研究。某单位一