`

Java高级应用之JNI

 
阅读更多
参考link
http://www.cnblogs.com/liuling/p/2013-12-20.html
http://blog.csdn.net/cl05300629/article/details/39050703

1 创建Java包含native方法的类,如下:
public class TestNative
{
	public native void sayHello();
}


2 通过JDK工具javah生成C/C++头文件,如下:
C:\Users\jacky_dai\Desktop\java>javah TestNative


3 生成如下的C++头文件,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:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_TestNative_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


4 创建C++ win32 DLL Project,并且包含java的include files并添加测试代码


#include <iostream>
#include "TestNative.h"
using namespace std;

JNIEXPORT void JNICALL Java_TestNative_sayHello(JNIEnv *, jobject);
{
    cout<<"hello world!"<<endl;
}


5 添加Java测试代码
public class TestNative
{
    public native void sayHello();
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        System.loadLibrary("NativeCode");
        TestNative tNative = new TestNative();
        tNative.sayHello();    
    }
}


6 编译运行demo,可以看见输出的“Hello World!”
javah TestNative.java
java TestNative
分享到:
评论

相关推荐

    java高级jni教程

    Java高级JNI教程主要探讨了Java Native Interface(JNI)这一技术,它是Java平台中用于与本地代码交互的重要工具。JNI允许Java程序调用C/C++编写的库,反之亦然,从而实现了Java应用与操作系统底层功能的深度融合。...

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

    本书全面介绍了Java本地接口(JNI),这是连接Java代码与本地语言(如C和C++)编写的应用程序或库的重要桥梁。JNI旨在促进Java与其他编程环境之间的无缝集成,并支持在不同平台上构建高度可移植的应用。 #### 目标...

    Java programming with JNI

    通过JNI中的Invocation API,可以在本地应用程序中嵌入Java虚拟机 (JVM),从而使得程序员能够在本地代码中调用Java代码。 本教程将涵盖JNI最常见的两种应用场景:从Java程序调用C/C++代码以及从C/C++程序调用Java...

    Java本地接口(JNI)编程指南和规范 Java Native Interface 6.0 Specification

    Java本地接口(JNI)是Java平台的一个核心特性,它允许Java代码和其他语言...理解和熟练使用JNI是高级Java开发者的必备技能之一。通过JNI,Java开发者可以充分利用C/C++的高效性能,同时享受Java的跨平台和安全性优势。

    教你java和C++的jni编程

    - `JNI编程系列之高级篇.doc`: 涉及更复杂的话题,如多线程、内存管理、性能优化等,适合有一定经验的开发者。 - `JNI编程系列之基础篇.doc`: 提供JNI的基础教程,包括环境设置、本地方法声明等。 - `JNI编程系列...

    Java中使用Jni简单示例过程

    这使得Java应用程序能够利用底层操作系统和硬件的高级功能,而这些功能可能无法用纯Java代码高效地实现。 - **跨平台兼容性** 虽然JNI允许Java代码与本机代码交互,但要注意的是,生成的本机代码通常是特定于平台...

    java通过jni调vjoy_vjoy4java

    综上所述,"java通过jni调vjoy_vjoy4java"这个项目结合了Java的高级特性与C++的低级别控制能力,实现了在Java应用程序中对虚拟游戏控制器Vjoy的控制。这不仅展示了多语言编程的威力,也体现了在游戏开发和测试中的...

    NDK编译 JAVA JNI 原生调用

    NDK编译和JAVA JNI原生调用是Android开发中的高级技术,主要应用于游戏开发、音视频处理、图像识别等对性能要求较高的场景。 1. NDK简介: NDK提供了一套工具,让开发者可以在Android应用中使用本地代码。它包含了...

    jni 获得java窗口句柄的C语言源代码

    JNI(Java Native Interface)是一种允许Java代码调用本地应用程序接口(Native Application Programming Interfaces,如 C 或 C++ 代码)的方法。在某些场景下,我们需要通过 JNI 调用来获取 Java 窗口的句柄,这在...

    JNI攻略之十一――启动虚拟机调用java类

    JNI作为Java与本地代码之间的一个桥梁,使得开发者能够结合两种语言的优点,实现更为灵活和高效的应用程序。 ### 二、JNI调用Java类的具体步骤 #### 1. 准备阶段 首先,我们需要一个简单的Java程序,例如上述例子...

    Java programming with JNI.pdf

    通过JNI中的Invocation API,可以在本地应用程序中嵌入Java虚拟机 (JVM),从而允许程序员从本地代码中调用Java代码。 本教程主要涉及JNI最常见的两种应用场景:从Java程序中调用C/C++代码以及从C/C++程序中调用Java...

    Java_programming_with_JNI

    JNI的Invocation API可以用于在本地应用程序中嵌入Java虚拟机(JVM),从而允许程序员从本地代码中调用Java代码。该手册主要涉及JNI的两个最常见应用:从Java程序中调用C/C++代码,以及从C/C++程序中调用Java代码。 ...

    Android高级应用源码-安卓JNIdemo.rar

    《深入解析Android高级应用源码——以安卓JNIDemo为例》 在Android开发中,JNI(Java Native Interface)是连接Java与本地代码的重要桥梁,它允许Java代码调用C/C++函数,反之亦然。这个“Android高级应用源码-安卓...

    The Java Native Interface jni

    6. JNI的高级特性:JNI还提供了很多高级特性,如本地引用管理、回调Java方法、线程同步等。这些特性使JNI不仅仅局限于基本的本地方法调用,还能实现更加复杂的应用场景。 7. JNI的限制和最佳实践:在使用JNI时,...

    C++JNI多线程回调java

    在多线程环境中,每个线程都有自己的执行上下文,这意味着当C++线程回调Java方法时,必须确保Java的同步机制正确地应用,以避免数据竞争和其他并发问题。Java中的`synchronized`关键字和`java.util.concurrent`包下...

    Android高级应用源码-安卓JNIdemo.zip

    在"Android高级应用源码-安卓JNIdemo.zip"中,我们可以看到一个示例项目,用于演示如何在Android应用程序中有效地使用JNI。这个压缩包包含了一个基本的JNIdemo应用,它可以帮助开发者深入理解和实践JNI的相关知识。 ...

Global site tag (gtag.js) - Google Analytics