栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的本机方法是什么,应在哪里使用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 <jni.h>#include "Main.h"JNIEXPORT jint JNICALL Java_Main_intMethod(    JNIEnv *env, jobject obj, jint i) {  return i * i;}

编译并运行

javac Main.javajavah -jni Maingcc -shared -fpic -o libMain.so -I${JAVA_HOME}/include   -I${JAVA_HOME}/include/linux Main.cjava -Djava.library.path=. Main

输出

4

在Ubuntu 14.04上使用Oracle JDK 1.8.0_45进行了测试。

因此很明显,它允许您执行以下操作:

  • 使用Java中的任意汇编代码调用经过编译的动态加载的库(此处用C编写)
  • 并将结果返回Java

这可以用来:

  • 使用更好的CPU组装指令在关键部分上编写更快的代码(非CPU可移植)
  • 进行直接系统调用(非OS便携式)

以降低便携性为代价。

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

GitHub上的示例供您使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449664.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号