EGL (Enterprise Generation Language) foi desenvolvida orixinalmente por IBM e agora está dispoñible como EDT (EGL Development Tools).[1]
O proxecto aberto baixo a Licenza Pública Eclipse (EPL) é unha tecnoloxía de programación deseñada para enfrontar os desafíos do desenvolvemento de aplicacións modernas e multiplataforma ao proporcionar unha linguaxe e un modelo de programación comúns en todos os idiomas, marcos e plataformas de tempo de execución. A linguaxe toma conceptos familiares para calquera que use linguaxes de tipo estático como Java, COBOL, C etc. Con todo, toma o concepto de estereotipo de Linguaxe de Modelaxe Unificada (UML) que non se atopa normalmente nas linguaxes de programación estáticas.
En poucas palabras, EGL é unha linguaxe de desenvolvemento de aplicacións universal de nivel superior.
EGL é similar en sintaxe a outras linguaxes comúns, polo que os desenvolvedores de aplicacións poden aprendela con antecedentes previos de programación similares. As abstraccións de desenvolvemento de aplicacións de EGL protexen os programadores das interfaces técnicas dos sistemas e o middleware, o que lles permite centrarse en desenvolveren a funcionalidade empresarial, compilada en código COBOL, Java ou Javascript para admitir a implementación de aplicacións empresariais que poden executarse en calquera das seguintes contornas:
Unha parte do programa EGL é unha parte lóxica xerable cun punto de entrada. Cada parte do programa contén unha función main (), que representa a lóxica que se executa no inicio do programa. Un programa pode incluír outras funcións e pode acceder a funcións que están fóra do programa. A función main () pode invocar esas outras funcións. As funcións do programa están compostas por un conxunto de sentenzas, variables e constantes de EGL.
Program HelloWorld const GREETING string = "Hello, "; function main() myName string = "John"; sayHello(myName); end function sayHello(name String in) SysLib.writeStdOut(GREETING + name + "!"); end end
Unha parte de rexistro EGL define un conxunto de elementos de datos. Neste exemplo, un rexistro co nome CustomerRecord defínese con 6 campos.
Record CustomerRecord type BasicRecord customerNumber INT; customerName STRING; customerAddr1 STRING; customerAddr2 STRING; customerAddr3 STRING; customerBalance MONEY; end EGL ten un tipo de rexistro especializado chamado SQLRecord que se utiliza para intercambiar datos cunha base de datos relacional.<syntaxhighlight lang="text"> 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
Unha parte do Servizo EGL contén funcións públicas destinadas a seren accedidas desde outras aplicacións ou sistemas. Neste exemplo, defínese un servizo con dúas funcións.
package com.mycompany.services; service EmployeeService function getEmployees() returns(Employee[]) records Employee[0]; // define an empty array of records get records; // retrieve records from the database return (records); // return the records end function addEmployee(emp Employee in) returns (boolean) try add remp; return (true); onException (ex AnyException) return (false); end end end
O compoñente principal dunha aplicación de EU enriquecida é unha parte do controlador de EU enriquecida. Estas partes xéranse en JavaScript.
package com.mycompany.ui; import com.mycompany.services.Employee; import com.mycompany.services.EmployeeService; import dojo.widgets.DojoGrid; import dojo.widgets.DojoGridColumn; handler EmployeeView type RUIhandler { initialUI = [ grid ], onConstructionFunction = start, cssFile = "main.css" } grid DojoGrid { behaviors = [ ], headerBehaviors = [ ], columns = [ new DojoGridColumn { displayName = "First Name", name = "FIRSTNAME" }, new DojoGridColumn { displayName = "Last Name", name = "LASTNAME" }, new DojoGridColumn { displayName = "Salary", name = "SALARY" } ] }; function start() svc EmployeeService { }; call svc.getEmployees () returning to displayEmployees; end function displayEmployees(retResult Employee [ ] in) grid.data = retResult as any [ ]; end end
En decembro de 2008, IBM introduciu unha nova tecnoloxía, EGL Rich UI, para simplificar a creación Aplicacións de Internet Enriquecidas ao estilo da Web 2.0 Esta tecnoloxía simplifica o desenvolvemento ao ocultar ao desenvolvedor as complexidades de Ajax, Javascript, Transferencia de Estado Representacional, e SOAP , o que lles permite centrarse nos requisitos do negocio e non nas tecnoloxías subxacentes.
As ferramentas de programación de EGL están dispoñibles como un produto comercial baseado en Eclipse, o Rational Business Developer e tamén na edición EGL de Rational Developer for System z.[2]
EGL é un idioma de destino para a modernización de aplicacións herdadas debido á afinidade da semántica da linguaxe coas linguaxes de procedemento e a Linguaxe de programación de cuarta xeración:
As ferramentas para buscar grandes bases de código EGL, comparar os arquivos individuais de EGL para detectar cambios e detectar códigos duplicados están dispoñibles en Semantic Designs[3]