java的native使用方法有哪些呢(javanative方法拿什么写的)

技术Java中的Native方法是什么这期内容当中小编将会给大家带来有关Java中的Native方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。以下是java中如何使用nati

在本期中,边肖将为您带来一些关于Java中Native方法的信息。文章内容丰富,从专业角度进行分析和描述。希望你看完这篇文章能有所收获。

以下是java中如何使用native方法的基本语法:

[public/protected/private]原生[return-type]method name();上面的语法展示了如何在java中声明本机方法。像普通方法一样,它需要定义一个访问修饰符,后跟一个native关键字,后跟方法的返回类型,最后是方法名。如果需要,它还需要指定输入参数。

1.Native方法在Java中如何工作?

可以定义为那些用java以外的语言实现的方法(比如C/C)。使用这些方法背后的一般思想可能是利用C/C中提供的高性能或内存管理

为了支持用其他语言编写的方法,Java提供了一个名为Java Native Interface的接口,它充当了Java和其他语言之间的中介。使用JNI的动机来自于它可以提供代码可重用性和高性能的事实。需要注意的是,用C/C等其他语言编写的代码是不可移植的。

以下是Java本机native接口的主要组件:

javah:这是java开发工具包中提供的一个工具,它从包含本机方法的现有java文件的Java类中创建C兼容的头文件。

h:这是Java开发工具包中提供的一个基于C/C的头文件。它的功能是提供Java数据类型和本机数据类型之间的映射。上面描述的Javah文件会自动生成这个文件。

00-1010现在我们将看到一个示例,它将清楚地了解本机方法在java中是如何工作的。以下是使用本机方法所涉及的步骤:

1.编程java代码。

2.编译java代码。

3.创建一个C头文件。

4.在C/C中实现本机方法逻辑

5.创建共享库。

6.运行并测试java应用程序。

下面的例子将分为两部分:用java代码和用本机代码。

第1部分:Java

以下是包含本机方法的java类。

代码:

classNativeDemo

{

publicationestringencryptdata(stringputdata);

静电

{

system . LoadLibrarY(' native demo ');/* lowercarseofclassname!*/

}

publicstaticvoidmain(字符串[]参数)

{

native modemo=new native modemo();

system . out . println(' Encrypteddatais ' demo . encryptdata(' thisjavakk '));

}

}上面的示例包含在NativeDemo类中声明的本机方法。encryptData方法的实现是用C语言编写的,可以看到,我们使用了一个静态块,其目的是加载encryptData方法来实现可用的原生C库。需要注意的一点是系统中提供的字符串参数。loadLibrary方法是封闭java类的小写名称。现在,根据上述步骤,是时候编译我们的java代码了。

下面的命令编译上述java代码。

现在在下一步中,我们将使用javah实用程序创建一个头。

文件,如下所述。

javah -jni NativeDemo

上面的命令将生成一个与类名称同名的javah文件。在编写native方法的C实现时,将包含此文件。

第2部分:C代码

下面是native函数encryptData的C实现。

代码:

#include <jni.h>
#include <stdio.h>
#include "NativeDemo.h"
JNIEXPORT void JNICALL
Java_NativeDemo_encryptData(JNIEnv *env, jobject obj, jstring inputstr)
{
const char *str= (*env)->GetStringUTFChars(env,inputstr,0) // create string from jstring
char 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方法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/155753.html

(0)

相关推荐

  • 220v50hz一小时多少电,220v50HZ多大功率

    技术220v50hz一小时多少电,220v50HZ多大功率光看电压和频率是无法看出功率的220v50hz一小时多少电。电功率= 电压×电流。 220v50Hz是市电电压以及频率,功率的单位是瓦或者千瓦,功率=电压×电流,

    生活 2021年10月20日
  • flex和flash(flex与flash)

    技术Flex与Flash的关系是什么这篇文章主要介绍Flex与Flash的关系是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex简介Flex通常是指AdobeFlex,是最初由Macro

    攻略 2021年12月14日
  • rt-thread操作系统分配内存失败(rt-thread支持什么内存管理)

    技术RT-Thread内存管理是怎么进行的本篇文章为大家展示了RT-Thread内存管理是怎么进行的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在单片机芯片上,如果不考虑出厂固

    攻略 2021年12月17日
  • z是什么数,在数学的集合里Z代表什么

    技术z是什么数,在数学的集合里Z代表什么整数集为什么用 Z 表示呢?自然数集 N 是 英文natural number(自然数)的第一个字母;实数集 R 是real number(实数)的第一个字母;复数集 C 是com

    生活 2021年10月29日
  • 酸菜素馅饺子都放啥,素酸菜粉条饺子馅怎么调

    技术酸菜素馅饺子都放啥,素酸菜粉条饺子馅怎么调酸菜在我们的饮食中是开胃小菜、下饭菜酸菜素馅饺子都放啥,也可以作为调味料来制作菜肴,酸菜配上粉条做成水饺,味道真的好极了。今天不做肉的饺子,就做素的“酸菜粉条饺子”,要多包一

    生活 2021年11月1日
  • 非极性分子,极性分子和非极性分子有哪些

    技术非极性分子,极性分子和非极性分子有哪些分子的极性(永久烷极)是由其中正、负电荷的“重心”是否重合所引起的。根据其分子在空间是否绝对对称来判定极性非极性分子,化学键极性的向量和——弱极矩μ则是其极性大小的客观标度.甲苯

    生活 2021年10月23日