在做Android开发的时候,经常会通过jni调用c、c++编写的库,期间也碰到了很多问题,感觉现在是时候对jni进行一个总结了。接下来的时间里,小何根据自己的学习和工作经验,对jni进行一个简要的介绍,希望能够帮到一些朋友,为中国的软件事业贡献自己的一点绵薄之力吧!

    首先来讨论一下什么是jni?

JNI是Java Native Interface的缩写,翻译成中文就是:java 本地接口。我们都知道,现在很多代码都是用java、c、c++编写的,jni提供了他们之间沟通的桥梁,通过jni,java可以调用c、c++,反过来c、c++也可以调用java,是不是觉得挺神奇?

    接下来讨论一下用jni有什么好处?

    我接触jni,是因为android项目的需要,因为要经常调用一些开源的库,而这些开源库大都是用c、c++编写的,因此就走上了jni的道路。下面我自己简单总结一下会用到jni的一些情况:

    1、android开发的时候,会用到开源的库或者是之前就已经写好的库,因为android是基于java的,而这些库一般都是基于c、c++的,为了节省成本,一般很少用java重新写一遍,而是用jni的方式直接调用c、c++编写的代码

    2、我们都知道,由于java的跨平台性,效率不是很高。对于比较注重效率的应用或者游戏之类的,一般用c、c++编写,然后android应用通过jni来调用,这样能够明显的提高程序的运行效率

    3、还有就是一些做framework或者底层驱动之类的朋友,android的底层是基于linux内核的,底层的很多驱动和库都是用c、c++编写的,应用层要和底层的这些东西打交道肯定都是通过jni的方式进行的,大家可以查看android的源代码,大量的应用了jni 。所以对android源代码感兴趣的朋友,jni是必须掌握的。

    总而言之,不管你用jni的理由是什么,深入理解并掌握jni是android程序员必备的一项技能,理解透了,对你今后的工作绝对是大有好处的。

    今天就暂时写到这里吧,接下来我以android为例,一步一步教大家进入jni的世界吧!