EGL (lenguaje de programación)
EGL (Enterprise Generation Language), desarrollado originalmente por IBM y ahora disponible como EDT (EGL Development Tools).[1] El proyecto abierto bajo la Licencia Pública Eclipse (EPL) es una tecnología de programación diseñada para enfrentar los desafíos del desarrollo de aplicaciones modernas y multiplataforma al proporcionar un lenguaje y un modelo de programación comunes en todos los idiomas, marcos y plataformas de tiempo de ejecución. El lenguaje toma conceptos familiares para cualquiera que use lenguajes de tipo estático como Java, COBOL, C, etc. Sin embargo, toma el concepto de estereotipo de Lenguaje de Modelado Unificado (UML) que no se encuentra normalmente en los lenguajes de programación estáticos.
En pocas palabras, EGL es un lenguaje de desarrollo de aplicaciones universal de nivel superior.
EGL es similar en sintaxis a otros lenguajes comunes, por lo que los desarrolladores de aplicaciones pueden aprenderlo con antecedentes de programación similares. Las abstracciones de desarrollo de aplicaciones de EGL protegen a los programadores de las interfaces técnicas de los sistemas y el middleware, lo que les permite centrarse en desarrollar la funcionalidad empresarial. compilado en código COBOL, Java o Javascript para admitir la implementación de aplicaciones empresariales que pueden ejecutarse en cualquiera de los siguientes entornos:
- Plataformas con una máquina virtual Java, como Microsoft Windows, Linux, y UNIX, por ejemplo, en el contexto de un contenedor de servlets Java EE (IBM WebSphere Servidor de Aplicación, apache Tomcat, GlassFish)
- IBM System z: CICS Transacción Server, IMS, z/OS Batch, UNIX System server, WebSphere Application Server, z/VSE, Linux
- IBM System i: IBM i5/OS, IBM WebSphere Application Server, apache Tomcat,Integrated Web Application Server for i
- Navegador web compatibles con Javascript, como Internet Explorer, Firefox, y Safari, para aplicaciones web ricas en Ajax
Ejemplos de código
editarPrograma
editarUna parte del programa EGL es una parte lógica generable con un punto de entrada. Cada parte del programa contiene una función main (), que representa la lógica que se ejecuta en el inicio del programa. Un programa puede incluir otras funciones y puede acceder a funciones que están fuera del programa. La función main () puede invocar esas otras funciones. Las funciones del programa están compuestas por un conjunto de sentencias, variables y 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
Grabar
editarUna parte de registro EGL define un conjunto de elementos de datos. En este ejemplo, un registro con el nombre CustomerRecord se define con 6 campos.
Record CustomerRecord type BasicRecord
customerNumber INT;
customerName STRING;
customerAddr1 STRING;
customerAddr2 STRING;
customerAddr3 STRING;
customerBalance MONEY;
end
EGL tiene un tipo de registro especializado llamado SQLRecord que se utiliza para intercambiar datos con una base de datos relacional.
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
- En este ejemplo, el registro Empleado está vinculado a una tabla (o vista) denominada Empleado.
Servicio
editarUna parte del Servicio EGL contiene funciones públicas destinadas a ser accedidas desde otras aplicaciones o sistemas. En este ejemplo, se define un servicio con dos funciones.
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
- En EGL, el código está organizado en paquetes (como Java (lenguaje de programación))
- La primera función, getEmployees, devuelve una matriz de registros completados a partir de los registros en una base de datos.
- La segunda función, addEmployee agrega un nuevo registro a la base de datos y devuelve un verdadero o falso dependiendo de si el registro se agregó correctamente.
RUIHandler
editarEl componente principal de una aplicación de IU enriquecida es una parte del controlador de IU enriquecida. Estas partes se generan 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
Web 2.0 con EGL
editarEn diciembre de 2008, IBM introdujo una nueva tecnología, EGL Rich UI, para simplificar la creaciónAplicaciones de Internet Enriquecidas al estilo de la Web 2.0 Esta tecnología simplifica el desarrollo al ocultar al desarrollador las complejidades de Ajax, Javascript, Transferencia de Estado Representacional, y SOAP , lo que les permite centrarse en los requisitos del negocio y no en las tecnologías subdyacentes.
Productos comerciales
editarLas herramientas de programación de EGL están disponibles como un producto comercial basado en Eclipse, el Rational Business Developer y también en la edición EGL de Rational Developer for System z.[2]
EGL es un idioma de destino para la modernización de aplicaciones heredadas debido a la afinidad de la semántica del lenguaje con los lenguajes de procedimiento y el Lenguaje de programación de cuarta generación:
- Un conjunto de herramientas de conversión disponibles disponibles dentro del producto de Desarrollador Empresarial Racional proporciona la conversión automatizada de lenguajes de IBM e Informix de Lenguaje de programación de cuarta generación más antiguo y estabilizado.
- un conjunto de ofertas de servicios de IBM y productos complementarios (Rational Migration Extension for Natural, Rational Migration Extension para System i, Rational Migration Extension para CA-products) ofrece la capacidad de convertir de Software AG Natural, IBM RPG, CA Fresco:Gen y CA Ideal/Datacom a EGL
Las herramientas para buscar grandes bases de código EGL, comparar los archivos individuales de EGL para detectar cambios y detectar códigos duplicados están disponibles en Semantic Designs[3]