JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
一、JNI开发程序的一般步骤
1、 编写java中的调用类
2、 用javah生成c/c++原生函数的头文件
3、c/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)
4、将项目依赖的所有原生库和资源加入到java项目的java.library.path
5、生成java程序
6、发布java应用和dll库
二、JNI程序开发实例
1、TestHello.java
public class TestHello {
static{
System.out.print(System.getProperty("java.library.path"));
System.loadLibrary("TestHello");
}
public static native void hello(String msg);
public static void main(String[]args){
hello("Hi, Wu Yunmin!");
}
}
编译生成TestHello.class文件。
2、run -> cmd,执行
javah TestHello,生成TestHello.h文件;
3、打开VC6.0,新建工程TestHello
在弹出窗口选择“一个简单的DLL工程”
4、打开项目所在的文件目录,将TestHello.h文件复制到此项目文件目录下。
5、选择VC6.0文件目录栏下的“FileView”选项卡,在Header Files上点击右键,选择Add Files to Folder…。选择TestHello.h文件,点击OK。
6、打开StdAfx.h文件,再最后面添加:
#include <jni.h>
#include "TestHello.h"
7、在TestHello.cpp中添加如下代码:
//方法名命名规则:Java + "_" + java的类名 + "_" + java类下的方法;如:Java_TestHello_hello
JNIEXPORT void JNICALL Java_TestHello_hello(JNIEnv * env, jclass obj, jstring jMsg)
{
const char *strMsgPtr = env->GetStringUTFChars( jMsg , 0);
MessageBox( 0, strMsgPtr,"Message box from VC++ ", 0 );
env->ReleaseStringUTFChars( jMsg, strMsgPtr);
}
8、在VC6.0的菜单上选择Tools-Options…,打开选项对话框。在Directories文件夹,添加上jdk所在文件夹下的include和include\win32文件夹。
点击VC上的菜单项Build-Build All,生成TestHello.dll。
9、将TestHello.dll复制到TestHello.class所在的文件夹下。
10、run -> cmd,执行java TestHello
如有不对之处,请指正。
- 大小: 82 KB
- 大小: 68.5 KB
- 大小: 61.8 KB
- 大小: 34.7 KB
- 大小: 44.7 KB
分享到:
相关推荐
在Android应用开发中,NDK(Native Development Kit)和JNI(Java Native Interface)是两个重要的技术,用于实现Java代码与本地C/C++代码的交互。本实战教程将深入探讨NDK-JNI的开发过程,结合具体的AES加密DEMO,...
在本篇Android JNI实战教程中,我们将探讨如何利用JNI(Java Native Interface)技术来实现一个温控计应用。JNI是Java平台提供的一种机制,允许Java代码与其他编程语言(如C和C++)进行交互,从而扩展Java应用的功能...
第五本书籍“05134622333.pdf”可能是一本实战指南,提供了大量的代码示例和练习,帮助读者熟悉JNI的开发流程,提升解决实际问题的能力。 至于“tj3”这个文件名,由于没有明确的PDF扩展名,可能是另一个书籍的索引...
《JNI-study》这本书显然是针对希望深入理解和实践JNI技术的Java开发者的。书中可能涵盖了以下关键知识点: 1. JNI基础:介绍JNI的基本概念,包括JNI头文件、本地方法接口、本地方法注册、JNIEnv指针等核心元素。 ...
项目实战部分将通过一个具体的示例展示如何从零开始搭建NDK项目,包括创建JNI接口、编写本地代码、配置构建脚本、集成到Android应用以及调试。这个过程有助于加深对NDK开发流程的理解。 通过这个项目,学生不仅...
通过上述对标题、描述以及四个具体链接资源的解析,我们可以看到这些资源覆盖了从基础知识到实践经验的各个方面,对于想要学习或深入研究JNI技术的人来说是非常宝贵的资料。无论是初学者还是有一定经验的开发者,都...
总结,JNI是连接Java世界与本地代码的关键技术,理解和掌握JNI,可以极大地扩展Java应用程序的能力。通过阅读“JNI详解”和“Java本地接口(JNI)编程指南和规范2”,开发者可以获得丰富的知识和实践经验,提升解决...
《Android之JNI实战指南》 在移动开发领域,Android与C/C++的交互是一个重要的技术环节,这主要得益于JNI(Java Native Interface)的存在。JNI允许Java代码与其他编程语言(如C/C++)编写的代码进行交互,使得我们...
总的来说,这个示例涵盖了JNI的使用、图像处理的灰度算法、Android.mk的配置以及跨语言数据交换等多个方面,对于深入理解和应用JNI技术非常有帮助。如果你想要了解更多细节,可以参考相关的博客文章或者直接研究提供...
Android开发中,随着对移动程序的安全性、性能等方面的重视,JNI技术也越发重要。如今,多数企业在招聘中、高级程序员时,...后面两部分课程,将带领大家深入了解JNI交互原理,Native实战开发,让你真正掌握JNI技术。
《Android底层开发技术实战详解》是一本专注于深入探讨Android系统底层开发的专业书籍。该书针对Android开发者,尤其是希望提升到更深层次的工程师,提供了丰富的理论知识和实践案例,旨在帮助读者掌握Android系统的...
Android开发中,随着对移动程序的安全性、性能等方面的重视,JNI技术也越发重要。如今,多数企业在招聘中、高级程序员时,基本上都要求熟悉JNI开发,所以,掌握JNI技术,也是我们迈进心仪企业的必备条件。本套课程共...
最好结合JNI官方教程、官方文档来学习如何在Android中使用JNI技术。 解压后,有3个文件,如下: 【eoe特刊】第七期:NDK.pdf android_jni操作指南.pdf Android史上最强NDK入门项目实战.rar
总之,这个教程资源对于学习和掌握JNI技术,特别是Android环境下的应用,是非常有价值的。它覆盖了从基础到进阶的多个层面,既有理论知识,又有实践案例,适合不同层次的开发者学习。通过这些资料,你可以系统地了解...
《Java与JNI部分函数Hook项目实战详解》 Java与JNI(Java Native Interface)的结合,是Java开发中处理性能敏感或需要与操作系统底层交互场景的重要技术。JNI允许Java代码调用本地(native)代码,例如C/C++,并...
提供的资源如《JNI技术手册》、《android_jni操作指南》和《Java_JNI_编程进阶》将详细解释这些概念,并提供实际案例帮助理解。通过深入学习这些材料,开发者可以熟练地在Java和C/C++之间进行互操作,实现更复杂的...
通过阅读这些资料,开发者可以深入学习如何在实际项目中运用JNI技术。 总结来说,JNI是Android开发中的重要工具,它让Java和C/C++代码能够协同工作,解决了性能、系统API调用等问题。掌握JNI,能够提升开发者解决...
这个"android jni demo"项目显然是为了帮助开发者理解和实践JNI技术。 在Android开发中,JNI通常用于以下场景: 1. **性能优化**:对于计算密集型任务,如图像处理、物理模拟或加密算法,C/C++代码通常比Java更快。...
JNIDemo是Java开发者学习和实践JNI技术的一个典型示例项目,它提供了一个清晰的教程,帮助我们理解如何在Java代码中调用C/C++函数,以及如何在原生代码中调用Java方法。本文将深入探讨JNIDemo的3.17.final.ok版本,...
《JNI技术解析与实战——基于mk与cmake的动态库加载》 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI常用于调用C/C++原生代码,实现性能...