发布时间:2007.10.12 06:07 来源:赛迪网 作者:dxaw
Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
可以将native方法比作Java程序同C程序的接口,其实现步骤:
1、在Java中声明native()方法,然后编译;
2、用javah产生一个.h文件;
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.cpp文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。
JAVA本地方法适用的情况
1.为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问
2.为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的
3.为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。
首先写好JAVA文件
/*
* Created on 2005-12-19 Author shaoqi
*/
package com.hode.hodeframework.modelupdate;
public class CheckFile
{
public native void displayHelloWorld();
static
{
System.loadLibrary("test");
}
public static void main(String[] args) {
new CheckFile().displayHelloWorld();
}
}
然后根据写好的文件编译成CLASS文件
然后在classes或bin之类的class根目录下执行javah -jni com.hode.hodeframework.modelupdate.CheckFile,就会在根目录下得到一个com_hode_hodeframework_modelupdate_CheckFile.h的文件
然后根据头文件的内容编写com_hode_hodeframework_modelupdate_CheckFile.c文件
#include "CheckFile.h"
#include
#include
JNIEXPORT void JNICALL Java_com_hode_hodeframework_modelupdate_CheckFile_displayHelloWorld(
JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
之后编译生成DLL文件如“test.dll”,名称与System.loadLibrary("test")中的名称一致
vc的编译方法:cl -I%java_home%\include -I%java_home%\include\win32 -LD com_hode_hodeframework_modelupdate_CheckFile.c -Fetest.dll
最后在运行时加参数-Djava.library.path=[dll存放的路径]
分享到:
相关推荐
Native 方法是 Java 语言中的一种特殊方法,它允许 Java 程序访问底层操作系统的资源和硬件,从而扩展 Java 程序的功能。本文将详细讲解 Native 方法的概念、实现步骤、应用场景和优点。 Native 方法的概念 Native...
1. 扩展Java的功能:Jni允许Java程序调用native方法和库,从而扩展Java的功能。 2. 提高性能:Jni可以提高Java程序的性能,因为native代码通常比Java代码更快。 3. 跨平台开发:Jni允许开发者在不同的平台上开发...
当Java程序调用一个native方法时,JVM会负责处理调用的细节,使得Java代码能够访问和利用非Java代码的功能。这种机制使得Java能够扩展其功能,执行一些只能在操作系统级别完成的任务,例如访问硬件设备、优化性能...
通过上述步骤,我们可以有效地实现Java与C/C++代码之间的交互,利用JNI的强大功能来扩展Java应用程序的能力。无论是为了提高性能、访问硬件接口还是集成现有代码库,JNI都是一个非常有价值的工具。
#### 二、Java程序的执行过程详解 Java程序的执行过程可以分为几个步骤: 1. **源代码编译**: - 首先,开发者编写的Java源代码文件(.java文件)通过Java编译器(如javac)被编译成字节码文件(.class文件)。 ...
标题“Java通过JNI查看Windows的CPU利用率的问题”涉及到的是Java编程语言如何利用Java Native Interface (JNI) 这一技术来获取Windows操作系统...了解和掌握JNI的使用,对于提升Java程序的性能和扩展性具有重要意义。
Java Native Interface (JNI) 是实现这一功能的核心技术。本文将详细介绍Java调用C语言的基本原理、所需环境以及具体的调用步骤,并通过示例代码来展示如何实现。 #### 二、所需环境 为了能够顺利地让Java程序调用...
《Java实现的本地服务管理程序详解》 在IT领域,Java是一种广泛应用的编程语言,尤其在服务器端和服务管理方面有着显著的表现。本文将详细介绍一个基于Java编写的本机服务管理程序,该程序允许用户对Tomcat和Apache...
为了解决这一问题,Java Native Interface (JNI) 应运而生,它为Java程序提供了调用C/C++函数的能力,从而实现了功能上的互补和性能上的提升。 #### JNI:Java Native Interface详解 JNI是Java平台的一部分,用于...
### Java虚拟机(JVM)详解 #### 一、引言 Java虚拟机(JVM)作为Java编程语言的核心组件之一,其重要性不言而喻。本文将深入剖析JVM的基本概念、架构及其内存管理机制,重点解读堆和栈内存溢出的情况及案例分析。 ##...
这种机制使得Java程序可以与native代码集成,从而扩展Java程序的功能。 创建Java项目 首先,需要创建一个Java项目。如下图所示: ![创建Java项目](https://img-blog.csdn.net/20170315010957583) 编写Java代码 ...
1. **使用JNI技术**:通过Java Native Interface (JNI)接口调用C/C++代码,进而实现在C/C++中对Java类文件进行加密和解密的功能。这种方式需要开发者具备较强的JVM知识,并能够熟练掌握C/C++编程。此外,还需要编写...
### 有关Java JNI详解 #### 一、JNI概述与重要性 Java Native Interface(JNI)是一种重要的技术,它允许Java代码...通过学习JNI,不仅可以扩展Java应用的功能边界,还能更好地理解和利用现代计算机系统的底层结构。
这个项目的目标是让Java程序能够像使用Java类一样使用COM对象,从而极大地增强了Java应用程序的功能性和可扩展性。 #### 二、JNI:Java Native Interface详解 随着Java的发展,JNI(Java Native Interface)逐渐...
### JAVA下JNI编程教程知识点详解 ...通过上述步骤,我们可以有效地利用JNI来扩展Java应用程序的功能和性能。掌握JNI不仅能够提高程序的灵活性,还能够在处理高性能计算或特定平台功能时发挥重要作用。
3. **性能考虑**:虽然JNI提供了一种灵活的方式来扩展Java的功能,但频繁的调用可能会带来额外的性能开销。在设计时需权衡利弊。 #### 六、总结 通过本篇文章的学习,我们不仅了解了JNI的基本概念和使用方法,还...
### Java与JNI交互详解:基于“Java中使用Jni简单示例过程”的深入解析 #### 核心概念:Java Native Interface (JNI) Java Native Interface(JNI)是Java平台标准的一部分,它允许Java代码与其他语言(如C或C++)...
3. **本地方法栈**:与虚拟机栈类似,但它是为执行Java Native Interface (JNI) 方法而设计的。 4. **堆**:所有类实例和数组都在堆中创建。由于堆是所有线程共享的,所以对象的分配和垃圾回收都在这里进行。 5. *...
3. **本地方法调用**:Java程序可以通过调用本地方法(Native Method)与底层操作系统进行交互。本地方法是由其他编程语言(如C/C++)编写的,编译成与处理器相关的机器代码,并保存在动态链接库中。Java Native ...