最近有做个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 阅读(1494)
评论(2) 编辑 收藏