JNI编程学习(一)
2016-01-02 16:24
211 查看
什么是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可以直接进行构建了。
参考博文
:/article/1372036.html
相关文章推荐
- C++命名空间
- php本地包含
- Java 动态写轮眼 SharinganJPanel (整理)
- java登陆注册界面参考的资料和代码
- 【设计模式】代理模式
- C#之方法与函数
- 【VBA研究】查找目录以下全部文件的名称
- Java 图片提取RGB数组 RGBOfCharMaps (整理)
- PHP 读取文本文件内容并分页显示
- myeclipse的相关设置
- python基础
- Java 直线、多段线画板 PaintJFrame (整理)
- python常用的一些东西——sys、os等(转)
- Java 碰撞的球 MovingBall (整理)
- (java多线程并发)控制并发线程数的Semaphore
- Golang中的管道channel在几个典型语言中的实现
- 【总结】初识C#变量
- lua模块的几种实现方式
- Java RGB数组图像合成 ImageCombining (整理)
- php实现概率性随机抽奖代码