虽然Java虚拟机为开发人员屏蔽了底层的实现细节,使得开发人员不用考虑底层操作系统的差异性。这主要是由于Java虚拟机这个中间层次的存在。Java虚拟机没有把这一部分功能暴露给运行在其上的程序。首先我们需要有一个Java类来声明本地方法,并负责加载本地代码库。Java提供的命令行工具根据Java源代码生成C/C++代码所需的头文件。这个过程是十分的繁琐的,Java提供了JNA来支持这种情况。首先elasticsearch提供了Natives类,作为调用本地方法的入口,并负责检测JNA的可用性。对于调用已有的本地库的方法或者操作系统的方法,使用JNA更为方便便捷。
暂无评论