EGL (lenguaje de generación empresarial), desarrollado originalmente por IBM y ahora disponible como proyecto de código abierto EDT (herramientas de desarrollo EGL) [1] bajo la licencia pública Eclipse (EPL), es una tecnología de programación diseñada para afrontar los retos de las tecnologías modernas y múltiples. -Desarrollo de aplicaciones de plataforma al proporcionar un lenguaje común y un modelo de programación en todos los lenguajes, marcos y plataformas de tiempo de ejecución.
Desarrollador | IBM |
---|---|
Licencia | Licencia pública de Eclipse |
Sitio web | www |
Descripción general
El lenguaje toma prestados conceptos familiares para cualquiera que use lenguajes de tipado estático como Java , COBOL , C , etc. Sin embargo, toma prestado el concepto de estereotipo del Lenguaje Unificado de Modelado (UML) que normalmente no se encuentra en los lenguajes de programación de tipado estático. En pocas palabras, EGL es un lenguaje de desarrollo de aplicaciones universal de alto nivel.
EGL es similar en sintaxis a otros lenguajes comunes, por lo que puede ser aprendido por desarrolladores de aplicaciones con experiencia previa en programación similar. Las abstracciones del desarrollo de aplicaciones EGL protegen a los programadores de las interfaces técnicas de los sistemas y el middleware, lo que les permite centrarse en la creación de funciones comerciales. Las aplicaciones y servicios de EGL se escriben, prueban y depuran en el nivel de fuente de EGL y, una vez que se prueban satisfactoriamente, se pueden compilar en código COBOL, Java o JavaScript para admitir la implementación de aplicaciones comerciales 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 servlet 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 System i , 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 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 al 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 se componen de un conjunto de declaraciones, variables y constantes de EGL.
Programa HelloWorldconst SALUDO cadena = " Hola , " ; función principal ()myName string = " John " ;sayHello ( myName ) ;finalfunción sayHello ( nombre String in )SysLib . writeStdOut ( SALUDO + nombre + "!" ) ;finalfinal
Registro
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.
Registro CustomerRecord tipo BasicRecord customerNumber INT ; customerName STRING ; customerAddr1 STRING ; customerAddr2 STRING ; customerAddr3 STRING ; customerBalance DINERO ; final
EGL tiene un tipo de registro especializado llamado SQLRecord que se utiliza para intercambiar datos con una base de datos relacional.
registro Tipo de empleado sqlRecord {tableNames = [["Employee"]], keyItems = [EMPNO]} EMPNUMBER string {column = "EMPNO", maxLen = 6}; FIRSTNME string {sqlVariableLen = yes, maxLen = 12}; MIDINIT string {isSqlNullable = yes, maxLen = 1}; APELLIDO string {sqlVariableLen = yes, maxLen = 15}; DEPT string {column = "WORKDEPT", isSqlNullable = yes, maxLen = 3}; PHONENO string {isSqlNullable = yes, maxLen = 4}; HIREDATE fecha {isSqlNullable = yes};final
- En este ejemplo, el registro Empleado está vinculado a una tabla (o vista) denominada Empleado .
Servicio
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.
paquete com . mycompany . servicios ;servicio EmployeeService la función getEmployees () devuelve ( Empleado []) registros Empleado [ 0 ] ; // definir una matriz de registros vacía obtener registros ; // recuperar registros de la base de datos retorno ( registros ) ; // devuelve los registros final función addEmployee ( emp Employee in ) devuelve ( boolean ) intentar agregar remp ; return ( verdadero ) ; onException ( ex AnyException ) return ( falso ) ; final finalfinal
- 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 rellenados 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 de interfaz de usuario enriquecida es una parte del controlador de interfaz de usuario enriquecida. Estas partes se generan en JavaScript.
paquete com . mycompany . ui ;import com . mycompany . servicios . Empleado ;import com . mycompany . servicios . EmployeeService ;importar dojo . widgets . DojoGrid ;importar dojo . widgets . DojoGridColumn ;controlador EmployeeView tipo RUIhandler { initialUI = [ cuadrícula ], onConstructionFunction = inicio , cssFile = "main.css" } grid DojoGrid { comportamientos = [ ], headerBehaviors = [ ], columnas = [ new DojoGridColumn { displayName = "First Name" , name = "FIRSTNAME" }, new DojoGridColumn { displayName = "Apellido" , nombre = "APELLIDO" }, new DojoGridColumn { displayName = "Salario" , nombre = "SALARIO" } ] }; función start () svc EmployeeService { }; llamar a svc . getEmployees () volviendo a displayEmployees ; final función displayEmployees ( retResult Employee [ ] en ) cuadrícula . data = retResult como cualquier [ ]; final final
Web 2.0 con EGL
En diciembre de 2008, IBM introdujo una nueva tecnología, EGL Rich UI, para simplificar la creación de aplicaciones web enriquecidas de estilo Web 2.0 . Esta tecnología simplifica el desarrollo al ocultar las complejidades de Ajax , JavaScript , REST y SOAP del desarrollador, lo que les permite centrarse en los requisitos comerciales 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 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 los lenguajes heredados de cuarta generación :
- un conjunto de herramientas de conversión disponibles dentro del producto Rational Business Developer proporciona la conversión automatizada de lenguajes IBM e Informix de cuarta generación más antiguos y estabilizados
- 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 productos CA) proporcionan la capacidad de convertir desde Software AG Natural , IBM RPG , CA Cool: Gen y CA Ideal / Datacom a EGL
Las herramientas para buscar grandes bases de códigos EGL, comparar archivos EGL individuales en busca de cambios y detectar códigos duplicados están disponibles en Semantic Designs [3]
Referencias
- ^ EDT (Herramientas de desarrollo EGL)
- ^ Eclipse
- ^ Diseños semánticos
Otras lecturas
- Enterprise Web 2.0 con EGL, ISBN 978-1-58347-091-6 .
- Desarrollo de aplicaciones Web 2.0 con EGL para IBM i, ISBN 978-1-58347-089-3 .
enlaces externos
- Sitio de la comunidad de EGL Cafe
- Página del producto IBM Rational Business Developer
- Centros de información de IBM Rational Business Developer
- Proyecto Eclipse EGL Development Tools (EDT) : una implementación abierta en Eclipse