`

JNI 入门级实例

    博客分类:
  • JAVA
阅读更多
【扫盲知识】什么是JNI及JNI用来做什么?
      JNI是Java Native Interface的缩写,中文为JAVA本地调用。java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
【实现步骤】
    ·编写带有native声明的方法的java类
  ·使用javac命令编译所编写的java类
  ·使用javah -jni java类名生成扩展名为h的头文件
  ·使用C/C++实现本地方法
  ·将C/C++编写的文件生成动态连接库dll文件
     Java类<<<---Dll--->>>C/C++程序
     Java类声明的方法native不用写实现,dll文件相当对外的接口,C语言写实现。
Java文件
public class TestNative{ 
  
  //一个加分运算
  private native int add(int x,int y); 
   
  public static void main(String[] args) { 
    TestNative tn = new TestNative(); 
    int r = tn.add(30,1000); 
    System.out.println("result = "+r); 
  } 

  //加载动态库
  static { 
    System.loadLibrary("TestNative"); 
  } 
}

命令行,当前目录下运行:javac TestNative.java生成class文件
                  运行:javah -jni TestNative生成.h头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class TestNative */

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestNative
 * Method:    add
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_TestNative_add
  (JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif

编写C的实现
#include<jni.h>; 

JNIEXPORT jint JNICALL Java_TestNative_add 
  (JNIEnv *ev, jobject obj, jint x, jint y) 
{ 
	return x+y; 
	
}

编译后可以生成TestNative.dll文件


命令行运行:java TestNative
可以看到输出结果。
  
分享到:
评论

相关推荐

    Android Studio JNI编程入门实例

    通过以上步骤,你已经成功实现了Android Studio中的JNI编程入门。然而,这只是基础,实际开发中可能需要处理更复杂的情况,如多线程、内存管理、错误处理等。同时,CMakeLists.txt作为现代的构建系统,提供了更多...

    JNI入门Demo1.0

    通过学习和实践这个JNI入门Demo1.0,你可以掌握JNI的基本用法,包括声明`native`方法、生成头文件、编写C++代码以及构建和加载动态库。这将为你进一步探索Android的原生开发打下基础,比如使用C++提升性能、接入第三...

    adt-bundle JNI NDK 初学者实例

    在Android中,JNI常用于实现高性能的计算、调用系统级库或与硬件直接通信。使用JNI,开发者可以编写C/C++代码,然后在Java代码中通过`System.loadLibrary()`来加载并调用这些本地方法。 NDK是Google提供的一套工具...

    ndk jni实例源码

    本实例源码"hellojni"是一个典型的NDK和JNI的入门示例,它将帮助我们理解如何在Android项目中集成和使用本地代码。 1. **NDK**:NDK是一套工具集,它提供了编译、构建和运行原生代码的环境。通过NDK,开发者可以在...

    hello-jni.rar_ android jni_android hello jni_android jni hellojn

    《Android NDK与JNI开发详解:从Hello-JNI入门》 Android系统以其开源性和灵活性吸引了大量的开发者,而JNI(Java Native Interface)则是Android平台中连接Java层与原生C/C++代码的重要桥梁。JNI允许开发者在...

    JNI编程指南1

    2. **全面介绍**:第三至第十章系统地阐述了JNI的各种特性,通过丰富的实例详细讲解了如何使用JNI进行Java和本地代码的交互。这些章节深入探讨了JNI接口的使用,包括如何声明和实现本地方法,以及如何处理数据类型和...

    jni4net C# java 相互调用

    无论是在大型企业级应用集成,还是在跨语言开发项目中,jni4net都能发挥重要作用。通过深入理解jni4net的工作原理和使用方法,开发者可以更有效地实现C#和Java之间的代码共享,提高软件的复用性和灵活性。

    Java本地接口(JNI)编程指南和规范

    总之,这本书不仅适合于初学者入门学习,也适用于经验丰富的开发者进一步提高自己的技能水平。无论是希望集成C/C++代码到Java应用程序中,还是想要深入了解Java虚拟机内部工作机制的读者,都能从中受益匪浅。

    jni详解高清pdf文档

    本书按章节结构,先以简单的实例引导读者入门,随后深入探讨JNI的各种高级特性,包括数据类型转换、异常处理、线程安全等。最后,提供了全面的数据类型定义列表,便于查阅。 #### 六、Java平台与主机环境 Java平台...

    Java.2.入门与实例教程

    入门与实例教程"是一个针对初学者的教育资源,旨在帮助新手快速掌握Java编程的基础概念和实战技巧。这个教程可能包含了从基础知识到实际项目案例的全方位讲解,帮助学习者逐步建立起对Java语言的理解。 首先,让...

    教你java和C++的jni编程

    - `JNI编程.doc`: 可能包含了JNI的基础概念、基本用法和示例代码,适合初学者入门。 - `JNI编程系列之高级篇.doc`: 涉及更复杂的话题,如多线程、内存管理、性能优化等,适合有一定经验的开发者。 - `JNI编程系列...

    jni资源,jni资源合计

    - 提供了一个完整的从零开始的JNI实例。 - 包含了大量的示例代码,方便读者理解和实践。 - 对于初学者而言,是一篇很好的入门指南。 #### 2. CSDN博客 - “JNI在Android开发中的应用实例” - **链接**:`...

    Android JNI开发手册

    本手册是Android开发者入门JNI的重要资料,包含了大量示例和教程,帮助开发者高效地学习如何在Android平台上运用JNI。 第一章介绍了JNI的完整概念和用途,是学习JNI的起点。之后的章节通过具体的实例,讲解了如何...

    android jni贴心教程,真正的从0开始入门

    本书通过实例和理论结合的方式,旨在帮助开发者不仅学会如何使用JNI,而且还能够理解它的工作原理和背后的设计哲学。这对于开发性能要求高、需要系统级交互的应用程序尤其重要。 总的来说,对于希望深入了解Java...

    网上整理的JNI教程

    它不仅适合初学者入门,也适用于有一定经验的开发者深入理解JNI的技术细节。 #### 二、JNI基础知识 - **JNI-百度百科**:这一章节提供了JNI的基本定义、发展历程以及使用场景等内容,有助于读者快速了解JNI的基本...

    JavaJNI资料全整理含自己的常见问题总结.pdf

    #### Java基础知识——JNI入门介绍(下) 1. **概念回顾**:回顾上一节中介绍的基础概念。 2. **深入讲解**:深入讲解JNI的工作原理和技术细节。 3. **实践案例**:通过实践案例来巩固所学知识。 #### Java调用...

    android ndk开发实例代码

    这个"android ndk开发实例代码"提供了一个入门级的示例,帮助开发者理解NDK和JNI(Java Native Interface)的结合使用。 JNI是Java平台的标准部分,它为Java代码提供了调用本地(非Java)代码的能力。在Android开发...

    Android studio编译NDK实例

    "hello-jni"通常是一个初学者的入门示例,展示了如何在Android项目中设置和调用原生代码。 以下是如何在Android Studio中操作的步骤: 1. **创建新项目**:启动Android Studio,选择“New Project”,然后在模板中...

    B4A开发实例及对应源码

    从基础的入门到高级的数据库和系统调用,开发者可以通过这些实例逐步提升自己的技能。同时,源码分析有助于理解和消化理论知识,从而在实际开发中游刃有余。无论你是Android新手还是有经验的开发者,这个资料包都能...

    PJSIP2.7.2 android 上的实例

    总之,PJSIP2.7.2的Android实例为开发者提供了一个快速入门VoIP应用开发的平台,结合OpenH264库,能够实现高质量的音视频通话功能。通过深入研究和实践,开发者可以进一步掌握PJSIP的高级特性,例如多路通话、会议、...

Global site tag (gtag.js) - Google Analytics