EGL (programming language)

Last updated
EGL
(Enterprise Generation Language)
Developer IBM
License Eclipse Public License
Website www.eclipse.org/edt/

EGL (Enterprise Generation Language), originally developed by IBM and now available as the EDT (EGL Development Tools) [1] open source project under the Eclipse Public License (EPL), is a programming technology designed to meet the challenges of modern, multi-platform application development by providing a common language and programming model across languages, frameworks, and runtime platforms.

Contents

Overview

The language borrows concepts familiar to anyone using statically typed languages like Java, COBOL, C, etc. However, it borrows the concept of stereotype from Unified Modeling Language (UML) that is not typically found in statically typed programming languages. In a nutshell, EGL is a higher-level, universal application development language.

EGL is similar in syntax to other common languages so it can be learned by application developers with similar previous programming background. EGL application development abstractions shield programmers from the technical interfaces of systems and middleware allowing them to focus on building business functionality. EGL applications and services are written, tested and debugged at the EGL source level, and once they are satisfactorily functionally tested they can be compiled into COBOL, Java, or JavaScript code to support deployment of business applications that can run in any of the following environments:

Code examples

Program

An EGL Program part is a generatable logic part with one entry point. Each Program part contains a main() function, which represents the logic that runs at program start up. A program can include other functions and can access functions that are outside of the program. The function main() can invoke those other functions. Program functions are composed of a set of EGL statements, variables, and constants.

ProgramHelloWorldconstGREETINGstring="Hello,";functionmain()myNamestring="John";sayHello(myName);endfunctionsayHello(nameStringin)SysLib.writeStdOut(GREETING+name+"!");endend

Record

An EGL Record part defines a set of data elements. In this example, a record with the name CustomerRecord is defined with 6 fields.

RecordCustomerRecordtypeBasicRecordcustomerNumberINT;customerNameSTRING;customerAddr1STRING;customerAddr2STRING;customerAddr3STRING;customerBalanceMONEY;end

EGL has a specialized type of record called SQLRecord that is used to exchange data with a relational database.

record Employee type sqlRecord { tableNames =[["Employee"]], keyItems =[EMPNO]}     EMPNUMBER string{ column = "EMPNO", maxLen = 6};     FIRSTNME string{ sqlVariableLen = yes, maxLen = 12};     MIDINIT string{ isSqlNullable = yes, maxLen = 1};     LASTNAME string{ sqlVariableLen = yes, maxLen = 15};     DEPT string{ column = "WORKDEPT", isSqlNullable = yes, maxLen = 3};     PHONENO string{ isSqlNullable = yes, maxLen = 4};     HIREDATE date{ isSqlNullable = yes}; end 

Service

An EGL Service part contains public functions meant to be accessed from other applications or systems. In this example, a service with two functions is defined.

packagecom.mycompany.services;serviceEmployeeServicefunctiongetEmployees()returns(Employee[])recordsEmployee[0];// define an empty array of recordsgetrecords;// retrieve records from the databasereturn(records);// return the records       endfunctionaddEmployee(empEmployeein)returns(boolean)tryaddremp;return(true);onException(exAnyException)return(false);endendend

RUIHandler

The main component of a Rich UI application is a Rich UI handler part. These parts are generated into JavaScript.

packagecom.mycompany.ui;importcom.mycompany.services.Employee;importcom.mycompany.services.EmployeeService;importdojo.widgets.DojoGrid;importdojo.widgets.DojoGridColumn;handlerEmployeeViewtypeRUIhandler{initialUI=[grid],onConstructionFunction=start,cssFile="main.css"}gridDojoGrid{behaviors=[],headerBehaviors=[],columns=[newDojoGridColumn{displayName="First Name",name="FIRSTNAME"},newDojoGridColumn{displayName="Last Name",name="LASTNAME"},newDojoGridColumn{displayName="Salary",name="SALARY"}]};functionstart()svcEmployeeService{};callsvc.getEmployees()returningtodisplayEmployees;endfunctiondisplayEmployees(retResultEmployee[]in)grid.data=retResultasany[];endend

Web 2.0 with EGL

In December 2008, IBM introduced new technology, EGL Rich UI, to simplify the creation of Web 2.0-style rich web applications. This technology simplifies development by hiding the complexities of Ajax, JavaScript, REST, and SOAP from the developer, which enables them to focus on the business requirement and not on the underlying technologies.

Commercial products

EGL programming tools are available as an Eclipse-based [2] commercial product, the Rational Business Developer and also in the EGL edition of Rational Developer for System z.

EGL is a target language for modernization of legacy applications because of the language semantics affinity with procedural languages and legacy 4th generation languages:

Tools for searching large EGL code bases, comparing individual EGL files for changes, and detecting duplicated code are available from Semantic Designs [3]

Related Research Articles

Structured Query Language (SQL) is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS). It is particularly useful in handling structured data, i.e., data incorporating relations among entities and variables.

<span class="mw-page-title-main">Jakarta EE</span> Set of specifications extending Java SE

