多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
当Java平台被部署在宿主环境之后,Java应用程序就可以与原生代码(其他语言)协同工作了.开发者已经开始使用Java平台构建曾经使用C/C++写成的应用程序,但毫无疑问C/C++还要和Java共存很长一段时间,因为开发者舍不得他们曾经花费很大精力使用这些语言完成的代码. JNI是一个很强大的特性,它让你既可以利用Java平台的特性,同时可以使用其他语言完成的代码.作为Java虚拟机实现一部,JNI是一种双向接口,既允许Java应程序调用原生代码,同时也允许原生代码调用Java代码.图1.1展示了JNI的角色定位. ![](https://box.kancloud.cn/2016-02-24_56cd74af24db4.png) 图1.1 JNI的角色. * JNI被设计为用于处理当你想使用Java语言和原生代码进行混合编程的场景.作为一种双向接口,JNI支持两种类型的原生代码:原生库和原生应用程序.你可以使用JNI通过原生方法允许Java应用程序调用原生库中的函数.Java应用程序对JNI函数的调用同普通的Java函数没有什么区别,而背后的实现代码,则是在原生库中. * JNI支持一种调用接口,它允许你在原生应用代码中内嵌一个Java虚拟机实现.原生应用可以链接一个实现了Java虚拟机的原生库,然后通过这种调用接口调用使用Java语言完成的软件组件.例如,一个使用c语言实现的浏览器可以在一个内嵌的Java虚拟机中执行下载下来的Java applets.