EGL (Enterprise Generation Language), desarrollado originalmente por IBM y ahora disponible como el proyecto de código abierto EDT (EGL Development Tools) [ 1 ] bajo la Licencia Pública de Eclipse (EPL), es una tecnología de programación diseñada para afrontar los desafíos del desarrollo de aplicaciones multiplataforma modernas al proporcionar un lenguaje y un modelo de programación comunes en diferentes lenguajes, marcos y plataformas de ejecución.
Descripción general
El lenguaje toma prestados conceptos familiares para cualquiera que utilice lenguajes de tipado estático como Java , COBOL , C , etc. Sin embargo, incorpora el concepto de estereotipo del Lenguaje Unificado de Modelado (UML), que no suele encontrarse en lenguajes de programación de tipado estático. En resumen, EGL es un lenguaje de desarrollo de aplicaciones universal de alto nivel.
EGL tiene una sintaxis similar a la de otros lenguajes comunes, por lo que puede ser aprendido por desarrolladores de aplicaciones con experiencia previa en programación similar. Las abstracciones de desarrollo de aplicaciones EGL protegen a los programadores de las interfaces técnicas de los sistemas y el middleware, permitiéndoles centrarse en la creación de funcionalidades de negocio. Las aplicaciones y los servicios EGL se escriben, prueban y depuran a nivel de código fuente EGL, y una vez que se han probado satisfactoriamente sus funcionalidades, se pueden compilar a código COBOL, Java o JavaScript para admitir la implementación de aplicaciones de negocio 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 Application Server , Apache Tomcat , GlassFish ).
- IBM System z : CICS Transaction Server , IMS , z/OS Batch, UNIX System Services , WebSphere Application Server, z/VSE , Linux
- IBM Power Systems : IBM i , IBM WebSphere Application Server, Apache Tomcat , Integrated Web Application Server para i
- Navegadores web compatibles con JavaScript, como Internet Explorer , Firefox y Safari , para aplicaciones web enriquecidas con Ajax.
Ejemplos de código
Programa
Una parte de programa EGL es una parte lógica generable con un único punto de entrada. Cada parte de programa contiene una función `main()`, que representa la lógica que se ejecuta al inicio del programa. Un programa puede incluir otras funciones y acceder a funciones externas. La función `main()` puede invocar dichas funciones. Las funciones de un programa se componen de un conjunto de sentencias, variables y constantes EGL.
Programa Hola Mundoconst GREETING string = " Hola , " ;función principal ()miNombre cadena = " John " ;decirHola ( miNombre ) ;finfunción decirHola ( cadena de nombre en )SysLib.writeStdOut ( GREETING + name + " ! " ) ;finfinRegistro
Una parte de registro EGL define un conjunto de elementos de datos. En este ejemplo, se define un registro con el nombre CustomerRecord con 6 campos.
Registro CustomerRecord tipo BasicRecord customerNumber INT ; customerName STRING ; customerAddr1 STRING ; customerAddr2 STRING ; customerAddr3 STRING ; customerBalance MONEY ; finEGL dispone de un tipo de registro especializado llamado SQLRecord que se utiliza para intercambiar datos con una base de datos relacional.
Registro Empleado tipo sqlRecord { tableNames =[["Empleado"]], keyItems =[EMPNO]} EMPNUMBER string{ column = "EMPNO", maxLen = 6}; cadena FIRSTNME{ sqlVariableLen = sí, maxLen = 12}; MIDINIT cadena{ isSqlNullable = sí, maxLen = 1}; APELLIDO cadena{ sqlVariableLen = sí, maxLen = 15}; DEPT string{ column = "WORKDEPT", isSqlNullable = yes, maxLen = 3}; PHONENO string{ isSqlNullable = yes, maxLen = 4}; FECHA DE CONTRATACIÓN { isSqlNullable = sí }; fin - En este ejemplo, el registro Empleado está vinculado a una tabla (o vista) llamada Empleado .
Servicio
Una parte de servicio EGL contiene funciones públicas a las que se puede acceder desde otras aplicaciones o sistemas. En este ejemplo, se define un servicio con dos funciones.
paquete com . miempresa . servicios ;Servicio de empleadosLa función getEmployees () devuelve ( Employee [])registros Empleado [ 0 ] ; // define un array vacío de registrosobtener registros ; // recuperar registros de la base de datosdevolver ( registros ) ; // devolver los registros finfunción addEmployee ( emp Empleado en ) devuelve ( booleano )intentaragregar remp ;devolver ( verdadero ) ;onException ( ex AnyException )devolver ( falso ) ;finfinfin- En EGL, el código se organiza en paquetes (como en Java (lenguaje de programación) ).
- La primera función, getEmployees , devuelve una matriz de registros que se obtiene a partir de los registros de una base de datos.
- La segunda función, addEmployee , agrega un nuevo registro a la base de datos y devuelve verdadero o falso dependiendo de si el registro se agregó correctamente.
RUIHandler
El componente principal de una aplicación Rich UI es un controlador Rich UI. Estos controladores se generan en JavaScript.
paquete com . mycompany . ui ;importar com.mycompany.services.Employee ;import com . mycompany . services . EmployeeService ;import dojo . widgets . DojoGrid ;import dojo . widgets . DojoGridColumn ;manejador EmployeeView tipo RUIhandler { initialUI = [ cuadrícula ],onConstructionFunction = inicio ,cssFile = "main.css" }cuadrícula DojoGrid { comportamientos = [ ], comportamientos de encabezado = [ ], columnas = [nueva DojoGridColumn { displayName = "Nombre" , name = "FIRSTNAME" },nueva DojoGridColumn { displayName = "Apellido" , name = "APELLIDO" },nueva columna de cuadrícula de Dojo { displayName = "Salario" , name = "SALARIO" }] };función inicio ()svc EmployeeService { };llamar a svc.getEmployees ( ) devolviendo a displayEmployees ;finfunción mostrarEmpleados ( retResult Empleado [ ] en )cuadrícula.datos = retResult como cualquier [ ] ;finfinWeb 2.0 con EGL
En diciembre de 2008, IBM presentó EGL Rich UI, una nueva tecnología para simplificar la creación de aplicaciones web enriquecidas al estilo Web 2.0 . Esta tecnología simplifica el desarrollo al ocultar al desarrollador las complejidades de Ajax , JavaScript , REST y SOAP , lo que le permite centrarse en los requisitos del negocio y no en las tecnologías subyacentes.
Productos comerciales
Las herramientas de programación EGL están disponibles como un producto comercial basado en Eclipse [ 2 ] , Rational Business Developer y también en la edición EGL de Rational Developer para System z .
EGL es un lenguaje objetivo para la modernización de aplicaciones heredadas debido a la afinidad semántica del lenguaje con los lenguajes procedimentales y los lenguajes heredados de cuarta generación :
- Un conjunto de herramientas de conversión disponibles en el producto Rational Business Developer automatizan la conversión desde lenguajes de cuarta generación de IBM e Informix más antiguos y estabilizados.
- Un conjunto de ofertas de servicios de IBM y productos complementarios (Rational Migration Extension para Natural, Rational Migration Extension para System i, Rational Migration Extension para productos CA) proporcionan la capacidad de convertir desde Software AG Natural , IBM RPG , CA Cool:Gen y CA Ideal/Datacom a EGL.
Semantic Designs [ 3 ] ofrece herramientas para buscar en grandes bases de código EGL, comparar archivos EGL individuales para detectar cambios y detectar código duplicado.
Referencias
Lecturas adicionales
Enlaces externos
- Sitio web de la comunidad EGL Cafe
- Página del producto IBM Rational Business Developer
- Centros de información para desarrolladores de IBM Rational Business
- Proyecto de herramientas de desarrollo Eclipse EGL (EDT) : una implementación abierta en Eclipse.
- Lenguajes de programación de cuarta generación
- Software de IBM
- Lenguajes de scripting