Java作为一个技术生态平台在业界得到了广泛的应用,许许多多的大型项目都是搭载在其之上。Java语言本身功能也十分强大,能实现大量的业务逻辑算法。那么,我们为什么要让Java和C/C++互调呢,直接用Java写不就完了吗?这是初学者一个很常见的疑问,下面我们来看看为什么需要这样做。
用Java调用底层的代码(不一定指是C/C++写的,虽然大部分是)主要原因有四个:
1.运行效率:对于很多的科学计算,信号处理,多媒体计算,计算的数据量非常大,计算的次数非常多,属于计算密集型程序,对于这类程序,在JVM上通过字节码运行,效率远远不及直接以二进制码在CPU上运行,因为很多编译优化在JVM这一层无法做出,JVM的栈式体系结构也不适合做这类优化,再者,一般这类计算会较多涉及浮点数,所以二进制码可以直接在硬件层优化。
2.系统接口:JVM提供了大量访问操作系统或者硬件的接口,然而,它也不是十全十美的,毕竟每台计算机之间系统差异巨大,不同的操作系统直接很难做到完全同意,更甚者,如果在系统中新加入了一个设备和其驱动程序,当我们想在Java中调用它时,用纯Java肯定是不可能的。
3.代码复用:也需当我们要实现某些功能时发现已经有别人写好的库提供类似的功能,有或者我们在其他平台上开发了一套系统或者引擎,要把他放到Java平台上,无奈他们是以库的形式或者C/C++项目的形式存在,这事就只能用JNI来调用,不然对于前者,我们要再实现一份相同的Java版代码,对于后者&#