从I4GL迁移到EGL

ffmpeg4.4.4版本引入GL Transition给视频添加转场特效 ffmpeg、ffmpeg-gl-transition 阅读详情

 

作者:金发华

 

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
解决Linux下OpenGL/EGL与X11窗口系统配置匹配错误 在Linux图形开发中,OpenGL作为跨平台的图形渲染API,定义了如何绘制图形,但它需要一个与操作系统和硬件适配的渲染环境才能工作。EGL(Embedded-System Graphics Library)正是为此而生,它充当了OpenGL与底层原生窗口系统(如X11、Wayland)之间的桥梁,负责管理显示连接、选择帧缓冲区配置、创建渲染表面和上下文。其核心价值在于实现了高性能图形API与多样化的窗口系统之间的解耦与适配,使得同一套OpenGL代码能在不同平台上运行。这一机制在开发跨平台游戏、CAD软 阅读详情

相关推荐

解决Linux下EGL与X11视觉配置不匹配的图形渲染问题

在Linux图形开发中,EGL作为OpenGL/OpenGL ES与原生窗口系统间的桥梁,其核心作用是为GPU硬件加速渲染提供统一的接口。其工作原理是通过EGL Config与底层窗口系统的视觉配置进行匹配,从而创建有效的渲染表面。这一机制的技术价值在于实现了跨平台的图形API标准化,使得移动和嵌入式设备的图形应用能够移植到桌面环境。然而,在传统的X11窗口系统下,EGL Config与X11 Visual的匹配问题,特别是深度和颜色格式的不兼容,常导致应用无法利用硬件加速,甚至触发“unable to f

weixin_33788244的博客 379

07.01.01.tiptop:集成篇(4gl集成java:Hello World)

07.01.01.tiptop:集成篇(4gl集成java:Hello World)

*_* 587

告别EGL初始化噩梦:PyOpenGL在Linux服务器无头渲染的三种正确打开方式(含dm_control实例)

本文深入解析了在Linux服务器上使用PyOpenGL实现无头渲染(Headless Rendering)的三种技术方案:EGL、OSMesa和GLFW,特别针对dm_control/MuJoCo环境提供了详细配置指南和常见问题解决方案。通过对比硬件加速、兼容性和性能等关键特性,帮助开发者根据实际需求选择最佳方案,有效解决`ImportError: Cannot initialize a headless EGL display`等典型问题。

chudan0503的博客 403

OpenClaw智能代理框架配置与实战指南

智能代理框架作为AI领域的重要工具,通过模块化设计和多模态处理能力,显著降低了复杂任务的实现门槛。其核心原理在于将自然语言理解、计算机视觉等功能封装为可组合的技能单元,开发者通过配置文件即可快速构建个性化AI应用。OpenClaw作为开源框架的代表,凭借其开箱即用的特性在开发者社区广受关注,特别适合自动化办公、智能家居等场景。本文以微信接入和视频编辑为例,详解从环境搭建到技能定制的全流程实践,其中模型混合加载策略和硬件联动方案尤为值得关注。针对常见的内存泄漏、中文乱码等问题,文中提供的避坑技巧均来自真实项目

congji3817的博客 339

从GLUT到freeglut:一个开源替代库如何让我的OpenGL ES项目告别“黑窗口”?

本文探讨了从GLUT迁移到freeglut的过程,展示了这一开源替代库如何解决OpenGL ES项目中的常见问题。freeglut不仅提供多窗口支持、增强输入处理,还具备跨平台兼容性,显著提升开发效率和性能。文章包含详细的迁移指南和实战技巧,帮助开发者充分利用freeglut的强大功能。

weixin_29895109的博客 303

Headless服务器上Mujoco渲染失败的5种解决方案(附详细配置命令)

本文详细介绍了在Headless服务器上解决Mujoco渲染失败的5种有效方案,包括基础环境诊断、虚拟帧缓冲器(Xvfb)、OSMesa纯软件渲染、EGL后端加速和容器化部署。每种方案均附带详细配置命令,帮助开发者在无图形界面环境中实现稳定渲染,适用于CI/CD流水线和云服务器部署。

weixin_29230773的博客 351

EGL语言从入门到精通

EGL语言从入门到精通 作为一个编程初学者,你是否为前端到后端众多的编程语言学习而烦恼?作为一个编程老鸟,你是否还在为不能全力专注于业务逻辑而忧愁?作为一个追赶潮流的编程发烧友,你是否还在为众多手机平台开发环境的差异而头疼?EGL语言正是为了解决这些跨语言领域的问题应运而生的业务语言。 EGL(EnterpriseGenerationLanguage)是IBM致力推广的业务编程语言。它...

云计算? 755

Android Camera开发实践(4) SurfaceTexture与特效

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

