- 浏览: 149194 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
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编程的简单例子:
然后在classes或bin之类的class根目录下执行javah -jni com.test.HelloWorld,
就会在根目录下得到一个com_test_HelloWorld.h的文件
该.h文件的详细内容如下:
然后根据头文件的内容编写com_test_HelloWorld.c文件
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代码,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函数表
发表评论
-
Nio Socket
2013-05-16 05:53 0asfda -
结合jdk源码解读,Error Exception
2013-05-10 04:00 0/* * @(#)Error.java 1.17 05/11 ... -
从不同的角度,重新审视class和interface
2013-05-07 03:40 0java开发中,对应class和interface的基本区别都 ... -
java.lang.Object
2013-05-07 03:35 0/* * @(#)Object.java 1.73 06/0 ... -
反射机制+类加载机制
2013-02-18 01:30 0反射机制+类加载机制 -
并发专题----使用开源软件Amino构建并发应用程序/多线程运行时分析工具MTRAT
2013-02-14 00:50 1370使用开源软件构建并发 ... -
并发专题 ---- 线程安全
2013-02-14 00:50 744线程安全 ================== ... -
并发专题 --- 锁
2013-02-14 00:50 802相比于synchronized,ReentrantLock 提 ... -
并发专题 ----(JMM)java内存模型
2013-02-14 00:50 534Java 内存模型 ------------ ... -
并发专题 ---java.util.concurrent 包
2013-02-13 02:26 1832java.util.concurrent 包 原 ... -
集合框架 Queue篇(8)---PriorityBlockingQueue、SynchronousQueue
2013-02-07 12:40 1303Queue ------------ 1.ArrayDeq ... -
集合框架 Queue篇(7)---LinkedBlockingDeque
2013-02-07 12:40 849Queue ------------ 1.ArrayDeq ... -
集合框架 Queue篇(6)---LinkedBlockingQueue
2013-02-07 12:39 827Queue ------------ 1.ArrayDeq ... -
集合框架 Queue篇(5)---ArrayBlockingQueue
2013-02-06 10:39 700Queue ------------ 1.ArrayDeq ... -
集合框架 Queue篇(4)---阻塞队列和生产者-消费者模式、DelayQueue
2013-02-06 10:39 992Queue ------------ 1.ArrayDeq ... -
集合框架 Queue篇(3)---ConcurrentLinkedQueue
2013-02-06 10:38 1043Queue ------------ 1.ArrayDequ ... -
集合框架 Queue篇(2)---PriorityQueue
2013-02-06 10:38 828Queue ------------ 1.ArrayDeq ... -
集合框架 Queue篇(1)---ArrayDeque
2013-02-06 10:38 926Queue ------------ 1.ArrayDeq ... -
集合框架 Set篇---HashSet、LinkedHashSet、TreeSet、CopyOnWriteArraySet、ConcurrentSkipList
2013-02-05 08:43 1477Set --------- 1.HashSet 2.Link ... -
集合框架 List篇(2)---CopyOnWriteArrayList
2013-02-05 08:43 840List ----------- 1.ArrayList(jd ...
相关推荐
JNI(java native interface) 简体中文:do.chuan@gmail.com 翻译版 英文版:Addison.Wesley.Java.Native Interface 希望对大家有帮助...
JNI(Java Native Interface)是Sun Microsystems公司定义的一套标准接口,用于实现Java代码与本地代码(通常是C或C++)之间的交互。随着Java的发展,JNI的重要性日益凸显,因为它允许Java程序调用本地库的功能,...
Java Native Interface (JNI) 是Java平台的一项强大特性,允许应用程序结合使用C、C++等其他编程语言编写的本地代码以及Java语言代码。这一功能让程序员能够在利用Java平台优势的同时,不必舍弃对遗留代码的投资。...
JNI,全称Java Native Interface,是Java平台的一部分,用于建立Java应用和本地代码之间的桥梁。通过JNI,Java开发者可以编写本地方法,这些方法可以在Java虚拟机(JVM)内部调用,但实际由本地代码实现。这使得Java...
- **头文件(.h)**:定义了本地方法的函数原型,供Java代码通过JNI头文件生成器生成对应的Java Native Method接口。 - **本地代码文件(.c或.cpp)**:实现了头文件中定义的本地方法,可以是C或C++代码。 - **...
Java Native Interface(JNI)是Java平台的一项重要技术,它允许Java代码与使用其他编程语言(如C、C++等)编写的代码进行交互。在Android开发中,JNI尤为重要,因为它使开发者能够在Java层调用C或C++编写的高性能...
JNI在Java的本地方法接口(Native Method Interface,NMI)基础上发展而来,最初随着Java开发工具包(JDK)1.0发布,后随着Java运行时接口(Java Runtime Interface)的集成,提供了更丰富的原生接口。 JDK1.0时,...
Java Native Interface(JNI)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。JNI在许多场景下都是至关重要的,比如访问操作系统特定的功能、使用C/C++库或者优化性能敏感的部分。本完全手册...
Java Native Interface(JNI)是一个强大的机制,允许Java代码与本地代码(如C或C++)进行交互。JNI为Java应用程序提供了一种方式,可以访问由本地语言编写的库,实现性能关键型操作或访问特定平台的功能。本文将...
Java Native Interface(JNI)是Java开发中的一个重要概念,它允许Java代码与其他语言编写的代码进行交互,尤其是与C或C++编写的本地应用程序接口(API)进行交互。JNI在Java应用程序中扮演着桥梁的角色,使得Java...
JNI(Java Native Interface)是Java平台的一个重要组成部分,它允许Java代码和其他语言写的代码进行交互。这个接口提供了在Java应用程序中调用本地方法(非Java语言编写,如C/C++)的能力,同时也允许本地方法调用...
Java Native Interface(JNI)是Java平台的一个核心组件,它允许Java应用程序调用其他编程语言编写的函数,或者让本地代码调用Java方法,从而实现了跨语言的无缝集成。 JNI在Java应用程序中的应用广泛,特别是在...
JNI(Java Native Interface)是Java平台提供的一种标准接口,它允许Java代码和其他语言写的代码进行交互。JNI在Java世界中扮演着重要的角色,特别是在需要高效性能、调用系统级库或者利用硬件特性时,它是不可或缺...
JNI(Java Native Interface)是Java平台的一部分,它提供了一组API,用于实现Java代码与用其他编程语言(如C或C++)编写的本地代码之间的交互。通过JNI,开发者可以编写高性能的原生代码模块,并在Java应用程序中...
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...
Java Native Interface,通常简称为JNI,是Java编程语言中一个重要的特性,它允许Java代码和用其他语言(特别是C和C++)编写的本地应用程序接口(API)或本地库进行交互。JNI的主要用途在于,它可以调用那些用传统...
JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。JNI在许多场景下都是至关重要的,比如优化性能敏感的部分、调用操作系统原生API、集成C/C++库或者实现与硬件...
Java Native Interface(JNI)是Java平台的一个编程接口,它允许Java代码和其他语言编写的代码进行交互。这种交互通常指的是Java调用C/C++代码和C/C++调用Java代码两种形式。JNI作为Java语言的一种扩展技术,它对...
Java Native Interface(JNI)是一种强大的技术,允许Java代码调用本地C或C++代码,反之亦然。这一功能对于那些需要高性能计算、硬件访问或是利用现有C/C++库的应用程序来说至关重要。本文将深入探讨如何使用JNI创建...