JVM系列(五):native关键字用法介绍

简介: native关键字修饰的Java方法是一个原生态方法,方法对应的实现Java作用范围达不到,而是在用其他编程语言(如C和C++)文件中实现。Java语言本身不能直接对操作系统底层进行访问和操作,但可以通过JNI接口调用其他编程语言来实现对操作系统底层的访问。

今天继续给大家分享JVM中native关键字用法介绍

image_c2face36.png

1、native概念

native关键字修饰的Java方法是一个原生态方法,方法对应的实现Java作用范围达不到,而是在用其他编程语言(如C和C++)文件中实现。Java语言本身不能直接对操作系统底层进行访问和操作,但可以通过JNI接口调用其他编程语言来实现对操作系统底层的访问。

2、什么是JNI

image_441506f8.png

JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(Java Software Development Kit,SDK)的一部分。JNI允许Java代码调用以其他编程语言编写的代码和代码库。JNI中的Invocation API可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许开发人员从本机代码内部调用Java代码。

3、为什么要有JNI

  • 标准的Java类库可能不支持你的程序业务所需的特殊功能。
  • 你之前已经用其他编程语言写成的库或程序,而你希望在Java程序中调用它。
  • 你的业务需要底层编程语言实现一个小功能,但JAVA API做不到,在你的Java程序中需要调用这个功能

4、native关键字用法

  • native与访问控制符前后修饰顺序不受限制。
  • native关键字必须写在返回类型之前
  • nativ修饰的一定是非抽象类方法
  • native方法在异地实现,类似抽象方法,不能有方法体,要以分号结束

native用法示例:

native public void mynative();

private native void mynative();

public static native mynative();

5、总结

其实在大部分情况下,Java很少能够用到native来实现某些功能,只是针对一些比较特殊的场景才有它的作用,作为JVM的一部分Java程序员还是有必要知道native这个概念的。

目前有很多技术可以实现远程调用功能比如socket、webservice、http等方式会更加适合实现不同编程语言的调用。

相关文章
|
存储 Java C语言
JVM之native关键字与PC寄存器
JVM之native关键字与PC寄存器
286 0
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
282 0
|
Rust 安全 Java
JVM原理与实现——Synchronized关键字
在多线程Java程序中,`Synchronized`关键字用于确保线程安全。本文深入探讨其工作原理,通过分析字节码`monitorenter`和`monitorexit`,解释JVM如何实现同步机制。文章展示了`Synchronized`方法的编译结果,并详细解析了轻量锁和重度锁的实现过程,包括Mark Word的状态变化及CAS操作的应用。最后简要介绍了`ObjectMonitor::enter()`函数在获取重度锁时的作用。
337 0
JVM原理与实现——Synchronized关键字
|
存储 缓存 安全
Java面试题:介绍一下jvm中的内存模型?说明volatile关键字的作用,以及它如何保证可见性和有序性。
Java面试题:介绍一下jvm中的内存模型?说明volatile关键字的作用,以及它如何保证可见性和有序性。
232 0
|
算法 安全 Java
Java面试题:解释JVM中的堆内存分代收集策略,并讨论年轻代和老年代的特点,描述Java中的线程池,并解释线程池的优点,解释Java中的`volatile`关键字的作用和使用场景
Java面试题:解释JVM中的堆内存分代收集策略,并讨论年轻代和老年代的特点,描述Java中的线程池,并解释线程池的优点,解释Java中的`volatile`关键字的作用和使用场景
219 0
|
Cloud Native Java Docker
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
Native Image部署和JVM部署的主要区别
Native Image部署和JVM部署的主要区别
|
消息中间件 JavaScript 小程序
巴拿马项目:打通 JVM 与 Native 代码
巴拿马项目:打通 JVM 与 Native 代码
|
Java
JVM 内置锁 synchronized 关键字,偏向锁优化中的批量重偏向和批量撤销(下)
JVM 内置锁 synchronized 关键字,偏向锁优化中的批量重偏向和批量撤销
543 0
JVM 内置锁 synchronized 关键字,偏向锁优化中的批量重偏向和批量撤销(下)
|
Java
JVM 内置锁 synchronized 关键字,偏向锁优化中的批量重偏向和批量撤销(上)
JVM 内置锁 synchronized 关键字,偏向锁优化中的批量重偏向和批量撤销
531 0
JVM 内置锁 synchronized 关键字,偏向锁优化中的批量重偏向和批量撤销(上)