JNI编程学习(一)

来源:互联网 发布:java中getresource方法 编辑:程序博客网 时间:2024/05/17 06:40

什么是JNI

JNI就是java native interface
在编写APP的时候,遇到了图像处理方面的问题,比如FFMPEG来进行视频解码,而java在这个方面是不擅长的,或者说这个东西需要花很长时间去做,而java暂时还没有人做出来相关的类库来调用。但是c&c++方面,已经有人写出很完备的库可以供调用了。这时候java为了支持和c&c++等其他语言的交互有了JNI。java需要.class文件运行在JVM上,这样才使得java是一个跨平台的语言。但是这样在执行的过程中,会导致效率比较低下。c&c++,通过直接在编译的时候就针对特定的平台编译成二进制文件,直接就运行在特定平台上,不需要经过一次转换,这样效率就会高很多。但是代价是:不能跨平台了,因为在编译的时候,就确定了我这个c&c++文件是要在哪个平台下运行的。所以有时候我们选择让c&c++来解决效率问题,然后用java来处理返回的结果就可以。
JNI的主要功能主要是以下两点:
1、调用c&c++等语言已经存在的优秀类库,避免重复“造轮子”。
2、利用c&c++在运行中的高效率去解决效率问题(这往往发生在我这个东西就是用java编写的,但是现在需要加入一个快速处理的功能,然而用java来实现这个功能会比较慢)

那么什么是NDK呢

ndk叫做native develop kit,本地开发套件,是google提供的在android上开发jni的工具集,也就是说NDK实际上是JNI在安卓上的一种具体实现方式。

NDK环境搭建:

windows下需要环境:
1、jdk
2、sdk
3、ndk
具体的搭建过程参考博文:
ndk环境搭建方式

网上比较老的教程说ndk需要linux环境,其实从ndk-r10之后,就有了一个ndk-build.cmd可以直接进行构建了。

参考博文
:http://blog.csdn.net/allen315410/article/details/41800955

0 0