代码可重用是软件开发中最大的理想之一,通过构造出可重用的代码,将软件开发工作的效率从以“行”为单位提高到以“模块”为单位,从而极大地提高开发工作的效率和代码的健壮性。然而软件工业从80年代个人电脑普及以来已经发生了天翻地覆的变化,代码移植这一领域产生了深刻的变革。
移植目标的不断演变
为什么我们要移植一组代码?在软件工业发展的不同阶段这个问题有着不同的答案。在20世纪70和80年代,代码移植最主要的目的是将程序移植到不同的系统环境下运行——主要是处理器和操作系统。由于市场上的硬件和操作系统呈现多样化和均衡化的状态,因此,一个重要的程序往往需要考虑2个甚至更多的系统环境。70年代末8位处理器的多样化(Z-80,Motorola 6502,intel 8008,8080,8088,8086)和80年代初X86平台上操作系统的多样化造成了跨平台移植代码的热潮。
随着Intel X86处理器和MS DOS成为事实工业标准后,为多种系统环境并行开发一个程序的局面逐渐减少。除了基于Motorola和IBM提供处理器的APPLE在操作系统和开发工具上自成体系外,几乎所有的个人电脑软件都已经统一在X86+DOS的平台下。各种开发工具的发展方向也朝着更好的支持操作系统底层功能,帮助开发者更多的利用X86处理器的特点优越功能,如在高级语言中直接调用X86的中断,提供封装好的图形库直接读写显存进行图形操作等。
这种相安无事的局面一直持续到1990年Windows 3.0的发布为止。基于窗口、按钮、图标和鼠标的图形界面(GUI)迅速征服了全世界的个人计算机用户。将原有DOS字符模式下的应用程序移植到GUI环境成为众多用户和软件开发商的迫切需求。由于整个Windows就是一个巨大的对象,因此,基于SDK的通过注册窗口,进行消息循环的结构化开发模式由于其繁琐很快被抛弃,可视化编程逐渐成为GUI下软件开发的主流。除非开发系统级软件,一般情况下,开发工具通过对象的形式(控件、组件、类库等)向开发者封装了代码与操作系统通信的大多数过程,使得开发者尽量将精力和资源集中在业务逻辑的实现而不是系统级的编码上。所谓4GL(第四代语言)开始大行其道。传统开发工具两强Microsoft 和Borland分别推出了Visual Basic和Delphi,加上数据库领域的Sybase的PowerBuilder,一轮代码移植的热潮再度兴起。此时的重点是将结构化的逻辑在GUI下实现,将过去结构化的代码中制作界面的部分剥离,而逻辑部分附着在各种对象的事件中,操纵对象的行为,完成整个应用的成功移植。
可视化编程在Web时代的瓶颈
Internet的飞速发展给4GL编写的GUI程序提出了新的挑战。这些程序大都基于C/S结构,这种模式在局域网里将应用一分为二,服务器负责数据管理,客户机完成与用户的交互任务。C/S 具有强壮的数据操纵和事务处理能力,以及数据的安全性和完整性约束。但随着企业规模的日益扩大,应用程序的复杂程度不断提高,逐渐也暴露了以下缺点:
1.开发成本较高。C/S 结构对客户端软硬件要求较高,尤其是软件的不断升级,对硬件要求不断提高,增加了整个系统的成本,客户端越来越臃肿。
2.用户界面风格不一,使用繁杂,不利于推广使用。
3.维护复杂,升级麻烦。如果应用程序要升级,必须到现场为客户机一一升级,每个客户机上的应用程序都需维护。
为了解决C/S结构的不足,基于Internet的B/S技术应运而生,它是有计算技术以来最稳定的技术平台。本质上B/S也是一种客户机技术,用户只需通过浏览器这个统一界面,就可享受到无限丰富的,永远在不断变化和发展着的信息服务。而通过这种结构,原则上取消了管理员所有在客户机端的维护工作。
然而在C/S向B/S转移的过程中开发者遇到了极大的困难。因为代码的移植已经不再是过去的简单语法转换,而牵涉到各种对象的映射。在结构化编码时代里,无论是一种语言的不同方言之间的移植,如从Turbo C到GNU C,还是不同的高级语言之间的移植,如Turbo Pascal到Turbo C,源语言和目标语言均遵循着相同的结构,源代码的转换更多的是基于一个标识符对照表来完成。
而使用4GL开发的C/S程序是对象的集合。代码从属于对象。在相同或者类似的界面下,不同的开发工具使用的对象提供给开发者的接口可能完全不同。如果使用Java或者.NET重写原有C/S程序,意味着开发者必须将界面上所有元素逐个将其属性、参数表、事件用新的开发工具重写。工作量之大,难以想象。
自动化迁移之路
由此我们可以看出,要解决现有C/S应用低成本、快速移植到B/S结构下的应用的困境,需要从这样几个方面着手:
1. 自动且精确的GUI移植
2. 自动的语法逻辑移植
3. 方便的服务器端调试和发布
目前来看,只有APPEON(正阳软件,www.appeon.net.cn)在这个领域进行了较为全面和深入的开发。它的开发成果主要包括这样几个方面:
第一、能精确复制原有应用的GUI。APPEON提出了两个基本的原则:界面复制的精确性和浏览器的兼容性。为了实现这一点,APPEON迁移系统将原有4GL应用(目前,APPEON可以支持对PowerBuilder, Visual Basic, Delphi和Oracle Forms,以下同)的GUI信息导出成XML格式的文件(APPEON称之为XUI文件)。APPEON提供的可视化集成开发环境可以编辑这些XUI文件,并产生相应的代码(Java或JavaScript),这些代码控制向浏览器输出HTML和JavaScript。应用运行时,向浏览器端输出的HTML和JavaScript可以精确地模拟原应用的UI,同时接受用户的输入(鼠标和键盘)。因为应用在客户端浏览器中只涉及HTML和JavaScript,所以不用依赖任何第三方插件(例如Applet)。同时,这些HTML和JavaScript符合国际通用标准,因而可以在不同的浏览器上运行,保证了浏览器的兼容性。
第二、能精确迁移原有应用的业务逻辑。APPEON开发了自己的迁移引擎,可以自动地将各种4GL应用的源代码导出,按照语法对应规则产生目标代码。对于PowerBuilder应用,目标代码仍然是基于PowerBuilder的。而对于Visual Basic, Delphi和Oracle Forms,目标代码则被统一成Java。翻译后的代码具有良好的可读性,代码的组织结构也与原应用类似,从而保证了很好的可维护性。
第三、方便的服务器端调试和发布。对翻译后的Java代码,可以在任何的Java IDE中调试这些代码。调试的应用就是真正要上线运行的应用。为更好地方便用户调试和发布翻译后的应用,APPEON还特别提供了一个基于Eclipse的集成开发环境。在这该环境中,用户只需要点击一个按钮,就可翻译后的代码编译、打包和部署到应用服务器(或Web容器)上,不需要用户做任何的额外配置。如果要将应用部署一个真正的运行环境(例如电信托管机房)中,只需要将一个打好包的文件放到应用服务器的一个指定目录即可。对PowerBuilder,APPEON提供的Appeon PowerBuilder Developer同样提供了类似的功能。
产品发布是Web迁移过程的最后一步,这一步将要把目标应用最终发布到用户的产品服务器上,让终端用户访问。
当目标代码生成后,通过FTP上传到 Appeon Server、WEB Server(包括Windows或UNIX/Linux操作系统);如果Server是本地则直接copy目标文件到Server。另外也可以通过Appeon Pakcage Wizard功能进行打包去自由安装,而无需依赖Appeon 开发工具。之后就可以运行。
只要有软件存在,代码重用,代码移植的讨论就会一直存在。随着分布式应用的广泛发展,B/S应用逐渐成为未来软件的基本生存形态。如果将现有应用移植到B/S模式下,依然是一个需要众多开发者和软件公司共同努力的研究方向。
公司简介:
APPEON(正阳软件)是一家专门从事研发和营销企业级软件产品的公司,成立于美国硅谷,2001年12月在深圳建立研发中心。APPEON的产品是全球唯一能将C/S结构的企业软件自动转译为基于互联网运行的B/S结构的软件。该产品不仅能够使企业客户的开发能力及开发速度变得更加具有竞争力,同时最大限度地保留了企业以往在IT方面的投资,并能够充分利用企业现有的开发人员与技能,为企业节省大量的研发资金。
2002年,APPEON以行业领先的创新技术开发出APB(Appeon for PowerBuilder)产品,APB产品的问世迅速得到了全球PB用户的广泛关注与试用,改写了PB用户无法进行网络应用的历史,并由此APPEON与美国Sybase公司建立了全球战略合作伙伴的关系。
2004年,APPEON又推出了AJE(Appeon Java Edition)产品,该产品是专门为4GL开发人员设计的J2EE Web应用开发及迁移工具。开发人员不但能够以4GL的习惯快速开发出标准的J2EE Web应用,而且可以把以前的4GL应用快速迁移至网络。
关于APPEON更多信息请参考www.appeon.net.cn
CSDN声明:此消息系转载自CSDN合作媒体,其中细节未经CSDN证实,特此声明