canvas教程

JNI入门教程之HelloWorld篇

字号+ 作者:H5之家 来源:H5之家 2015-11-10 09:08 我要评论( )

.NET ToolsTen Must-Have Tools Every Developer Should Download Now James Avery

◎ 首页 > 网页制作 > HTML教程 > INTRODUCE

JNI入门教程之HelloWorld篇

摘要:.NET ToolsTen Must-Have Tools Every Developer Should Download Now James Avery

   本文报告怎样行使JNI技能实现HelloWorld,目标是让读者认识JNI的机制并编写第一个HelloWorld措施。

    Java Native Interface(JNI)是Java说话的当地编程接口,是J2SDK的一部门。在java措施中,我们可以通过JNI实现一些用java说话未便实现的成果。凡是有以下几种环境我们必要行使JNI来实现。

  • 尺度的java类库没有提供你的应用措施所必要的成果,凡是这些成果是平台相干的
  • 你但愿行使一些已经有的类库可能应用措施,而他们并非用java说话编写的
  • 措施的某些部门对速率要求较量苛刻,你选择用汇编可能c说话来实现并在java说话中挪用他们
  •     在《java焦点技能》中,作者提到JNI的时辰,提议不到万不得已不要行使JNI技能,一方面它必要你把握更多的常识才可以驾御,一方面行使了JNI你的措施就会损失可移植性。在本文我们跳过JNI的底层机制,Windowsxp教程cWindows教程,读者最好先把它想象为当地代码和java代码的粘合剂。相关如下图所示:

     

     

     

     





     

     

     

        下面我们开始编写HelloWorld措施,因为涉及到要编写c/c++代码因此我们会在开拓中行使Microsoft VC++器材。

  • 编写java代码
    我们在硬盘上成立一个hello目次作为我们的事变目次,JSP教程c数据库教程,起首我们必要编写本身的java代码,在java代码中我们会声明native要领,代码很是简朴。如下所示
    class HelloWorld
    {
        public native void displayHelloWorld();
        static {
            System.loadLibrary("hello");
        }
       
        public static void main(String[] args) {
            new HelloWorld().displayHelloWorld();
        }
    }
    留意我们的displayHelloWorld()要领的声明,它有一个要害字native,软件教学c办公软件,表白这个要领行使java以外的说话实现。要领不包罗实现,由于我们要用c/c++说话实现它。留意System.loadLibrary("hello")这句代码,它是在静态初始化块中界说的,体系用来装载hello共享库,这就是我们在后头天生的hello.dll(假如在其他的操纵体系也许是其他的情势,好比hello.so)
  • 编译java代码
    javac HelloWorld.java  天生HelloWorld.class文件
  • 建设.h文件
    这一步中我们要行使javah呼吁天生.h文件,这个文件要在后头的c/c++代码顶用到,我们运行
    javah HelloWorld。这样我们可以看到在沟通目次下天生了一个HelloWorld.h文件,文件内容如下
    在此我们差池他举办太多的表明。
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class HelloWorld */
    #ifndef _Included_HelloWorld
    #define _Included_HelloWorld
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     HelloWorld
     * Method:    displayHelloWorld
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
      (JNIEnv *, jobject);
    #ifdef __cplusplus
    }
    #endif
    #endif
  • 编写当地实当代码
    在这部门我们要用C/C++说话实现java中界说的要领,我们在VC++中新建一个Project,然后建设一个HelloWorldImp.cpp文件,内容如下
    #include <jni.h>
    #include "HelloWorld.h"
    #include <stdio.h>

    JNIEXPORT void JNICALL
    Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
    {
        printf("Hello world!/n");
        return;
    }
    留意我们这里include了 jni.h和适才获得的HelloWorld.h文件。因此你要在VC++内里配置好,jni.h在JAVA_HOME/include内里。编译通事后再天生hello.dll文件。
  • 运行java措施
    把上面天生的hello.dll文件复制到我们的事变目次,这时辰我们的目次中包罗HelloWorld.java,HelloWorld.class和hello.dll文件。运行java HelloWorld呼吁,则可在节制台看到Hello world|
    的输出了。
  •     JNI是一门伟大,风趣且富有挑衅性的技能,我们在后头的几篇文章中将声名如安在java说话和Native说话之间举办交互。

    版权声明:本文为博主原创文章,未经博主应承不得转载。

    (责任编辑:admin)

    ------分隔线----------------------------

  • 上一篇:【HTML】HTML开拓,HTML资源下载
  • 下一篇:UE文本编辑器:UltraEdit-32 21.20.1001 猛火汉化版

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 适用于javascript开发者的Processing.js入门教程

      适用于javascript开发者的Processing.js入门教程

      2017-02-13 12:01

    • HTML5 canvas基础入门教程

      HTML5 canvas基础入门教程

      2017-01-25 18:04

    • Silverlight完美入门教程 PDF

      Silverlight完美入门教程 PDF

      2016-12-23 14:00

    • android入门教程Andorid绘图Canvas

      android入门教程Andorid绘图Canvas

      2016-12-18 15:02

    网友点评
    c