JNI
JNI即Java Native Interface,它能在Java层实现对本地方法的调用,一般本地的实现语言主要是C/C ,其实从虚拟机层面来看JNI挺好理解,JVM主要使用C/C 和少量汇编编写,在执行Java字节码时如果遇到有某个方法标明为Native的则从JVM中找到对应的C/C 函数,一般本地方法对应的函数会被注册到JVM中。
使用JNI能让Java与本地语言交互,但一般也意味着丧失了跨平台性,而有些场合会使用。比如标准的Java特性不符合你的需求时,比如在性能要求很高的某段逻辑。
从一个例子说起
编写一个Java类提供本地加密的方法,其中加密方法为本地方法,实现是在ByteCodeEncryptor动态库。
package com.seaboat.bytecode;
public class ByteCodeEncryptor {
static{
System.loadLibrary(
"ByteCodeEncryptor");
}
public native<
超人汪小建(seaboat)
认证博客专家
seaboat
公众号:【远洋号】,笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢编程、绘画、看书、写作和运动,擅长素描、篮球、跑步、游泳、健身和羽毛球等运动项目。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。