使用JAVA語言開發程序比較高效,但有時對於一些性能要求高的系統,核心功能多是用C或者C++語言編寫的,這時須要用到JAVA的跨語言調用功能。JAVA提供了JNI這個技術來實現調用C和C++程序,但JNI實現起來比較麻煩,因此後來SUN公司在JNI的基礎上實現了一個框架——JNA
使用這個框架能夠減輕程序員的負擔,使得JAVA調用C和C++容易不少。如下例子來源於JNA的官方文檔,有興趣研究的同窗能夠到官網查看更多的例子:java
import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; /** Simple example of JNA interface mapping and usage. */ public class HelloWorld { // This is the standard, stable way of mapping, which supports extensive // customization and mapping of Java to native types. public interface CLibrary extends Library { CLibrary INSTANCE = (CLibrary) Native.loadLibrary( (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class); /* * 聲明一個跟C語言的printf()同樣的方法,參數類型要匹配 * C語言的printf()方法原型以下: * int __cdecl printf(const char * __restrict__ _Format,...); */ void printf(String format, Object... args); } public static void main(String[] args) { //調用C語言的printf()方法 CLibrary.INSTANCE.printf("Hello, World->%d",2014); } }
程序輸出結果以下:git
Hello, World->2014程序員