`
java_lk
  • 浏览: 40110 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

使用native方法扩展Java程序的功能详解

    博客分类:
  • jse
阅读更多
发布时间: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方法详解

    Native 方法是 Java 语言中的一种特殊方法,它允许 Java 程序访问底层操作系统的资源和硬件,从而扩展 Java 程序的功能。本文将详细讲解 Native 方法的概念、实现步骤、应用场景和优点。 Native 方法的概念 Native...

    Jni应用个人详解

    1. 扩展Java的功能:Jni允许Java程序调用native方法和库,从而扩展Java的功能。 2. 提高性能:Jni可以提高Java程序的性能,因为native代码通常比Java代码更快。 3. 跨平台开发:Jni允许开发者在不同的平台上开发...

    详解Java中native关键字

    当Java程序调用一个native方法时,JVM会负责处理调用的细节,使得Java代码能够访问和利用非Java代码的功能。这种机制使得Java能够扩展其功能,执行一些只能在操作系统级别完成的任务,例如访问硬件设备、优化性能...

    jni-native底层实现

    通过上述步骤,我们可以有效地实现Java与C/C++代码之间的交互,利用JNI的强大功能来扩展Java应用程序的能力。无论是为了提高性能、访问硬件接口还是集成现有代码库,JNI都是一个非常有价值的工具。

    java程序的运行机制详细分析

    #### 二、Java程序的执行过程详解 Java程序的执行过程可以分为几个步骤: 1. **源代码编译**: - 首先,开发者编写的Java源代码文件(.java文件)通过Java编译器(如javac)被编译成字节码文件(.class文件)。 ...

    java 通过jni查看windows的CPU利用率的问题

    标题“Java通过JNI查看Windows的CPU利用率的问题”涉及到的是Java编程语言如何利用Java Native Interface (JNI) 这一技术来获取Windows操作系统...了解和掌握JNI的使用,对于提升Java程序的性能和扩展性具有重要意义。

    java调用c语言

    Java Native Interface (JNI) 是实现这一功能的核心技术。本文将详细介绍Java调用C语言的基本原理、所需环境以及具体的调用步骤,并通过示例代码来展示如何实现。 #### 二、所需环境 为了能够顺利地让Java程序调用...

    java做的本机服务管理程序

    《Java实现的本地服务管理程序详解》 在IT领域,Java是一种广泛应用的编程语言,尤其在服务器端和服务管理方面有着显著的表现。本文将详细介绍一个基于Java编写的本机服务管理程序,该程序允许用户对Tomcat和Apache...

    JAVA如何调用C函数.pdf

    为了解决这一问题,Java Native Interface (JNI) 应运而生,它为Java程序提供了调用C/C++函数的能力,从而实现了功能上的互补和性能上的提升。 #### JNI:Java Native Interface详解 JNI是Java平台的一部分,用于...

    java虚拟机JVM详解ppt

    ### Java虚拟机(JVM)详解 #### 一、引言 Java虚拟机(JVM)作为Java编程语言的核心组件之一,其重要性不言而喻。本文将深入剖析JVM的基本概念、架构及其内存管理机制,重点解读堆和栈内存溢出的情况及案例分析。 ##...

    java调用JNI

    这种机制使得Java程序可以与native代码集成,从而扩展Java程序的功能。 创建Java项目 首先,需要创建一个Java项目。如下图所示: ![创建Java项目](https://img-blog.csdn.net/20170315010957583) 编写Java代码 ...

    java加壳的问题

    1. **使用JNI技术**:通过Java Native Interface (JNI)接口调用C/C++代码,进而实现在C/C++中对Java类文件进行加密和解密的功能。这种方式需要开发者具备较强的JVM知识,并能够熟练掌握C/C++编程。此外,还需要编写...

    有关java jni详解

    ### 有关Java JNI详解 #### 一、JNI概述与重要性 Java Native Interface(JNI)是一种重要的技术,它允许Java代码...通过学习JNI,不仅可以扩展Java应用的功能边界,还能更好地理解和利用现代计算机系统的底层结构。

    Java 本地接口规范

    这个项目的目标是让Java程序能够像使用Java类一样使用COM对象,从而极大地增强了Java应用程序的功能性和可扩展性。 #### 二、JNI:Java Native Interface详解 随着Java的发展,JNI(Java Native Interface)逐渐...

    JAVA下JNI编程教程

    ### JAVA下JNI编程教程知识点详解 ...通过上述步骤,我们可以有效地利用JNI来扩展Java应用程序的功能和性能。掌握JNI不仅能够提高程序的灵活性,还能够在处理高性能计算或特定平台功能时发挥重要作用。

    在Java中使用VC组件.doc

    3. **性能考虑**:虽然JNI提供了一种灵活的方式来扩展Java的功能,但频繁的调用可能会带来额外的性能开销。在设计时需权衡利弊。 #### 六、总结 通过本篇文章的学习,我们不仅了解了JNI的基本概念和使用方法,还...

    Java中使用Jni简单示例过程

    ### Java与JNI交互详解:基于“Java中使用Jni简单示例过程”的深入解析 #### 核心概念:Java Native Interface (JNI) Java Native Interface(JNI)是Java平台标准的一部分,它允许Java代码与其他语言(如C或C++)...

    java中多态的内存分析

    3. **本地方法栈**:与虚拟机栈类似,但它是为执行Java Native Interface (JNI) 方法而设计的。 4. **堆**:所有类实例和数组都在堆中创建。由于堆是所有线程共享的,所以对象的分配和垃圾回收都在这里进行。 5. *...

    Java四大核心技术思想详解.doc

    3. **本地方法调用**:Java程序可以通过调用本地方法(Native Method)与底层操作系统进行交互。本地方法是由其他编程语言(如C/C++)编写的,编译成与处理器相关的机器代码,并保存在动态链接库中。Java Native ...

Global site tag (gtag.js) - Google Analytics