将java库转换为.net库

动机: 充分利用java阵营众多的类库 工具: IKVM――把java bytecode 转换成IL程序,并提供大部分J2SE 1.4类的.net实现(IKVM.GNU.Classpath.dll) winrar――提取jar,打包jar Java IDE(可选)――阅读源代码,浏览类之间的关系,我用的是eclipse 反编译工具(可选)――没源代码时用,主要也是浏览类与类之间的关系,java反编译我用的是DJ Java Decompiler,.net用Reflector。 原理: java也好,.net也好,其执行无非就是运行时 + 库,把java汇编指令一条一条转换为IL汇编指令,就可以实现java程序到.net程序的转换――你可以通过最纯正的.net使用方式来使用这些类库/程序。ikvm实现的就是这样一个功能。 如果一个java程序调用一大堆java类库,那么必须把这些程序和类库全部转换成.net的IL格式,这个程序才能执行。 IKVM安装: 从www.ikvm.net上下载ikvm,解压缩后就能开始用。 将jar转换为dll: 运行:ikvmc -target:library ××××.jar 会将jar文件自动转换为 ××××.dll 但是,如果jar中引用的类不存在于××××.jar,也不存在于IKVM.GNU.Classpath.dll之中,则会给出警告信息,该类也不会转换。这时,需要引用缺少的类所在的dll,格式如下: ikvmc -target:library -reference:lib1.dll -reference:lib2.dll -reference:lib3.dll jar1.jar jar的提取: jar可以用winrar打开,把你想要的目录或类解压缩。 把java class文件打包为jar: 把目录压缩成zip格式,把后缀改成jar,OK。 例子:转换Geotools的main模块 下面以Geotools的main模块为例,说明怎样将jar文件转换为IL文件。 geotools是有10年历史的GIS中间件。其main模块有1000多个类,源代码文件大小合计9.74M。jar文件名为gt2-main.jar,2.34M. 步骤1:分析main模块依赖的类库,分析类库间的依赖关系 geotools-main依赖的类库有: rt.jar――java的主要的lib geoapi.jar――OpenGIS一帮人定义的标准geoapi jai_codec.jar, jai_core.jar,――Java 2D API JTS-1.4.jar,――Java 拓扑套件,主要用于拓扑分析,可能依赖 vecmath-1.3.jar――vector数学库 xalan-2.5.1.jar――xml 转换lib opengis-legacy-0.1.jar,――忘了干什么的,反正和gis有关 units-0.01.jar――不知道是什么 batik*.jar――SVG lib mailapi-1.3.jar 步骤2:转换类库 先转换那些没依赖的库,比如vecmath-1.3.jar,...... 运行: ikvmc -target:library vecmath-1.3.jar 结果: Note: output file is "vecmath-1.3.dll" Note: automatically adding reference to "f:\ikvm-0.20.0.0\ikvm\bin\ikvm.gnu.classpath.dll" 成功转换成vecmath-1.3.dll。 如果碰上了依赖的库没转换,比如运行: ikvmc -target:library jai_codec.jar 结果提示有些类找不到: Note: output file is "jai_codec.dll" Note: automatically adding reference to "f:\ikvm-0.20.0.0\ikvm\bin\ikvm.gnu.classpath.dll" Warning: class "com.sun.image.codec.jpeg.JPEGCodec" not found Warning: class "com.sun.image.codec.jpeg.JPEGEncodeParam" not found Warning: class "com.sun.image.codec.jpeg.JPEGImageEncoder" not found Warning: class "com.sun.image.codec.jpeg.JPEGDecodeParam" not found Warning: class "com.sun.image.codec.jpeg.JPEGImageDecoder" not found Warning: class "com.sun.image.codec.jpeg.ImageFormatException" not found Warning: class "com.sun.image.codec.jpeg.JPEGQTable" not found Warning: class "sun.security.action.GetPropertyAction" not found 因此对于有依赖关系的库,需要从最下面那个,大家都依靠它的那个库转换起。在这里就是rt.jar。 from: http://hi.baidu.com/ecgql/blog/item/f2bde21fefa6000c314e1563.html

如鹏网.Net培训班正在报名,有网络的地方就可以参加如鹏网的学习,学完就能高薪就业,点击此处了解

 

    三年前只要懂“三层架构”就可以说“精通分层架构”;现在则需要懂IOC(AutoFac等)、CodeFirst、lambda、DTO等才值钱;

    三年前只要会SQLServer就可以说自己“精通数据库开发”;现在则需还需要掌握MySQL等开源数据库才能说是“.Net开源”时代的程序员;

    三年前只要会进行用户上传内容的安全性处理即可;现在则需要熟悉云存储、CDN等才能在云计算时代游刃有余;

    三年前只要掌握Lucene.Net就会说自己“熟悉站内搜索引擎开发”;现在大家都用ElasticSearch了,你还用Lucene.Net就太老土了;

    三年前发邮件还是用SmtpClient;现在做大型网站发邮件必须用云邮件引擎;

    三年前缓存就是Context.Cache;现在则是Redis、Memcached的天下;

    如鹏网再次引领.Net社区技术潮流!点击此处了解如鹏网.Net最新课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值