作者:金发华

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

从I4GL迁移到EGL相关推荐

  1. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  2. PyTorch迁移学习

    PyTorch迁移学习 实际中,基本没有人会从零开始(随机初始化)训练一个完整的卷积网络,因为相对于网络,很难得到一个足够大的数据集[网络很深, 需要足够大数据集].通常的做法是在一个很大的数据集上进 ...

  3. VGG16迁移学习实现

    VGG16迁移学习实现 本文讨论迁移学习,它是一个非常强大的深度学习技术,在不同领域有很多应用.动机很简单,可以打个比方来解释.假设想学习一种新的语言,比如西班牙语,那么从已经掌握的另一种语言(比如英 ...

  4. Nucleus-SE迁移:未实现的设施和兼容性

    Nucleus-SE迁移:未实现的设施和兼容性 Nucleus SE migration: Unimplemented facilities and compatibility Nucleus SE的 ...

  5. 软件工具将GPU代码迁移到fpga以用于AI应用

    软件工具将GPU代码迁移到fpga以用于AI应用 Software tools migrate GPU code to FPGAs for AI applications 人工智能软件初创公司Mips ...

  6. 客快物流大数据项目(十二):Docker的迁移与备份

    目录 Docker的迁移与备份 一.容器保存为镜像 二. 镜像备份 三.镜像恢复与迁移 Docker的迁移与备份

  7. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  8. linux svn更换数据仓库,Linux环境下SVN数据仓库迁移

    上一篇文章介绍了Windows环境下SVN数据的备份与还原,这篇文章介绍下Linux环境下数据迁移. 一准备工作 1安装环境 1 centOS7 2可上网 2软件需求 1 winSCP 2 PuTTy ...

  9. Elgg网站迁移指南

    转载地址: http://blog.sina.com.cn/s/blog_84068de60100vr21.html Elgg官方文档上的网站迁移部分是有问题的--缺少了一些重要步骤,而且过程更麻烦. ...

最新文章

  1. linux c atoi strtol 区别
  2. Dubbo支持的协议
  3. LiveVideoStackCon 2019北京你来吗?
  4. 斯坦福大学机器学习第一课“引言(Introduction)”
  5. 理解好内存管理,C语言就不难学了
  6. 王者荣耀交流协会Beta发布文案美工展示博客
  7. 昆仑通态MCGS与三菱FX3U 485BD方式通讯案例 实现昆仑通态触摸屏与三菱FX3U的485BD板通过485方式进行连接
  8. IPtables中SNAT、DNAT和MASQUERADE的含义
  9. 基金定投 | 微笑曲线
  10. Android 蓝牙手柄 延迟,安卓免设置,0.15s低延迟,飞智银狐蓝牙耳机体验
  11. python生成动态二维码
  12. 中国卫生材料及医药用品行业发展前景与投资战略规划分析报告2022-2028年
  13. iPhone刷门禁卡的设置方法
  14. “芯片自由”后荣耀CEO赵明发声:发布新机,冲击高端
  15. 2016华为校招机试题目02
  16. ^[A-Za-z\\d]*$ 正则表达式
  17. 大数据征信迎爆发时机 这几家企业或将率先破局
  18. 黑羽压测 一款新性能测试工具
  19. win7 关闭隧道适配器
  20. electron 实现文件下载管理器

热门文章

  1. Linu进程间通信(一)
  2. 能链科技携手中智关爱通共建基于区块链的新人力服务网络
  3. Composer 中文镜像
  4. 自媒体账号应该如何涨粉获得更多的流量呢?这四点很重要
  5. DIV布局艺购艺术品商城网页(1页) HTML+CSS+JavaScript 学生DW网页 使用html+css实现一个静态页面(含源码)
  6. Vim snippet 小技巧
  7. 程序员伪造一年工作经验_试火—如何伪造程序员
  8. uniapp微信小程序图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切圆形/圆角图片、定制样式
  9. 性能分析利器:火焰图
  10. 深圳罗湖区特殊住房申请学位需要哪些材料