JAVA中native方法(实现例子)
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中被访问了。
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方法(实现例子)相关推荐
- JAVA中native方法调用C语言实现学习
在java虚拟机规范的内存管理划分中,对于虚拟机内存空间划分中专门划了一块内存叫做"本地方法栈(Native Method Stack)".本地方法栈是为了java专门用来调用na ...
- java中native的用法
java中native的用法前言:在查看 Thread.java 文件时,发现有一个 方法比较特殊 private native void start0();概念:native关键字说明其修饰的方法是 ...
- java基础提升篇:Java中Native关键字的作用
初遇 初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: public native int hashCode(); 为什么有个native呢?这是我所要 ...
- 【精简解释】Java中native关键字作用
Java不是完美的,Java的不足除了体现在 运行速度上要比传统的C++慢 许多之外,Java 无法直接访问到操作系统底层 (如系统硬件等),为此Java使用native方法来扩展Java程序的功能. ...
- 安卓开发——JNI——回调java中的方法
JNI开发中 在C代码中回调java中的方法 package com.example.jnitest2;import android.app.Activity; import android.cont ...
- java中gettext方法_深入理解Java中方法的参数传递机制
形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...
- 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 ...
- Java中Native的作用
一.认识native 初次是在java.lang.Object源码中的hashCode方法中遇到: public native int hashCode(); Java平台有个用户和本地C代码进行互操 ...
- JNI中Native方法的注册方式
文章目录 JNI中native方法注册 native方法静态注册 native方法动态注册 数据类型转换 方法签名: 使用javap自动生成方法签名 JNIEnv JNI中native方法注册 jni ...
最新文章
- struts2常见错误及解决总结
- ASP.NET2.0中用ICallbackEventHandler实现客户端与服务器端异步交互
- uuid hashcode_Java UUID hashCode()方法与示例
- [转]Eclipse工具使用技巧总结
- 爬虫:使用Chrome谷歌浏览器自动获取xpath爬取内容为空
- myelicpes2019初次使用设置_实况足球2019球员数据编辑器怎么使用
- 软件测试-APP专项测试
- 清理c盘、c盘哪些文件可以删、图形显示文件大小软件
- 公式冒号是什么意思_excel函数公式中的:号是什么意思
- 有空必须要看的文章(没空也要看)
- python信用卡客户_银行信用卡客户价值分析(Python数据分析)
- 21届本科大数据菜鸡:我是怎么在互联网寒冬拿到腾讯、华为、京东、美团、快手等大厂offer的?
- Qt通过QAxWidget来使用flash控件的问题
- 桌面显卡天梯图2023年2月 台式机显卡天梯图2023
- jQuery实现小游戏源代码--打灰太狼
- matlab程序模拟微信抢红包,js模拟微信抢红包算法的讨论
- SSH连接IOS越狱设备
- 波特兰书呆子晚餐-在那儿和广场
- 关于在win2003中安装iTunes出错解决
- 04Linux查看隐藏文件
热门文章
- WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速
- 三极管+电容 实现的心形灯电路
- 读书笔记-Iass、Pass、SasS 、DaaS
- Java JSON字符串格式解析,数组取值
- 【RDMA】14. RDMA之Memory Window
- 送给计算机老师平安夜贺卡,平安夜送给老师的平安祝福语
- typescript将ES5转ES6
- 通过模数转换芯片ADC0809和51单片机实现简易电压表仿真
- tensor多维向量的简单理解
- h5打开麦克风权限录音_h5打开麦克风权限录音_通过H5实现html页面的录音和播放 (Recorder用于html5录音)......