设万维读者为首页 万维读者网 -- 全球华人的精神家园 广告服务 联系我们 关于万维
 
首  页 新  闻 视  频 博  客 论  坛 分类广告 购  物
搜索>> 发表日志 控制面板 个人相册 给我留言
帮助 退出
     
  YDX的博客
  YDX的博客
网络日志正文
上网一看,我在中间抽闲写的一个帖子触动了不少神经 2010-11-07 11:22:21
星期五晚上,我突然想把一个产品从JAVA移植到C#。这个产品是用于开发CLIENT/SERVER软件的。主要分两部分(1)一个网络远程调用的库(约上万行CODE);(2)一个界面语言编译器(IDL COMPILER)。当然还有一些测试程序,和相关的使用手册。目前这个库是JAVA写的,当初为了设计、编写这个库耗费了相当多的时间。IDL COMPILER是C写的。之前,我从来没有写过C#程序。这看起来是一个艰巨的事情。我想这个移植工作需要好几个星期,但在星期六下午就完成了(今天是星期天)。估计总共耗费了十几个高强度小时。

有一种方法:可以用IKVM把JAVA BYTECODE转化成CLR,但那是很麻烦的,而且很无奈的。正当的方法是把JAVA源代码改成C#。

首先,C#与JAVA非常接近(几乎所有的现代计算机语言都可以视为C语法的演化),盖茨手下也就这点本事。虽然它们的一些函数库有相当大差别,但在大部分情况下,可以在.NET里找到与J2SE对应的类。所以,我的第一步是把那个JAVA库“翻译”成C#。这方面,微软提供了一个辅助工具。一边查手册,边学边翻,比如说JAVA计算里的某个东东,C#怎么实现,这都得查。一口气完成后,编译能通过了(一大堆WARNING暂时忽略)。然后开始用手写的代码测试这个库。先运行一个已知的JAVA服务程序,手写一个C#客户端程序调用这个库,直到C#程序能得到正确结果。然后再反过来,写一个C#服务端程序,直到它能正确与已知的JAVA客户端正确对话。这个DEBUG的过程相当费时。这个步骤完成后,就可以对COMPILER进行改造了。因为IDL语言没有变化,因此PARSING部分都无需改变,只需要修改CODE GENERATION部分。而C#与JAVA的接近,使这个过程显得非常的愉快,虽然很多CODE是我10年以前写的,要恢复记忆。基本是一次改好,然后将生成的C#进行编译,直到通过为止。其中的大部分ITERATION都是因为我对C#不熟悉,但好在那些差别其实是很细微的。一共写了6个程序进行测试,基本上各种可能都测试到了,没有错误。然后就是收尾工作了。

首先需要一个类库使用手册,找了一个叫NDOC3的软件,自动从源代码生成,就基本可以了(虽然很简略)。然后给几个示范程序写个简短的说明。这也很简单,没必要写得太详细。因为这个东西是给程序员用的。为了防范反编译,使用VISUAL STUDIO携带的一个工具(在网上找了很久,最后才知道VISUAL STUDIO本身带了这个工具),把生成的程序库进行了一定的处理。基本大功告成。

完成之后上网一看,我在中间抽闲写的一个帖子触动了不少神经。



浏览(648) (0) 评论(0)
发表评论
我的名片
-YDX-
注册日期: 2010-08-29
访问总量: 781,704 次
点击查看我的个人资料
Calendar
最新发布
· 给肯特州立大屠杀受难者平反不符
· 除暴安良的正义感超越国家与制度
· 以人民民主制衡封建官僚主义是反
· 为什么中国能拿乒乓球冠军却拿不
· 从杨开慧的死看历史为什么选择了
· 大众社会的操控模式与互联网时代
· 肯特州立事件的平反问题
分类目录
【日志】
· 给肯特州立大屠杀受难者平反不符
· 除暴安良的正义感超越国家与制度
· 以人民民主制衡封建官僚主义是反
· 为什么中国能拿乒乓球冠军却拿不
· 从杨开慧的死看历史为什么选择了
· 大众社会的操控模式与互联网时代
· 肯特州立事件的平反问题
· 什么是哥特建筑--历史知识
· 尝试翻译温家宝总理的几句话
· 华裔女生偷窥、白人男生自杀事件
存档目录
2012-06-03 - 2012-06-03
2012-05-11 - 2012-05-11
2012-04-03 - 2012-04-15
2012-03-02 - 2012-03-29
2012-02-01 - 2012-02-28
2012-01-13 - 2012-01-31
2011-12-04 - 2011-12-28
2011-11-03 - 2011-11-24
2011-10-03 - 2011-10-29
2011-09-01 - 2011-09-25
2011-08-16 - 2011-08-31
2011-07-01 - 2011-07-27
2011-06-04 - 2011-06-29
2011-05-04 - 2011-05-31
2011-04-02 - 2011-04-28
2011-03-05 - 2011-03-28
2011-02-01 - 2011-02-28
2011-01-03 - 2011-01-27
2010-12-01 - 2010-12-31
2010-11-03 - 2010-11-30
2010-10-03 - 2010-10-30
2010-09-29 - 2010-09-30
2010-08-28 - 2010-08-29
 
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2026. Creaders.NET. All Rights Reserved.