Java中的Native方法是什么
这期内容当中小编将会给大家带来有关Java中的Native方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
以下是java中如何使用native方法的基本语法:
[ public / protected / private] native [return-type] methodName ();
上面的语法显示了如何在java
中声明本机方法。与普通方法一样,它需要定义一个访问修饰符,后跟一个native关键字,后跟方法的返回类型,最后是方法名称,如果需要,还需要指定输入参数。
1.Native方法在Java中如何工作?
它可以定义为那些用java以外的语言(如C/C++)实现的方法。使用这些方法背后的总体思路可能是利用C/C++
中提供的高性能或内存管理。
为了支持用其他语言编写的方法,Java提供了一个称为Java Native Interface的接口,它充当Java和其他语言之间的中介。使用JNI的动机来自这样一个事实:它可以提供代码重用性和高性能。需要注意的是,用C/C++等其他语言编写的代码是不可移植的。
以下是Java本机native接口的主要组件:
javah
:这是java开发工具包中提供的一个工具,它从包含native方法的现有java文件java类中创建与C兼容的头文件。h
:这是Java开发工具包中提供的基于C/C++的头文件,其功能是提供Java数据类型和native数据类型之间的映射。上面描述的Javah文件自动生成这个文件。
2.Java中Native方法的示例
现在我们将看到一个示例,它将清楚地了解native方法在java中的工作方式。以下是使用native方法所涉及的步骤:
编程java代码。
编译java代码。
创建一个C头文件。
在C/C++中实现
native
方法逻辑。创建一个共享库。
运行并测试java应用程序。
下面的示例将分为两部分:具有java代码和具有native代码。
第1部分:Java
下面是包含native方法的java类。
代码:
class NativeDemo{public native String encryptData (String inputdata);static{System.loadLibrary ("nativedemo"); }public static void main (String[] args){NativeDemo demo = new NativeDemo ();System.out.println("Encrypted data is " + demo.encryptData ("This is javakk"));}}
上面的示例包含在NativeDemo
类中声明的native
方法。encryptData
方法的实现是用C编写的。如您所见,我们使用了一个静态块,其目的是加载encryptData
方法实现可用的本机C库。需要注意的一件重要事情是系统中提供的字符串参数。loadLibrary
方法是封闭java类的小写名称。现在,按照上面声明的步骤,是时候编译我们的java代码了。
下面的命令编译上述java代码。
javac NativeDemo
现在在下一步中,我们将使用javah实用程序创建一个头文件,如下所述。
javah -jni NativeDemo
上面的命令将生成一个与类名称同名的javah文件。在编写native方法的C实现时,将包含此文件。
第2部分:C代码
下面是native
函数encryptData
的C实现。
代码:
#include <jni.h>#include <stdio.h>#include "NativeDemo.h"JNIEXPORT void JNICALLJava_NativeDemo_encryptData(JNIEnv *env, jobject obj, jstring inputstr){const char *str= (*env)->GetStringUTFChars(env,inputstr,0) // create string from jstringchar Newch = '@';for(i = 0; i <= strlen(str); i++){if(str[i] == 'a' || str[i]== 'e' || str[i]== 'i' || str[i]== 'o' || str[i]== 'u' || str[i] == 'A' || str[i]== 'E' || str[i]== 'I' || str[i]== 'O' || str[i]== 'U'){str[i] = Newch;}}return env->NewStringUTF(str); // convert string to jstring}
以上文件与
NativeDemo.c
一起保存从上面的代码中,我们可以看到加密逻辑是用C语言编写的。这个逻辑只是基于将所有元音替换为@并返回字符串。
编译上述C代码
使用命令编译代码
上面的命令创建了一个共享库,java编程层使用该库调用用C编写的代码。我们可以根据编译器和操作系统使用不同的编译策略。
完成上述步骤后,我们可以调用运行java代码,如下所示:
java NativeDemo
如果一切顺利,您将看到以下输出:
Encrypted data is th@s @s @d@bc@
上述就是小编为大家分享的Java中的Native方法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341