最近有做個C++ for JNI 的輔助類庫和工具的想法,使得在JNI里可以用對象化的模式來訪問java對象。例如java::lang::System::out->println();
這個類庫和輔助工具除了支持對象化訪問外,還可以帶來的方便有:
原來需要手工寫入代碼中的大量的classname/membername和type sig可以自動生成
原來經常需要檢查java exception,可以利用C++的try/catch模式做Exception處理
原來手工javah生成include文件的方法可以通過輔助工具自動生成和java class對應的C++ 類函數定義,開發者只需要實現這個函數即可。
提供一些輔助函數、宏定義和模板使得開發JNI更加方便。例如ansi/unicode/jstring字符串轉換、C++版本的StringBuilder、外部動態加載jvm等。
在gnu的gcj里采用的就是類似的模式。我看到的sun的jdk源代碼里也普遍采用了這種模式,也許將來sun會發布一個JNI的C++版本。
posted on 2009-09-17 05:51
TaoLei 閱讀(1501)
評論(2) 編輯 收藏