java本地方法怎么编写_Java中的本地方法是什么?它们应该用在哪里?

Java中的本地方法是什么?它们应该用在哪里?

一旦你看到一个小例子,就会明白:

Main.java :

public class Main { public native int intMethod(int i); public static void main(String[] args) { System.loadLibrary("Main"); System.out.println(new Main().intMethod(2)); } }

Main.c :

#include #include "Main.h" JNIEXPORT jint JNICALL Java_Main_intMethod( JNIEnv *env, jobject obj, jint i) { return i * i; }

编译并运行 :

javac Main.java javah -jni Main gcc -shared -fpic -o libMain.so -I${JAVA_HOME}/include \ -I${JAVA_HOME}/include/linux Main.c java -Djava.library.path=. Main

输出 :

4

使用Oracle JDK 1.8.0_45testingUbuntu 14.04。

所以很明显,它可以让你:

使用Java中的任意汇编代码调用一个编译的dynamic加载的库(这里用C编写)

并将结果返回到Java

这可以用来:

在关键部分使用更好的CPU汇编指令编写更快的代码(不是CPU便携式)

直接进行系统调用(不是OS便携式)

与便携性较低的权衡。

您也可以从C中调用Java,但是您必须先在C中创build一个JVM: 如何从C ++调用Java函数?

在GitHub上的例子 ,你玩。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值