作者:金发华
Informix的I4GL一度非常流行,现今在很多行业中依然有许多I4GL的应用,但是I4GL在很长时间内没有做版本升级。不过好消息是IBM推出了EGL(Enterprise Generation Language),它能够将既有的基于I4GL的程序无缝地迁移至EGL。本文大概介绍一下EGL以及如何将I4GL迁移到EGL。
EGL概览
EGL的英文全称是Enterprise Generation Language(翻译成中文是"企业代码生成语言"),它和I4GL一样,也是一门第四代语言(4th Generation Language)。所谓第四代语言,就是指一门语言或者语言环境,它设计之初是为了实现某种特殊的目的,比如说开发商业业务软件等。4GL或者更新的5GL相对于之前的3GL(如C,C++,Java等)来说,更加抽象,更加趋于解决业务问题;并且4GL的设计是为了减少编程难度,缩短软件开发的生命周期和降低开发成本。
I4GL和EGL的关系
在IBM收购了Informix之后,综合了Visual Age Generator(简称VAGen)和I4GL的优点而推出了下一代第四代语言,它就是EGL。EGL也是IBM力推的战略性第四代语言。EGL提供了迁移工具能将I4GL和VAGen开发的应用自动迁移至EGL。在迁移成功之后,只需维护基于EGL的程序,开发人员能使用现代的开发工具进行开发、调试,以及源代码版本控制等,使应用能够更加适应灵活多变的市场变化,也使开发者的效率得到成倍的提升。
EGL的优点
与I4GL向前兼容
EGL基本保留了所有I4GL的功能,因此原来的I4GL开发者对EGL语法应该相当熟悉,以便快速的将程序升级到EGL。
提供了自动迁移工具
EGL的集成开发环境RBD(Rational Business Developer)提供了向导能很方便地将I4GL转换成EGL程序,因此不需要花费大量的时间将I4GL转换成EGL。如下图所示是RBD提供的自动转换的向导。
跨平台运行
从I4GL转换到EGL代码最终会被生成Java代码,由于Java代码跨平台的特性,因此转换后的EGL代码也能跨平台运行。如Windows,Linux和Unix等。转换之后的EGL程序有三种运行方式,客户可以根据不同的需要选择不同的运行方式。
Swing 模式
Swing模式指的就是用Java的Swing来实现EGL的界面。Swing是一个用于开发Java应用程序用户界面的开发工具包。当然,对于EGL开发者来说Swing是透明的,并不需要去了解Swing的细节。EGL中的界面编程跟I4GL并无二致,EGL能自动调用Swing的API画出界面。Swing模式需要有图形界面的支持,因此在这种模式下,应用程序可以运行在Linux平台的X-Window模式和微软的Windows平台上。
如下图所示,是转换I4GL的Stores样例应用程序后以Swing模式运行的界面。
Curse模式
Curse模式是与原来I4GL程序运行方式最为相像的,在这种运行方式下,EGL会调用Linux和Unix平台下的Curse库来画出界面和控制界面。跟Swing模式类似,Curse库对于EGL开发者也是透明的,他们并不需要去关心Curse是如何调用的。在这种运行模式下,只能运行在Linux或者Unix的基于文本的控制台中。
如下图所示,是运行在Curse模式下的样例Stores应用。在下面的截图中,用户Telnet到远程的Linux机器上,然后启动运行Stores应用,所有的计算都是在服务器上完成的。
RCP模式
RCP(Rich Client Platform),国内翻译成"富客户端平台",它是基于Eclipse插件开发的一种应用。在这种模式运行下的EGL程序,跟之前的两种模式相比更加"现代化",它使用了真正的Windows控件,更像是基于Windows的应用。这种模式的运行平台要求与Swing模式类似,不过RCP模式运行的时候还需要Eclipse的一些插件,但是这并不需要担心,RBD能帮助开发者自动导出RCP运行方式下所需要的那些插件,这些对于开发者来说是透明的。
如下所示,是样例Stores应用在RCP模式运行下的截图。
开发者在完成I4GL到EGL程序的转换之后,或者拿EGL完成程序开发之后,能在这三种运行模式下切换自如,根据客户的需要灵活选择不同的运行方式。
一技多能!
在前面中提到EGL是结合了VAGen和I4GL的优点而推出的一门语言,而且作为IBM推出的战略性第四代语言,EGL当然不会只包含VAGen和I4GL中已有的功能,掌握了EGL意味着开发者也得到了更多的新技能!比如EGL除了能够生成前面介绍的Java程序之外,还能生成COBOL程序。可能你觉得COBOL程序也很"古老",好吧,也许你说的是对的。但是如果告诉你EGL也能所见即所得地开发JSF Web应用和时下很流行的Web2.0应用,你是不是会觉得刮目相看呢?
如下图所示是用EGL所见即所得地开发JSF Web应用程序。
下图所示,使用EGL所见即所得地开发Web2.0程序。
集成开发环境RBD
EGL的集成开发环境是基于Eclipse的,Eclipse作为一个成熟的软件开发平台提供了很多扩展,让开发人员事半功倍的开发程序。RBD提供了基于EGL语言的调试,代码重构,查看方法调用等等一系列的功能。如下图所示,是在RBD中调试EGL代码。
另外,RBD也能集成代码管理工具(如CVS,Clear Case等)。当然,它也支持跟RTC(Rational Team Concert)的集成,使得开发者之间的协作变得更加容易。
EGL的未来
EGL本身具有开放性和良好的扩展功能,用户甚至可以自己扩展EGL语法。在国外已经有很多客户使用并且反馈良好。作为IBM的战略性第四代语言,IBM也将不断投入资源丰富和完善EGL的功能,相信EGL的明天会非常美好!
I4GL升级到EGL之三步曲
将I4GL代码转换成EGL主要分成三个步骤,它们分别是:转换准备阶段,程序转换和转换后续阶段,下面简单介绍一下各个步骤中做的事情。
转换准备阶段
在此阶段,开发者需要准备相关的信息:
- 了解转换的局限性:虽然EGL提供了基本所有从I4GL到EGL的转换,但并不是百分之百的I4GL能毫无任何改动就能一次性迁移成功,因此需要先看一下转换的局限性,以做好评估。
- 搞清楚要转换的I4GL工程,记下工程中所有的文件名和路径。
- 有必要的话生成.4gl和.per文件
- 所有的I4GL文件在I4GL7.32编译器下能编译通过
- 如果有非英语地区的I4GL文件,记录下编码
- 确认是否有共享库,如果有的话,准备把4GL库转换成EGL共享库文件;将C文件编译成共享库
- 识别出用户自定义消息文件及其编码
- 启动IBM Informix数据实例,将I4GL模块使用的创建数据库schema
- 确定转换后的EGL文件所在的路径
- 将I4GL文件拷贝到你要运行转换工具所在的机器
在准备好了如上的信息之后,就可以开始着手进行代码的迁移了。
程序转换
- 第一阶段中准备的信息在向导的使用过程中需要多次用到
- Informix数据库Schema
- Informix数据库Schema抽取,在这个阶段会根据数据库中的表格生成一些EGL代码,以备使用
- 转换I4GL共享库
- 如果有共享库代码的话,也可以使用I4GL共享库转换工具进行转换
- 转换I4GL应用
- 使用I4GL转换工具将I4GL代码转换成EGL代码
转换后续阶段
- 查看转换日志,检查转换是否有出错信息。如果有出错信息,则根据提示准备好相应的信息,重新进行转换
- 查看是否所有相关的都成功地被转换
- 如果有C共享库代码,则编译成相应的共享代码库,并将它加到环境变量所指的目录中
- 转换完成
- 运行转换好的EGL程序
- 部署EGL程序到相应的平台并运行
资源
- RBD产品主页
- http://www-01.ibm.com/software/awdtools/developer/business/index.html
- EGL café - EGL开发资源
- http://www-949.ibm.com/software/rational/cafe/community/egl
- RBD7.5 试用版下载页面
- http://www-949.ibm.com/software/rational/cafe/docs/DOC-1384