JAVA中native方法

鸣谢:http://blog.csdn.net/zhangliao613/article/details/6325978

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存放的路径]

JAVA中native方法(实现例子)相关推荐

  1. JAVA中native方法调用C语言实现学习

    在java虚拟机规范的内存管理划分中,对于虚拟机内存空间划分中专门划了一块内存叫做"本地方法栈(Native Method Stack)".本地方法栈是为了java专门用来调用na ...

  2. java中native的用法

    java中native的用法前言:在查看 Thread.java 文件时,发现有一个 方法比较特殊 private native void start0();概念:native关键字说明其修饰的方法是 ...

  3. java基础提升篇:Java中Native关键字的作用

    初遇 初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: public native int hashCode(); 为什么有个native呢?这是我所要 ...

  4. 【精简解释】Java中native关键字作用

    Java不是完美的,Java的不足除了体现在 运行速度上要比传统的C++慢 许多之外,Java 无法直接访问到操作系统底层 (如系统硬件等),为此Java使用native方法来扩展Java程序的功能. ...

  5. 安卓开发——JNI——回调java中的方法

    JNI开发中 在C代码中回调java中的方法 package com.example.jnitest2;import android.app.Activity; import android.cont ...

  6. java中gettext方法_深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  7. java中clone方法_Java Object clone()方法– Java中的克隆

    java中clone方法 Cloning is the process of creating a copy of an Object. Java Object class comes with na ...

  8. Java中Native的作用

    一.认识native 初次是在java.lang.Object源码中的hashCode方法中遇到: public native int hashCode(); Java平台有个用户和本地C代码进行互操 ...

  9. JNI中Native方法的注册方式

    文章目录 JNI中native方法注册 native方法静态注册 native方法动态注册 数据类型转换 方法签名: 使用javap自动生成方法签名 JNIEnv JNI中native方法注册 jni ...

最新文章

  1. struts2常见错误及解决总结
  2. ASP.NET2.0中用ICallbackEventHandler实现客户端与服务器端异步交互
  3. uuid hashcode_Java UUID hashCode()方法与示例
  4. [转]Eclipse工具使用技巧总结
  5. 爬虫:使用Chrome谷歌浏览器自动获取xpath爬取内容为空
  6. myelicpes2019初次使用设置_实况足球2019球员数据编辑器怎么使用
  7. 软件测试-APP专项测试
  8. 清理c盘、c盘哪些文件可以删、图形显示文件大小软件
  9. 公式冒号是什么意思_excel函数公式中的:号是什么意思
  10. 有空必须要看的文章(没空也要看)
  11. python信用卡客户_银行信用卡客户价值分析(Python数据分析)
  12. 21届本科大数据菜鸡:我是怎么在互联网寒冬拿到腾讯、华为、京东、美团、快手等大厂offer的?
  13. Qt通过QAxWidget来使用flash控件的问题
  14. 桌面显卡天梯图2023年2月 台式机显卡天梯图2023
  15. jQuery实现小游戏源代码--打灰太狼
  16. matlab程序模拟微信抢红包,js模拟微信抢红包算法的讨论
  17. SSH连接IOS越狱设备
  18. 波特兰书呆子晚餐-在那儿和广场
  19. 关于在win2003中安装iTunes出错解决
  20. 04Linux查看隐藏文件

热门文章

  1. WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速
  2. 三极管+电容 实现的心形灯电路
  3. 读书笔记-Iass、Pass、SasS 、DaaS
  4. Java JSON字符串格式解析,数组取值
  5. 【RDMA】14. RDMA之Memory Window
  6. 送给计算机老师平安夜贺卡,平安夜送给老师的平安祝福语
  7. typescript将ES5转ES6
  8. 通过模数转换芯片ADC0809和51单片机实现简易电压表仿真
  9. tensor多维向量的简单理解
  10. h5打开麦克风权限录音_h5打开麦克风权限录音_通过H5实现html页面的录音和播放 (Recorder用于html5录音)......