EGL (langage)

Enterprise Generation Language
Paradigme Programmation procédurale, langage de programmation de quatrième génération
Auteur IBM
Développeur IBM
Influencé par COBOL, RPG, Informix 4GL, VisualAge
Implémentations IBM Business Developer, Eclipse EGL Development Tools
Système d'exploitation Microsoft Windows, Linux, Unix, z/OS, IBM i, z/VSE
Licence Eclipse Public License pour Eclipse EGL Development Tools
Site web www.ibm.com/products/rational-business-developer

Enterprise Generation Language, généralement abrégé EGL, est un langage de programmation et une technologie de génération d'applications métiers développés par IBM. Il est conçu pour permettre à des développeurs orientés métier d'écrire de la logique applicative dans un langage de haut niveau, puis de générer du code destiné à différentes plates-formes, notamment en Java, COBOL et JavaScript[1],[2].

EGL est principalement associé à la famille d'outils Rational Software Architect d'IBM, en particulier IBM Rational Business Developer, renommé IBM Business Developer à partir de la version 10.0[3].

Un projet libre, Eclipse EGL Development Tools (EDT), a également existé sous licence Eclipse Public License, mais il est désormais archivé par la fondation Eclipse[4],[5].

Description

EGL appartient à la famille des langages de quatrième génération utilisés dans les environnements d'entreprise. IBM le présente comme un langage permettant de se concentrer sur les problèmes métier plutôt que sur les détails des technologies d'exécution sous-jacentes. Dans l'environnement Rational Business Developer, les applications EGL ne sont généralement pas exécutées directement : le code EGL sert de source pour générer des programmes Java ou COBOL, et certains éléments d'interface peuvent être transformés en JavaScript[6].

La syntaxe du langage est volontairement proche de langages procéduraux ou fortement utilisés dans l'informatique de gestion, comme COBOL, RPG, PL/I ou Informix 4GL. Cette proximité visait notamment à faciliter la transition de développeurs travaillant sur des systèmes existants vers des architectures plus récentes, sans imposer l'apprentissage complet de Java ou de Java EE[7].

Historique

Les origines d'EGL s'inscrivent dans la continuité des outils de développement d'IBM destinés aux applications d'entreprise. Des publications spécialisées rattachent cette approche aux environnements AD/Cycle et VisualAge, qui visaient déjà à produire du code pour plusieurs plates-formes à partir d'outils de haut niveau[8].

En 2005, IBM publie un Redbook consacré à la transition d'Informix 4GL vers Rational Enterprise Generation Language. L'ouvrage décrit EGL comme un moyen de migrer des applications 4GL vers la plate-forme Rational Software Development Platform, tout en conservant une approche centrée sur les problématiques métier[9].

En 2008, IBM Rational Business Developer 7.5.1 ajoute EGL Rich UI, une technologie destinée à créer des applications Web riches. IBM indique alors que les applications Rich UI sont converties automatiquement en JavaScript[10].

En juin 2010, IBM annonce son intention d'ouvrir le langage EGL, son compilateur, ses générateurs Java et JavaScript ainsi que ses outils au sein d'un projet Eclipse. Selon InfoWorld, cette décision avait pour but d'élargir l'adoption du langage et de permettre à d'autres acteurs d'étendre la technologie[11]. Le projet Eclipse EGL Development Tools fournissait des éditeurs, assistants, constructeurs, un parseur, un compilateur et des générateurs EGL pour l'environnement Eclipse. Le projet EDT est toutefois listé parmi les projets Eclipse archivés, avec une archive datée de janvier 2013.

À partir de la version 10.0, Rational Business Developer est renommé IBM Business Developer. IBM indique que ce changement de nom s'applique aux versions 10.0 et ultérieures, les versions précédentes conservant le nom Rational Business Developer.

Fonctionnement

Un programme EGL est écrit, testé et débogué au niveau du code source EGL. Une fois le développement terminé, les outils de génération produisent du code pour la plate-forme cible. Selon les options et les environnements utilisés, EGL peut générer du code Java, COBOL ou JavaScript. Les applications EGL peuvent cibler différents types d'environnements :

  • des plates-formes disposant d'une machine virtuelle Java, telles que Windows, Linux ou Unix ;
  • des environnements Java EE ou Jakarta EE, notamment avec WebSphere Application Server, WebSphere Liberty ou Apache Tomcat ;
  • des environnements mainframe IBM, comme z/OS, CICS, IMS ou z/VSE ;
  • des systèmes IBM i ;
  • des applications Web riches générées en JavaScript.

IBM décrit également EGL comme compatible avec une approche orientée services. Les applications peuvent exposer ou consommer des services, accéder à des bases de données relationnelles, ou être organisées en architecture multi-tiers séparant client, serveur et services externes.

