从I4GL迁移到EGL

 

作者:金发华

 

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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值