2401_84537826的博客 1130

业务编程语言EGL

EGL 目录 简介 设计目标 简介   EGL,英文全称“Enterprise Generation Language",是IBM致力推广的业务编程语言。   EGL是IBM设计的面向企业的平台无关高级程序语言,语法类似其它常见语言,EGL程序可以编译成COBOL、Java或 JavaScript代码,以运行在不同平台和浏览器上。它是一种通用的应用程

邻家·清崎技术成长轨迹 1194

Android C++层OpenGL ES视频渲染:从YUV到RGB的完整实现与性能优化

在移动端音视频开发中,图形API是实现高性能渲染和实时处理的核心技术。OpenGL ES作为跨平台的行业标准,通过其可编程渲染管线,允许开发者直接操作GPU进行并行计算,从而在视频处理等场景中实现远超CPU方案的性能。其核心原理在于将顶点和片元着色器编译为GPU程序,通过纹理映射和矩阵变换,高效完成YUV到RGB的色彩空间转换等复杂运算。这项技术的工程价值在于,它提供了对渲染流程的绝对控制权,能够满足自定义滤镜、多路合成、极致性能等高级需求。尤其在Android平台上,结合C++层的实现,可以彻底摆脱Jav

weixin_34238633的博客 371

Android OpenGL 知识学习文档

一份从零构建 Android OpenGL 知识体系的实战文档。覆盖 OpenGL ES 版本演进、EGL 初始化、可编程管线 (Vertex/Fragment Shader)、投影矩阵变换、GLSurfaceView 线程模型、FBO/MSAA/实例化渲染等高级技术,以及纹理加载、性能优化清单和 GL→Vulkan 迁移指南。代码驱动,对比清晰,适合 Android 工程师系统掌握 3D 图形开发。

gyuong的专栏 23

告别EGL初始化失败:在Linux服务器无头环境中为PyOpenGL和MuJoCo选择正确渲染后端的实战心得

本文深入探讨了在Linux无头服务器环境中为PyOpenGL和MuJoCo选择正确渲染后端的实战经验。针对常见的EGL初始化失败问题,提供了硬件加速、虚拟缓冲和纯软件三种解决方案的性能对比与配置模板,帮助开发者高效解决图形渲染难题。

chudan0503的博客 447

IBM Rational Business Developer Extension:概览

的产品称为 IBM Rational Business Developer Extension。它提供了基于工作团队的客户/服务模式,特别是对于那些工作在 COBOL 或其它传统的语言环境下的人们来说,他们可以使用工具快速地交付服务,而避免了需要进行大量 Java 培训的瓶颈。Rational Business Developer Extension (RBDe) 提供给开发团队一种在2006年引入的语言,Enterprise Generation Language (EGL)。本文描述了IBM开发EGL的原因,并讨论了在当今基于 Web 和服务的舞台,IT 组织如何使用它变得更快、更加有生产力。

鸿蒙PC迁移:Avogadro Qt 分子编辑器鸿蒙PC适配全记录

文章摘要 本文记录了分子可视化工具Avogadro 2在鸿蒙PC/真机环境的适配过程。作为一款基于C++/Qt的计算化学工具,该项目面临Qt Widgets桌面程序整合鸿蒙Stage模型、OpenGL 4.0转OpenGL ES 3.x渲染等核心挑战。适配方案采用工程自带的Qt 5.15 for HarmonyOS SDK,通过CMake参数控制构建模式(SHELL模式优先实现基础分子查看功能),保持上游代码零修改的同时在harmony_pc目录新增鸿蒙工程结构。关键突破包括:Qt应用作为HAP原生库加载、

前端小白在前进的博客 6141

Wireshark抓包实战:5个CTF比赛中高频出现的流量分析技巧(附真实案例)

本文分享了Wireshark在CTF比赛和实战渗透中的五个核心流量分析技巧。内容涵盖从宏观统计概览锁定可疑目标、深度解析ICMP与HTTP等协议、追踪重组完整会话流,到利用字符串搜索和命令行工具进行自动化分析。掌握这些高阶技巧能显著提升分析海量网络流量的效率与精准度。

rrr55的博客 261

秦时明月6.2魔改版_从零到一部署指南_含安卓客户端配置与GM后台直通

本文详细介绍了秦时明月6.2魔改版的从零到一部署指南,包括环境准备、服务端安装、安卓客户端配置以及GM后台直通等关键步骤。特别针对安卓客户端配置和GM工具使用提供了实用技巧,帮助用户快速搭建并优化游戏服务器,确保稳定运行。

weixin_42522964的博客 315

将OpenGL代码移植成OpenGL ES

首先是一些基础概念和经验分享: 1、OpenGL是一个跨平台的图形渲染标准 2、OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。 OpenG

