|
西安达内科技
联系人:陈 先生 (seo) |
|
电 话:029-82222601 |
|
手 机: |
|
|
|
|
|
Java的外部函数接口介绍 |
Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。下面西安达内培训(http://www.xatarena.cn/java/index.jhtml)讲师就Java的外部函数接口详细为大家介绍,希望对同学们有所帮助。
JEP 191在Java级别提供了类似于JNA或JNR的外部函数接口。开发人员可以通过它轻松地访问本地函数,以及在JVM级别管理本地内存。它还将支持未来针对标准Java FFI的JSR。Java FFI API可用于实现本地支持的功能,像NIO、高级文件系统元数据、进程管理。使用FFI API而不是JNI绑定本地代码和内存将成为开发人员更喜欢的方式。JEP 191并不包含对JNI的增强,不过这些可能会加入到JSR进程中。
目前,JNI是编写Java本地方法以及将Java虚拟机嵌入本地应用程序的标准编程接口。它管理着JVM和非托管的本地环境之间的边界,提供数据编组和对象生命周期管理协议。根据JEP 191,JNI在下列几个方面最令开发人员痛苦:
需要开发人员编写C代码,这意味着他们需要具备一个完全不同于Java的世界的专业知识。
由于开发人员必须对JVM如何管理内存和代码多少有一些了解,所以典型的C和Java开发人员通常并不具备使用JNI所需的专业知识。
开发人员必须能够为他们想要支持的每个平台构建代码,或者为终端用户提供适当的工具,由他们来完成这项工作。
相比于相同的库绑定到本地应用程序,基于JNI的库性能通常较差。
JNI充当了一个不透明的安全边界。JDK并不知道库中的函数可能会调用什么,或者库中的代码是否会损害JVM的稳定或安全。
JNI的问题可以通过在JDK中内建FFI API来解决。Java FFI将更容易实现,而且不需要太多关于JVM内部原理和各种宿主平台的专业知识。FFI API将提供下列特性:
一个描述本地库调用和本地内存结构的元数据系统。
发现和加载本地库的机制。
基于元数据将库/函数或内存结构绑定到Java端点的机制。
用于Java数据类型和本地数据类型之间编组和解组的代码。 |
|
|