Concepts du langage

Le code EGL est organisé en éléments appelés parts. Parmi les plus courants figurent :

  • les Program parts, qui définissent des programmes exécutables avec un point d'entrée;
  • les Record parts, qui décrivent des structures de données;
  • les SQLRecord parts, utilisés pour représenter des enregistrements liés à des tables ou vues SQL;
  • les Service parts, qui regroupent des fonctions exposées à d'autres applications;
  • les Handler parts et RUIHandler parts, utilisés dans les interfaces Web riches.

EGL utilise une organisation par paquets similaire à celle de Java. Le langage fournit également des constructions destinées à masquer certaines opérations techniques répétitives, comme l'accès aux bases de données ou la création de services[12].

Exemple

Exemple minimal d'un programme EGL affichant un message :

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

Utilisation dans la modernisation d'applications

EGL a été utilisé comme langage cible ou intermédiaire dans des projets de modernisation d'applications existantes. IBM a notamment documenté la migration d'applications Informix 4GL vers EGL, en expliquant que les développeurs pouvaient écrire et déboguer en EGL tout en laissant les outils générer le code Java correspondant.

Cette orientation s'explique par la présence durable de langages comme COBOL, RPG, Natural ou Informix 4GL dans les systèmes d'information d'entreprise. EGL a été positionné par IBM comme une passerelle entre ces compétences procédurales et des environnements plus récents, comme Java, les applications Web, les architectures orientées services ou les plates-formes IBM i et IBM Z.

Outils

IBM Rational Business Developer et IBM Business Developer

IBM Rational Business Developer est l'environnement de développement commercial historiquement associé à EGL. Il fournit un environnement basé sur Eclipse permettant de créer, tester et déboguer des applications EGL, puis de générer du code Java, JavaScript ou COBOL.

Le produit inclut également des outils de création d'interfaces riches, de services et d'applications multi-plateformes. Dans sa version 10.0, renommée IBM Business Developer, IBM ajoute notamment des fonctionnalités liées au développement assisté, à la conteneurisation d'applications EGL Rich UI et au support de Jakarta EE.

Eclipse EGL Development Tools

Eclipse EGL Development Tools, ou EDT, était une implémentation libre d'outils de développement EGL. Le projet comprenait des composants pour l'environnement Eclipse, ainsi qu'un parseur, un compilateur et des générateurs utilisables depuis l'interface graphique ou en ligne de commande. Sa licence était l'Eclipse Public License 1.0.

Le site historique du projet renvoie désormais vers la page des projets archivés de la fondation Eclipse, où EDT est listé avec une archive de janvier 2013.

Positionnement et limites

EGL occupe une place particulière parmi les langages de programmation : il n'est pas conçu comme un langage généraliste indépendant, mais comme une technologie de génération et de modernisation d'applications d'entreprise. Son intérêt principal réside dans l'abstraction des environnements d'exécution et dans la possibilité de générer du code pour plusieurs cibles à partir d'une même base source.

Cette approche peut faciliter la migration de certaines applications existantes, mais elle implique aussi une dépendance forte à l'écosystème d'outils IBM ou aux générateurs disponibles. De plus, la partie libre Eclipse EDT étant archivée, l'écosystème actif d'EGL repose principalement sur les produits commerciaux et la documentation maintenus par IBM.

Bibliographie

Notes et références

  1. (en) « Overview of EGL », sur IBM Documentation (consulté le )
  2. (en) « Rational Business Developer », sur IBM (consulté le )
  3. (en) « What's new in IBM Business Developer V10 », sur IBM Documentation (consulté le )
  4. (en) « EGL Development Tools », sur Eclipse Projects (consulté le )
  5. (en) « Archived Eclipse Projects », sur Eclipse Foundation (consulté le )
  6. (en) « Developing EGL applications », sur IBM Documentation (consulté le )
  7. (en) « IBM Rational Enterprise Generation Language », sur IBM (consulté le )
  8. (en) Timothy Prickett Morgan, « EGL: The Future of Programming for the System i? », IT Jungle,‎ (lire en ligne, consulté le )
  9. (en) « Transitioning: Informix 4GL to Enterprise Generation Language (EGL) », sur IBM Redbooks, (consulté le )
  10. (en) « Rational Business Developer, Version 7.5.1 », sur IBM Support (consulté le )
  11. (en) Paul Krill, « IBM EGL business language moves to open source », InfoWorld,‎ (lire en ligne, consulté le )
  12. (en) « EGL Programmer's Guide », sur IBM Documentation (consulté le )
  13. (en) « IBM Rational Business Developer with EGL », sur Independent Publishers Group (consulté le )

Voir aussi

Liens externes

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.