`

JNI(Java Native Interface,) java本地接口

阅读更多
JNI是SUN(被Oracle收购了)定义的一套标准接口。具体平台上的jvm实现,对应对实现JNI接口,供本地(c/c++)应用与java VM 互调。

JNI,是一套完善并且功能强大的双向接口,能够实现语言的互操作性--可以供java代码调用native代码,native代码也可以调用java代码。

--------------

JNI是Java平台中的一个强大特性,应用程序可以通过JNI把C/C++代码集成进Java程序中。通过JNI,  开发者在利用Java平台的强大功能同时,又可以复用原有的代码,因为JNI是Java平台定义的规范接口,当把本地库集成到Java中,只要在一个平台上解决了语言互操作问题,就可以把解决方案比较容易的移植到其他平台上。

-----------------------

一个JNI编程的简单例子:

package com.test;

 public class HelloWorld {
     public native void displayHelloWorld();

     static
     {
        System.loadLibrary("fileName");
     }

     public static void main(String[] args) {
        new HelloWorld ().displayHelloWorld(); 
     }
 }
然后根据写好的文件编译成CLASS文件
然后在classes或bin之类的class根目录下执行javah -jni com.test.HelloWorld,
就会在根目录下得到一个com_test_HelloWorld.h的文件

该.h文件的详细内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_test_HelloWorld */

#ifndef _Included_com_test_HelloWorld
#define _Included_com_test_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_test_HelloWorld
 * Method:    displayHelloWorld
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_test_HelloWorld_displayHelloWorld
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


然后根据头文件的内容编写com_test_HelloWorld.c文件
#include "com_test_HelloWorld.h"
 #include "jni.h"
 #include "stdio.h"

 JNIEXPORT void JNICALL Java_com_test_HelloWorld_displayHelloWorld  (JNIEnv *, jobject) {
     printf("Hello world!\n");
     return;
 }
之后编译生成DLL文件如“fileName.dll”,名称与System.loadLibrary("fileName")中的名称一致
vc的编译方法:cl -I%java_home%\include -I%java_home%\include\win32 -LD com_test_HelloWorld.c -FefileName.dll
最后在运行时加参数-Djava.library.path=[dll存放的路径]

-LD:生成动态链接库

-D:设置Java平台的系统属性。设置后JavaVm可以找到对应的库文件。

其中参数JNIEnv * JNIEnv结构包括JNI函数表
分享到:
评论

相关推荐

    JNI(java native interface) 简体中文+英文版

    JNI(java native interface) 简体中文:do.chuan@gmail.com 翻译版 英文版:Addison.Wesley.Java.Native Interface 希望对大家有帮助...

    JNI(Java Native Interface)中文手册

    JNI(Java Native Interface)是Sun Microsystems公司定义的一套标准接口,用于实现Java代码与本地代码(通常是C或C++)之间的交互。随着Java的发展,JNI的重要性日益凸显,因为它允许Java程序调用本地库的功能,...

    JNI-Java Native Interface资料(精华)

    Java Native Interface (JNI) 是Java平台的一项强大特性,允许应用程序结合使用C、C++等其他编程语言编写的本地代码以及Java语言代码。这一功能让程序员能够在利用Java平台优势的同时,不必舍弃对遗留代码的投资。...

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

    JNI,全称Java Native Interface,是Java平台的一部分,用于建立Java应用和本地代码之间的桥梁。通过JNI,Java开发者可以编写本地方法,这些方法可以在Java虚拟机(JVM)内部调用,但实际由本地代码实现。这使得Java...

    Java Native Interface Programmers Guide and Specification(Exp)

    - **头文件(.h)**:定义了本地方法的函数原型,供Java代码通过JNI头文件生成器生成对应的Java Native Method接口。 - **本地代码文件(.c或.cpp)**:实现了头文件中定义的本地方法,可以是C或C++代码。 - **...

    Android JNI 知识简介(Java Native Interface )

    Java Native Interface(JNI)是Java平台的一项重要技术,它允许Java代码与使用其他编程语言(如C、C++等)编写的代码进行交互。在Android开发中,JNI尤为重要,因为它使开发者能够在Java层调用C或C++编写的高性能...

    Java Native Interface 6.0 Specification (JNI) 原创PDF书签

    JNI在Java的本地方法接口(Native Method Interface,NMI)基础上发展而来,最初随着Java开发工具包(JDK)1.0发布,后随着Java运行时接口(Java Runtime Interface)的集成,提供了更丰富的原生接口。 JDK1.0时,...

    JNI(java native interface)英文完全手册

    Java Native Interface(JNI)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。JNI在许多场景下都是至关重要的,比如访问操作系统特定的功能、使用C/C++库或者优化性能敏感的部分。本完全手册...

    深入探索Java JNI:Java Native Interface的工作原理与应用

    Java Native Interface(JNI)是一个强大的机制,允许Java代码与本地代码(如C或C++)进行交互。JNI为Java应用程序提供了一种方式,可以访问由本地语言编写的库,实现性能关键型操作或访问特定平台的功能。本文将...

    Java Native Interface Specification R1.1

    Java Native Interface(JNI)是Java开发中的一个重要概念,它允许Java代码与其他语言编写的代码进行交互,尤其是与C或C++编写的本地应用程序接口(API)进行交互。JNI在Java应用程序中扮演着桥梁的角色,使得Java...

    JNI(Java Native Interface)_03

    JNI(Java Native Interface)是Java平台的一个重要组成部分,它允许Java代码和其他语言写的代码进行交互。这个接口提供了在Java应用程序中调用本地方法(非Java语言编写,如C/C++)的能力,同时也允许本地方法调用...

    The Java Native Interface Programmer's Guide and Specification

    Java Native Interface(JNI)是Java平台的一个核心组件,它允许Java应用程序调用其他编程语言编写的函数,或者让本地代码调用Java方法,从而实现了跨语言的无缝集成。 JNI在Java应用程序中的应用广泛,特别是在...

    JNI(Java Native Interface)_01

    JNI(Java Native Interface)是Java平台提供的一种标准接口,它允许Java代码和其他语言写的代码进行交互。JNI在Java世界中扮演着重要的角色,特别是在需要高效性能、调用系统级库或者利用硬件特性时,它是不可或缺...

    The Java Native Interface Programmer's Guide.pdf

    JNI(Java Native Interface)是Java平台的一部分,它提供了一组API,用于实现Java代码与用其他编程语言(如C或C++)编写的本地代码之间的交互。通过JNI,开发者可以编写高性能的原生代码模块,并在Java应用程序中...

    The Java Native Interface

    THIS book covers the Java™ Native Interface (JNI). It will be useful to you if you are interested in any of the following: • integrating a Java application with legacy code written in languages such...

    The Java Native Interface jni

    Java Native Interface,通常简称为JNI,是Java编程语言中一个重要的特性,它允许Java代码和用其他语言(特别是C和C++)编写的本地应用程序接口(API)或本地库进行交互。JNI的主要用途在于,它可以调用那些用传统...

    JNI(Java Native Interface)_02

    JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。JNI在许多场景下都是至关重要的,比如优化性能敏感的部分、调用操作系统原生API、集成C/C++库或者实现与硬件...

    The Java Native Interface Programmer's Guide and Specification (带书签)

    Java Native Interface(JNI)是Java平台的一个编程接口,它允许Java代码和其他语言编写的代码进行交互。这种交互通常指的是Java调用C/C++代码和C/C++调用Java代码两种形式。JNI作为Java语言的一种扩展技术,它对...

    java native interface(JNI)开发全攻略

    Java Native Interface(JNI)是一种强大的技术,允许Java代码调用本地C或C++代码,反之亦然。这一功能对于那些需要高性能计算、硬件访问或是利用现有C/C++库的应用程序来说至关重要。本文将深入探讨如何使用JNI创建...

Global site tag (gtag.js) - Google Analytics