Jakarta EE, formerly Java Platform, Enterprise Edition and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web services. Jakarta EE applications are run on reference runtimes, which can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components they are deploying.

<span class="mw-page-title-main">HCL Notes</span> Collaborative software platform

HCL Notes is a proprietary collaborative software platform for Unix, Windows, Linux and macOS, sold by HCLTech. The client application is called Notes while the server component is branded HCL Domino.

<span class="mw-page-title-main">Object–relational database</span> Database management system

An object–relational database (ORD), or object–relational database management system (ORDBMS), is a database management system (DBMS) similar to a relational database, but with an object-oriented database model: objects, classes and inheritance are directly supported in database schemas and in the query language. In addition, just as with pure relational systems, it supports extension of the data model with custom data types and methods.

ABAP is a high-level programming language created by the German software company SAP SE. It is currently positioned, alongside Java, as the language for programming the SAP NetWeaver Application Server, which is part of the SAP NetWeaver platform for building business applications.

Adabas, a contraction of “adaptable database system," is a database package that was developed by Software AG to run on IBM mainframes. It was launched in 1971 as a non-relational database. As of 2019, Adabas is marketed for use on a wider range of platforms, including Linux, Unix, and Windows.

RPG is a high-level programming language for business applications, introduced in 1959 for the IBM 1401. It is most well known as the primary programming language of IBM's midrange computer product line, including the IBM i operating system. RPG has traditionally featured a number of distinctive concepts, such as the program cycle, and the column-oriented syntax. The most recent version is RPG IV, which includes a number of modernization features, including free-form syntax.

WebSphere Application Server Community Edition (WASCE) was a free-of-charge, certified Java EE 6 application server for building and managing Java applications. Until September 30, 2016, it was IBM's supported distribution of Apache Geronimo that usee Tomcat for servlet container and Axis 2 for web services. Another difference from Apache Geronimo is that WASCE came with Db2 and Informix database drivers, better XML parser libraries and contained the latest patches from unreleased upstream versions. Over 30 WASCE developers were committers in the Apache Geronimo project.

Jakarta Persistence is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.

Servoy is a development and deployment platform for enterprise applications, written itself in Java, and which uses JavaScript as its scripting language. It can adopt the native look and feel of any platform or the web, using HTML5 and CSS code. Servoy was created from the start to make enterprise business application development easy. It has introduced many innovations for that purpose: the use of JavaScript instead of Java, a comprehensive development framework with building blocks that are added through drag and drop, a web client, etc.

<span class="mw-page-title-main">Rational Software Modeler</span> Unified Modeling Language design tool

Rational Software Modeler (RSM), made by IBM's Rational Software division, is a Unified Modeling Language (UML) 2.0-based visual modeling and design tool. Rational Software Modeler is based on the Eclipse open-source software framework and is used for visual modeling and model-driven development (MDD) with UML for creating applications and web services. IBM ceased marketing Rational Software Modeler in 2010 and ended support for it in 2015. Much of the same functionality is now available through Rational Software Architect.

<span class="mw-page-title-main">WaveMaker</span> Low-code programming platform

WaveMaker is an enterprise-grade Java low-code development platform for building software applications and platforms. WaveMaker Inc. is headquartered in Mountain View, California. For enterprises, WaveMaker is a low-code platform that aims to accelerate their app development and IT modernization efforts. For ISVs, it is a consumable low-code component that can sit inside their product and offer customizations.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">Db4o</span>

db4o was an embeddable open-source object database for Java and .NET developers. It was developed, commercially licensed and supported by Actian. In October 2014, Actian declined to continue to actively pursue and promote the commercial db4o product offering for new customers.

XPages is an IBM implementation of JavaServer Faces with a server side JavaScript runtime and the built-in NoSQL database IBM Domino. It allows data from IBM Notes and Relational Databases to be displayed to browser clients on all platforms.

PL/SQL is Oracle Corporation's procedural extension for SQL and the Oracle relational database. PL/SQL is available in Oracle Database, Times Ten in-memory database, and IBM Db2. Oracle Corporation usually extends PL/SQL functionality with each successive release of the Oracle Database.

Rocket U2 is a suite of database management (DBMS) and supporting software now owned by Rocket Software. It includes two MultiValue database platforms: UniData and UniVerse. Both of these products are operating environments which run on current Unix, Linux and Windows operating systems. They are both derivatives of the Pick operating system. The family also includes developer and web-enabling technologies including SB/XA, U2 Web Development Environment (WebDE), UniObjects connectivity API and wIntegrate terminal emulation software.

Oracle TopLink is a mapping and persistence framework for Java developers. TopLink is produced by Oracle and is a part of Oracle's OracleAS, WebLogic, and OC4J servers. It is an object-persistence and object-transformation framework. TopLink provides development tools and run-time functionalities that ease the development process and help increase functionality. Persistent object-oriented data is stored in relational databases which helps build high-performance applications. Storing data in either XML or relational databases is made possible by transforming it from object-oriented data.

References

Further reading