作者:金发华

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. Eclipse-Java代码规范和质量检查插件-SonarLint
  2. java_web学习(8)会话与状态管
  3. 怎么发一篇IEEE文章呢?
  4. NIFI工作流备份和恢复
  5. linux cp源码_为Linux的cp和mv命令添加进度条
  6. MySQL索引背后的数据结构及算法原理(转)
  7. pat1111-1120
  8. python 类静态属性_如何从Python中的类中引用静态属性?
  9. 【pytest】Hook 方法之 pytest_addoption :注册命令行参数
  10. OpenCV-绘制简易直方图DrawHistImg
  11. SharePoint 2010--为WebPart创建自定义属性
  12. 编程疑难杂症の无法剔除的神秘重复记录
  13. 科技云报道:中国电子云曹心驰:做成云计算“国家队”该有的样子
  14. 识字小程序—hanzi-writer-miniprogram实现临摹笔画动画播放等
  15. 一个清华差生10年奋斗经历
  16. python输入一个三位数输出它的百位十位个位_python输入一个水仙花数(三位数) 输出百位十位个位实例...
  17. 【药材识别】基于色差色温特征结合SVM实现药材炮制程度判断系统附GUI界面
  18. Python数据可视化库Matplotlib折线图(一)
  19. Python base64 + AES EBC模式加密
  20. 《今日简史》《人类简史》《未来简史》

热门文章

  1. eclipse提示框全黑色背景怎么改
  2. 阿里云OSS上传文件详细步骤
  3. 2022年危险化学品经营单位安全管理人员考试练习题模拟考试平台操作
  4. python从EXCEL中读取数据转换为列表
  5. ZOJ 3323 Somali Pirates(模拟)
  6. 基于无人机遥感影像的农田作物识别(五)
  7. 微软移除升级Win10补丁 免费已成历史
  8. 关于for循环至少循环一次
  9. 杭州哪里可以打印征信报告
  10. 英语论文写作技巧-1