【扫盲知识】什么是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编程入门。然而,这只是基础,实际开发中可能需要处理更复杂的情况,如多线程、内存管理、错误处理等。同时,CMakeLists.txt作为现代的构建系统,提供了更多...
通过学习和实践这个JNI入门Demo1.0,你可以掌握JNI的基本用法,包括声明`native`方法、生成头文件、编写C++代码以及构建和加载动态库。这将为你进一步探索Android的原生开发打下基础,比如使用C++提升性能、接入第三...
在Android中,JNI常用于实现高性能的计算、调用系统级库或与硬件直接通信。使用JNI,开发者可以编写C/C++代码,然后在Java代码中通过`System.loadLibrary()`来加载并调用这些本地方法。 NDK是Google提供的一套工具...
本实例源码"hellojni"是一个典型的NDK和JNI的入门示例,它将帮助我们理解如何在Android项目中集成和使用本地代码。 1. **NDK**:NDK是一套工具集,它提供了编译、构建和运行原生代码的环境。通过NDK,开发者可以在...
《Android NDK与JNI开发详解:从Hello-JNI入门》 Android系统以其开源性和灵活性吸引了大量的开发者,而JNI(Java Native Interface)则是Android平台中连接Java层与原生C/C++代码的重要桥梁。JNI允许开发者在...
2. **全面介绍**:第三至第十章系统地阐述了JNI的各种特性,通过丰富的实例详细讲解了如何使用JNI进行Java和本地代码的交互。这些章节深入探讨了JNI接口的使用,包括如何声明和实现本地方法,以及如何处理数据类型和...
无论是在大型企业级应用集成,还是在跨语言开发项目中,jni4net都能发挥重要作用。通过深入理解jni4net的工作原理和使用方法,开发者可以更有效地实现C#和Java之间的代码共享,提高软件的复用性和灵活性。
总之,这本书不仅适合于初学者入门学习,也适用于经验丰富的开发者进一步提高自己的技能水平。无论是希望集成C/C++代码到Java应用程序中,还是想要深入了解Java虚拟机内部工作机制的读者,都能从中受益匪浅。
本书按章节结构,先以简单的实例引导读者入门,随后深入探讨JNI的各种高级特性,包括数据类型转换、异常处理、线程安全等。最后,提供了全面的数据类型定义列表,便于查阅。 #### 六、Java平台与主机环境 Java平台...
入门与实例教程"是一个针对初学者的教育资源,旨在帮助新手快速掌握Java编程的基础概念和实战技巧。这个教程可能包含了从基础知识到实际项目案例的全方位讲解,帮助学习者逐步建立起对Java语言的理解。 首先,让...
- `JNI编程.doc`: 可能包含了JNI的基础概念、基本用法和示例代码,适合初学者入门。 - `JNI编程系列之高级篇.doc`: 涉及更复杂的话题,如多线程、内存管理、性能优化等,适合有一定经验的开发者。 - `JNI编程系列...
- 提供了一个完整的从零开始的JNI实例。 - 包含了大量的示例代码,方便读者理解和实践。 - 对于初学者而言,是一篇很好的入门指南。 #### 2. CSDN博客 - “JNI在Android开发中的应用实例” - **链接**:`...
本手册是Android开发者入门JNI的重要资料,包含了大量示例和教程,帮助开发者高效地学习如何在Android平台上运用JNI。 第一章介绍了JNI的完整概念和用途,是学习JNI的起点。之后的章节通过具体的实例,讲解了如何...
本书通过实例和理论结合的方式,旨在帮助开发者不仅学会如何使用JNI,而且还能够理解它的工作原理和背后的设计哲学。这对于开发性能要求高、需要系统级交互的应用程序尤其重要。 总的来说,对于希望深入了解Java...
它不仅适合初学者入门,也适用于有一定经验的开发者深入理解JNI的技术细节。 #### 二、JNI基础知识 - **JNI-百度百科**:这一章节提供了JNI的基本定义、发展历程以及使用场景等内容,有助于读者快速了解JNI的基本...
#### Java基础知识——JNI入门介绍(下) 1. **概念回顾**:回顾上一节中介绍的基础概念。 2. **深入讲解**:深入讲解JNI的工作原理和技术细节。 3. **实践案例**:通过实践案例来巩固所学知识。 #### Java调用...
这个"android ndk开发实例代码"提供了一个入门级的示例,帮助开发者理解NDK和JNI(Java Native Interface)的结合使用。 JNI是Java平台的标准部分,它为Java代码提供了调用本地(非Java)代码的能力。在Android开发...
"hello-jni"通常是一个初学者的入门示例,展示了如何在Android项目中设置和调用原生代码。 以下是如何在Android Studio中操作的步骤: 1. **创建新项目**:启动Android Studio,选择“New Project”,然后在模板中...
从基础的入门到高级的数据库和系统调用,开发者可以通过这些实例逐步提升自己的技能。同时,源码分析有助于理解和消化理论知识,从而在实际开发中游刃有余。无论你是Android新手还是有经验的开发者,这个资料包都能...
总之,PJSIP2.7.2的Android实例为开发者提供了一个快速入门VoIP应用开发的平台,结合OpenH264库,能够实现高质量的音视频通话功能。通过深入研究和实践,开发者可以进一步掌握PJSIP的高级特性,例如多路通话、会议、...