2024年3月23日发(作者:)

充分利用java阵营众多的类库

工具:

IKVM――把javabytecode转换成IL程序,并提供大部分J2SE1.4类的.net实现

()

winrar――提取jar,打包jar

JavaIDE(可选)――阅读源代码,浏览类之间的关系,我用的是eclipse

反编译工具(可选)――没源代码时用,主要也是浏览类与类之间的关系,java反编译我

用的是DJJavaDecompiler,.net用Reflector。

原理:

java也好,.net也好,其执行无非就是运行时+库,把java汇编指令一条一条转换为IL

汇编指令,就可以实现java程序到.net程序的转换――你可以通过最纯正的.net使用方式来使

用这些类库/程序。ikvm实现的就是这样一个功能。

如果一个java程序调用一大堆java类库,那么必须把这些程序和类库全部转换成.net的

IL格式,这个程序才能执行。

IKVM安装:

从上下载ikvm,解压缩后就能开始用。

将jar转换为dll:

运行:ikvmc-target:library××××.jar

会将jar文件自动转换为××××.dll

但是,如果jar中引用的类不存在于××××.jar,也不存在于

之中,则会给出警告信息,该类也不会转换。这时,需要引用缺少的类所在的dll,格式如下:

ikvmc-target:library-reference:-reference:

-reference:

jar的提取:

jar可以用winrar打开,把你想要的目录或类解压缩。

把javaclass文件打包为jar:

把目录压缩成zip格式,把后缀改成jar,OK。

例子:转换Geotools的main模块

下面以Geotools的main模块为例,说明怎样将jar文件转换为IL文件。

geotools是有10年历史的GIS中间件。其main模块有1000多个类,源代码文件大小合计

9.74M。jar文件名为,2.34M.

步骤1:分析main模块依赖的类库,分析类库间的依赖关系

geotools-main依赖的类库有:

――java的主要的lib

――OpenGIS一帮人定义的标准geoapi

jai_,jai_,――Java2DAPI

,――Java拓扑套件,主要用于拓扑分析,可能依赖

――vector数学库