dongtinghong的专栏 2376

重头开始学ROS(8)---LVI-SAM复现与实机部署Ubuntu20.04以及如何适配6轴imu

本文详细记录了在Ubuntu20.04环境下复现LVI-SLAM系统的过程,主要包含四个部分:源码编译、问题解决、数据录制和6轴IMU适配。在编译过程中遇到GTSAM、PCL版本、OpenCV路径等典型问题并给出解决方案;详细说明了ROS bag包的录制规范;针对6轴IMU硬件限制,提供了核心代码修改方案。文章为LVI-SLAM系统在非标准环境下的部署提供了实用参考,特别适合需要适配不同硬件配置的研究者。

qq_73991479的博客 1558

Android OpenGL ES 2.0入门实践

先上,代码效果如下图,屏幕上半部份是Java绘制的,下半部份是C++绘制的。

jjf19891208的专栏 1518

dos攻击 --hping3

dos使用hping3攻击

qq_65880213的博客 2747

光耦合MOSFET(Optocoupled MOSFET,简称OCMOS)

光耦合MOSFET(Optocoupled MOSFET,简称OCMOS)是一种将光电耦合器和MOSFET结合在一起的器件,用于实现电气隔离和信号传输。选择合适的光耦合MOSFET时,还需要考虑具体应用的需求和环境条件,以确保最佳性能和可靠性。- 最大输出电流和电压:确保所选型号能够满足电路的最大电流和电压需求。- 最大输出电流和电压:确保所选型号能够满足电路的最大电流和电压需求。- 隔离电压:根据应用环境的电气隔离要求选择合适的隔离电压。- 隔离电压:根据应用环境的电气隔离要求选择合适的隔离电压。

eydj2008的专栏 1725

WebRTC在Android平台的视频设备管理(VDM)实现与优化

视频设备管理(VDM)是实时通信系统中的核心组件,负责协调摄像头采集、视频编解码和渲染输出等关键流程。在Android平台上,VDM需要深度整合Camera API、MediaCodec和Surface图形系统,构建高效的视频处理管线。通过BufferQueue机制实现生产者-消费者模型,结合SurfaceFlinger的混合合成策略,VDM能够优化移动端视频流的处理性能。WebRTC框架中的VDM模块采用分层架构设计,支持Camera1/Camera2/CameraX多种采集方案,并实现硬件编解码与软件降

weixin_34245082的博客 312

【第24例】华为 IPD 体系 | RMT 需求管理团队

RMT需求管理团队

产品线负责人 1764

Jetson Nano 2GB视频输出优化:从OpenCV到硬件加速videoOutput实战

在嵌入式AI和边缘计算场景中,视频流的实时处理与高效输出是核心挑战。其技术原理在于利用硬件专用模块(如GPU、硬件编码器)来分担CPU负载,实现低延迟、高吞吐的数据流水线。这一技术价值对于资源受限的设备(如Jetson Nano)至关重要,能显著提升系统稳定性和能效比。应用场景广泛覆盖机器人视觉、智能安防、无人机导航等实时性要求高的领域。本文聚焦于NVIDIA Jetson平台,深入探讨如何利用其原生videoOutput工具集,替代通用的OpenCV方案,通过NvBuffer零拷贝、EGLStream渲染

weixin_29196315的博客 307

基于STM32L4XX的环境光传感器(VCNL4040M3OE)应用程序设计

• 集成模块:红外发射器(IRED)、环境光传感器(ALS)、接近传感器(PS)及信号调理IC。#define VCNL4040_I2C_ADDR (0x60 << 1) // 7位地址左移一位。// 组合成16位值。// I2C总线句柄。// 设置参数:ALS集成时间160ms,中断禁止,ALS功能开启。// 设置参数:PS工作频率80Hz,开红外二极管,PS功能开启。// 初始化I2C外设。• 输出类型:I2C总线(ALS/PS)// 2. 配置环境光传感器 (ALS) 并启动。

myron6688的博客 143

ABAP Module Pool 编程入门:把 Table Control 用透,在 Dynpro 里做出可编辑的列表界面

摘要:Table Control是SAP GUI中用于对话式事务的多行数据交互控件,具备滚动、选择、修改等功能。它通过CXTAB_CONTROL/CXTAB_COLUMN结构实现动态控制,需在PBO/PAI中配合LOOP循环处理数据流。开发时需注意LINES、TOP_LINE等关键字段设置,并采用并行循环简化编码。典型应用包括订单行维护、主数据管理等场景,支持多选删除、列排序等业务需求。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 343
上一篇: 自动清除Rational Build Forge系统消息和作业信息
下一篇: 手把手教你定制自己的RTC(二)
RationalGroup
博客等级 码龄18年 56粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值