广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中的Native方法
  • 858
分享到

Java中的Native方法

2024-04-02 19:04:59 858人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1.Native方法在Java中如何工作?2.Java中Native方法的示例3.总结以下是java中如何使用native方法的基本语法: [ public / protec

以下是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方法所涉及的步骤:

  • 1. 编程java代码。
  • 2. 编译java代码。
  • 3. 创建一个C头文件。
  • 4. 在C/C++中实现native方法逻辑。
  • 5. 创建一个共享库。
  • 6. 运行并测试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 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@


3.总结

从上面的文章中,我们对它有了一个清晰的认识。大多数用java编写的实时应用程序都使用native本机方法来获取性能以及本机编程语言(如C/C++)中可用的内存管理优势。

到此这篇关于Java中的Native方法的文章就介绍到这了,更多相关Java Native方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中的Native方法

本文链接: https://www.lsjlt.com/news/160605.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中的Native方法
    目录1.Native方法在Java中如何工作?2.Java中Native方法的示例3.总结以下是java中如何使用native方法的基本语法: [ public / protec...
    99+
    2022-11-12
  • Java中的Native方法是什么
    这期内容当中小编将会给大家带来有关Java中的Native方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。以下是java中如何使用native方法的基本语法:[ public ...
    99+
    2023-06-22
  • JAVA中native方法与synchronized 关键字
    native , synchronized [@more@]JAVA中native方法 @与羊共舞的狼 Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件...
    99+
    2023-06-03
  • react-native弹窗封装的方法
    本文实例为大家分享了react-native弹窗封装的具体代码,供大家参考,具体内容如下 上图 仿苹果弹窗组件(android+ios均可用) 以上效果均基于本文的弹窗组件,后...
    99+
    2022-11-13
  • 简析React Native startReactApplication 方法
    在 React Native 启动流程简析 这篇文章里,我们梳理了 RN 的启动流程,最后的 startReactApplication 由于相对复杂且涉及到最终执行前端 js 的流...
    99+
    2022-11-12
  • React Native项目中使用Lottie动画的方法
    Lottie是Airbnb开源的一个面向iOS、Android、React Native的动画库,能加载Adobe After Effects导出的动画,并且能让原生App像使用静态...
    99+
    2022-11-12
  • 在spring boot3中使用native image的最新方法
    目录简介安装GraalVM添加Native Image支持构建spring boot3应用总结简介 在之前spring boot3文章中我们介绍了,spring boot3的一个重要...
    99+
    2023-01-31
    spring boot3使用native image spring boot3 native image
  • 在 React Native 中使用 CSS Modules的配置方法
    目录安装依赖和配置使用示例有些前端工程师希望也能像开发 web 应用那样,使用 CSS Modules 来开发 React Native。本文将介绍如何在 React Native ...
    99+
    2022-11-13
    React Native使用 CSS Modules React  CSS Modules
  • 在netty中使用native传输协议的方法
    目录简介native传输协议的依赖netty本地传输协议的使用总结简介 对于IO来说,除了传统的block IO,使用最多的就是NIO了,通常我们在netty程序中最常用到的就是NI...
    99+
    2022-11-13
  • Java中的Native关键字讲解
    目录一、Java中Native关键字的语法二、Native关键字是如何工作的?三、代码示例四、Java中Native关键字的优势五、规则六、总结前言: native关键字充当JAVA...
    99+
    2022-11-12
  • 聊聊Java中的Native修饰符
    目录Native修饰符的使用native主要用于方法上说明举例Native修饰的方法到底有什么用处什么是NativeMethod为什么要使用NativeMethodJVM怎样使Nat...
    99+
    2022-11-13
  • Java中的Native修饰符怎么用
    这篇文章主要介绍Java中的Native修饰符怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Native修饰符的使用native主要用于方法上一个native方法就是一个Java调用非Java代码的接口。一个n...
    99+
    2023-06-29
  • 【JAVA】带你认识java方法|java中的方法&方法中的重载和递归
    作者主页:paper jie的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将jav...
    99+
    2023-08-31
    java 开发语言
  • React Native 加载H5页面的实现方法
    目录一、基本使用1.1 RN向H5发送数据1.2 H5向RN传递数据1.3 双向传值二、属性和方法2.1 属性2.2 方法三、使用示例3.1 加载外源网页信息3.2 登陆场景3.3 ...
    99+
    2022-11-13
  • 在Flutter中嵌入Native组件的解决方法是什么
    本篇内容介绍了“在Flutter中嵌入Native组件的解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 使用教程1.1. ...
    99+
    2023-06-04
  • JAVA 中退出程序的方法,退出 Java 中的方法
    使用: System.exit()方法         System.exit():System.exit(int status) 方法可用于退出 Java 虚拟机。通常将非零值作为参数传递给该方法,表示程序异常终止。调用 System....
    99+
    2023-09-21
    java 开发语言
  • Java中的toString()方法
    一、toString()方法介绍 toString() 方法是 Object 类中的方法,toString() 方法源代码如下: //(1)getClass().getName() 返回类的全类名(包名+类名)//(2)Integer.to...
    99+
    2023-10-25
    java 开发语言
  • Java中Native关键字怎么用
    这篇文章将为大家详细讲解有关Java中Native关键字怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Java中Native关键字的语法本机代码的语法与普通函数定义相同,在函数开头添加了“nat...
    99+
    2023-06-22
  • React Native 中限制导入某些组件和模块的方法
    目录限制使用 Touchable限制使用 Image同时限制两者示例有些时候,我们不希望使用某些组件,而是想使用其他组件。这时候,我们可以使用一个名为 no-restric...
    99+
    2022-11-13
    React Native 限制导入 React Native 导入组件模块
  • React Native集成支付宝支付的实现方法
    在RN应用开发过程中,集成支付宝和微信支付除了直接使用第三方的插件之,比如:react-native-yunpeng-alipay,我们还可以借助RN提供的NativeModules...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作