java调用其他语言的方法
更新时间:2023-04-23 17:46:01 阅读量: 实用文档 文档下载
你心目中的“小王子”还在吗?
java调用其他语言的方法.txt
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方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言
直接操纵计算机硬件时要声明为native方法。
java中,通过JNI(Java Native Interface,java本地接口)来实现本地化。
参考资料:
1.JAVA中native方法
/5869823
2.JNI
/Wiki.jsp?page=JNI
3.用JNI调用C或C++动态联接库原来如此简单
http://b
你心目中的“小王子”还在吗?
/david_w_johnson/
4./blogs/java/
Native方法一般用于两种情况:
1)在方法中调用一些不是由java语言写的代码。
2)在方法中用java语言直接操纵计算机硬件。
Other than being implemented in native code, native methods are like all other methods: they
can be overloaded, overridden, final, static, synchronized, public, protected, or private. A
native method cannot, however, be decl
ared abstract or strictfp.
如果使用了native方法也就丢失了java的方便性和安全性。Native方法的执行依赖于JVM的设计者,比如
在sun的JVM中,可以通过JNI(Java Native Interface) API接口来实现本地化。
正在阅读:
java调用其他语言的方法04-23
毕业论文任务指导书模版08-30
欣然南溪小区C区施工组织设计06-23
杭州总结 - 图文09-15
2022年伊犁师范学院人文学院701文学概论之民间文学概论考研仿真04-12
河南省南阳市专科疾病防治院床位数量情况数据研究报告2019版05-29
900船舶大管轮辅机手机版题库10-05
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 调用
- 语言
- 方法
- 其他
- java
- 内坑品牌工业城区间道路监理规划
- 管理10级H组ERP沙盘模拟实验报告
- ServletJSPJavaBeanMVC模式适合开发复杂的web应用
- 2013年高考哲学主观题启示措施型答题
- 我国再生资源产业发展现状
- 吉安市林业局行政行为工作规范、流程及岗位责任
- 家有爱狗必看狗狗训练全集
- 自考管理学原理笔记
- 澳大利亚最稀缺的职业
- 郑州市信息价2022年第一季度(安装)
- 金融危机给中国银行业的机会
- 涉水产品生产单位卫生知识培训试卷(1)
- 工程经济 案例分析
- 山东电大社会实践考核表
- 工艺工程师岗位职责
- 用绘图工具制作动画对象
- 继电器的工作原理、特性、参数、测试等
- 当代我国城市规划中的公众参与研究
- 清水混凝土施工工艺标准
- 汉语拼音表及拼读练习题声母、韵母、整体认读音节_拼读