JNI与NDK的区别

JNI是Java调用Native机制,是Java语言本身的特性全称为Java Native Interface,相似的还有微软.Net Framework上的p/invoke,可让C#或Visual Basic.Net能够调用C/C++的API,因此说JNI和Android没有关系,在PC上开发Java的应用,若是运行在Windows平台使用JNI是是常常的,好比说读写Windows的注册表。JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它容许Java代码和其余语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤为是C和C++而设计的,可是它并不妨碍你使用其余语言,只要调用约定受支持就能够了。使用java与本地已编译的代码交互,一般会丧失平台可移植性。可是,有些状况下这样作是能够接受的,甚至是必须的,好比,使用一些旧的库,与硬件、操做系统进行交互,或者为了提升程序的性能。JNI标准至少保证本地代码能工做在任何Java 虚拟机实现下。java

  标准的java类库可能不支持你的程序所需的特性。 JNI·或许你已经有了一个用其余语言写成的库或程序,而你但愿在java程序中使用它。你可能须要用底层语言实现一个小型的时间敏感代码,好比汇编,而后在你的java程序中调用这些功能。算法

  NDK是Google公司推出的帮助Android开发者经过C/C++本地语言编写应用的开发包,包含了C/C++的头文件、库文件、说明文档和示例代码,咱们能够理解为Windows Platform SDK同样,是纯C/C++编写的,可是Android并不支持纯C/C++编写的应用,同时NDK提供的库和函数功能颇有限,仅仅处理些算法效率敏感的问题,因此推荐初学者学好Java后再学习JNI。函数

  NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差别,开发人员只须要简单修改mk文件(指出“哪些文件须要编译”、“编译特性要求”等),就能够建立出so。性能

  NDK能够自动地将so和Java应用一块儿打包,极大地减轻了开发人员的打包工做。学习

相关文章
相关标签/搜索