EGL (lenguaje de programación)

De Wikipedia, la enciclopedia libre

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:

Ejemplos de código[editar]

Programa[editar]

Una 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[editar]

Una 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[editar]

Una 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[editar]

El 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[editar]

En 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[editar]

Las 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]

Referencias[editar]