Java native 关键字

news2024/11/28 19:33:37

如你在看 JDK 的源代码的时候,大概率会看到很多方法使用了 native 关键字。

下面是 String 对象 JDK 中的源代码,就带有了一个 native 关键字。

2023-09-12_22-50-44

native 是干什么用的

简单来说就是 Java 的 native 方法的实现不是用 Java 实现的,可能在其他语言里面。

一个 Native Method 就是一个 java 调用非 java 代码的接口。

一个Native Method是这样一个java的方法:该方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。

使用 native 关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。

JVM 中很多的底层实现都是使用 C 实现的。

看看 openj9 的源代码就知道了。

例如下图上面 openj9 中的 gc,就是 C 实现的。

2023-09-12_22-55-45

JDK 在调用上面一些实现的时候,显然是调用了外部的动态库等,所以我们用 native 在这里标记下,表示具体实现在 JVM 里面。

实现

具体的实现是通过 JNI 实现的。

JNI 的全称为 Java Native Interface,一句话来说就是Java的本地接口,和我们常见的很多Java方法,很多实现是由Java本身来实现的,有的时候还需要本地方法来提供相关的功能。

image

通过 JNI 就可以实现调用了。

在这里 native 只是在 JDK 里面标记下。

Java native 关键字 - Java - iSharkFly

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023最新AI创作商用ChatGPT源码分享+支持AI绘画

一、SparkAI智能创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文…

OPENCV--实现meanshift图像分割

Meanshift原理 效果图 API # -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/9/13 """ import cv2 import numpy as npimg = cv2.imread("F:\\learnOpenCV\\openCVLearning\\pictures\\Lena.jpg

计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆。YOLO(You Only Look Once)是一种目标检测深度学习模型。想象一下,传统的目…

做机器视觉工程师,其实挺没意思的

3.康耐视VisionPro高级脚本系列教程-3.脚本编辑错误和运行错误调试方法,break和Contitinuee的差别_哔哩哔哩_bilibili 其实人生就是“有时有意思,有时没意思”。 心里有太多的不甘心,太多的苦水,是没法再吃学习的苦&#xff0c…

Linux系统编程多线程(C++)

目录 【1】引入如何看待地址空间和列表 【2】什么是线程 【3】线程的优点 【4】线程的缺点 【5】线程异常 【6】线程用途 【7】线程VS进程 【8】Linux线程控制 【8.1】查看轻量级线程指令 【8.2】线程创建 【8.2.1】POSIX线程库 【8.2.2】创建线程 【8.2.3】一次性…

1054. 距离相等的条形码;823. 带因子的二叉树;1878. 矩阵中最大的三个菱形和

1054. 距离相等的条形码 核心思想:隔一个数填一个,优先填写出现次数多的数。注意点就是条形码的长度为奇数和偶数,但是我们遵循先优先填偶数就不会出错即可。 823. 带因子的二叉树 核心思想:递归。定义dfs(val)表示以值val作为根…

[UE虚幻引擎插件介绍] DTSQLite 插件说明 :蓝图操作SQLite3文件,执行SQL语句。

本插件可以在UE里面使用蓝图操作SQLite3文件&#xff0c;并且执行SQL语句&#xff0c;CREATE&#xff0c;SELECT&#xff0c;DELETE&#xff0c;INSERT&#xff0c;UPDATE。 直接操作数据库&#xff0c;并返回相应结果集&#xff0c;并可以把结果集转换为TArray<TMap<FSt…

Microsoft Excel 101 简介

什么是 Microsoft Excel&#xff1f; Microsoft Excel 是一个电子表格程序&#xff0c;用于记录和分析数值数据。 将电子表格想像成构成表格的列和行的集合。 字母通常分配给列&#xff0c;数字通常分配给行。 列和行相交的点称为像元。 单元格的地址由代表列的字母和代表行的…

华为云征文|华为云云耀云服务器L实例使用教学(一)

目录 国内免费云服务器&#xff08;体验&#xff09; 认识国内免费云服务器 如何开通国内免费云服务器 云耀云服务器 HECS HECS适用于哪些场景&#xff1f; 网站搭建 电商建设 开发测试环境 云端学习环境 为什么选择华为云耀云服务器 HECS 国内免费云服务器&#xff…

LeetCode 40. Combination Sum II【回溯,剪枝】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Loopback for Mac:专业级的音频处理能力

Loopback for Mac是一款功能强大的虚拟音频设备&#xff0c;它能够将应用程序的音频输出路由到其他应用程序的输入&#xff0c;从而实现音频数据的传输和交互。以下是Loopback for Mac的一些主要功能和特色介绍&#xff1a; 创建虚拟音频设备&#xff1a;Loopback可以创建虚拟…

基于Python开发的Excel数据分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的Excel数据分析系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0…

源码编译risc-v虚拟机和编译器 riscv-gnu-toolchain 和 riscv-tools 在ubuntu 22.04

1. 编译 riscv-gnu-toolchain 1.1 预备环境 $ sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev 1.2 下载源代码 http…

Linux tcpdump抓包命令

1.tcpdump抓包命令 -c 指定抓取包的数量&#xff0c;即最后显示的数量 -i 指定tcpdump监听的端口。未指定&#xff0c;选择系统中最小的以配置端口。-i any:监听所有网络端口 -i lo:监听lookback接口。-nn 对监听地址以数字方式呈现&#xff0c;且对端口也以数字方式呈现。…

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一) 第一部分:组态配置 具体步骤可参考以下内容: 如下图所示,新建一个项目后,添加一个安全型PLC,这里以1516F-3 PN/DP为例进行说明, 如下图所示,添加CPU完成后,可以看到左侧的项目树中比普通的PLC多了几个选项…

el-date-picker 封装一个简单的日期组件, 主要是禁用日期

子组件 <template><div><el-date-pickerv-model"dateModel"type"datetimerange":picker-options"pickerOptions"range-separator"至"ref"picker"start-placeholder"开始日期"end-placeholder&quo…

深度学习-消融实验

深度学习中消融实验的目的 深度学习中&#xff0c;消融实验是一种用于理解和评估神经网络模型的技术。它的主要目的是通过逐步删除神经网络的某些组件或功能&#xff0c;来研究它们对模型性能的影响。通过这种方式&#xff0c;我们可以深入了解模型的工作原理、探索模型的鲁棒性…

第31章_瑞萨MCU零基础入门系列教程之WIFI蓝牙模块驱动实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

【毕业设计】基于SSM的仓库进存销系统

前言 &#x1f525;本系统可以选作为毕业设计&#xff0c;运用了现在主流的SSM框架&#xff0c;采用Maven来帮助我们管理依赖&#xff0c;所选结构非常合适大学生所学的技术&#xff0c;本系统结构简单&#xff0c;容易理解&#xff01;本系统功能结构完整&#xff0c;非常高适…

下载HTMLTestRunner并修改

目录 一. 下载HTMLTestRunner 二. 修改HTMLTestRunner 1. 修改内容 2. 修改原因 一. 下载HTMLTestRunner 下载报告模板地址:http://tungwaiyip.info/software/HTMLTestRunner.html 下载模块&#xff1a; 二. 修改HTMLTestRunner 将修改后的模块放到python安装目录下的..…