一個簡單的JNA使用例子

使用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程序員

相關文章
相關標籤/搜索