EGL (Enterprise Generation Language), первоначально разработанный IBM и теперь доступный как проект с открытым исходным кодом EDT (EGL Development Tools) [1] под лицензией Eclipse Public License (EPL), представляет собой технологию программирования, разработанную для решения задач современного, многоцелевого использования. -платформенная разработка приложений, обеспечивающая общий язык и модель программирования для разных языков, сред и платформ времени выполнения.
Разработчик | IBM |
---|---|
Лицензия | Общественная лицензия Eclipse |
Веб-сайт | www |
Обзор
В языке заимствованы концепции, знакомые всем, кто использует языки со статической типизацией, такие как Java , COBOL , C и т. Д. Однако он заимствует концепцию стереотипа из унифицированного языка моделирования (UML), которая обычно не встречается в языках программирования со статической типизацией. Короче говоря, EGL - это универсальный язык разработки приложений более высокого уровня.
Синтаксис EGL аналогичен синтаксису других распространенных языков, поэтому его могут изучить разработчики приложений с аналогичным предыдущим опытом программирования. Абстракции разработки приложений EGL ограждают программистов от технических интерфейсов систем и промежуточного программного обеспечения, позволяя им сосредоточиться на создании бизнес-функций. Приложения и службы EGL пишутся, тестируются и отлаживаются на уровне исходного кода EGL, и после их удовлетворительного функционального тестирования их можно скомпилировать в код COBOL, Java или JavaScript для поддержки развертывания бизнес-приложений, которые могут работать в любой из следующих сред :
- Платформы с виртуальной машиной Java , такие как Microsoft Windows , Linux и UNIX , например, в контексте контейнера сервлетов Java EE ( IBM WebSphere Application Server , Apache Tomcat , GlassFish )
- IBM System z : сервер транзакций CICS , IMS , z / OS Batch, системные службы UNIX , WebSphere Application Server, z / VSE , Linux
- IBM System i , IBM Power Systems : IBM i , IBM WebSphere Application Server, Apache Tomcat , интегрированный сервер веб-приложений для i
- Веб-браузеры, поддерживающие JavaScript, такие как Internet Explorer , Firefox и Safari , для полнофункциональных веб-приложений Ajax.
Примеры кода
Программа
Часть программы EGL - это генерируемая логическая часть с одной точкой входа. Каждая часть программы содержит функцию main (), которая представляет логику, выполняемую при запуске программы. Программа может включать в себя другие функции и может обращаться к функциям, находящимся за пределами программы. Функция main () может вызывать эти другие функции. Программные функции состоят из набора операторов EGL, переменных и констант.
Программа HelloWorldconst ПРИВЕТСТВИЕ строка = " Привет , " ; функция main ()myName string = " Джон " ;sayHello ( myName ) ;конецфункция sayHello ( имя String в )SysLib . writeStdOut ( ПРИВЕТСТВИЕ + имя + "!" ) ;конецконец
Записывать
Часть EGL Record определяет набор элементов данных. В этом примере запись с именем CustomerRecord определяется с 6 полями.
Запись типа CustomerRecord BasicRecord customerNumber INT ; customerName STRING ; customerAddr1 STRING ; customerAddr2 STRING ; customerAddr3 STRING ; customerBalance ДЕНЬГИ ; конец
EGL имеет специальный тип записи, называемый SQLRecord, который используется для обмена данными с реляционной базой данных.
запись Тип сотрудника sqlRecord {tableNames = [["Employee"]], keyItems = [EMPNO]} EMPNUMBER строка {столбец = "EMPNO", maxLen = 6}; FIRSTNME string {sqlVariableLen = yes, maxLen = 12}; MIDINIT строка {isSqlNullable = yes, maxLen = 1}; LASTNAME строка {sqlVariableLen = yes, maxLen = 15}; Строка DEPT {column = "WORKDEPT", isSqlNullable = yes, maxLen = 3}; PHONENO string {isSqlNullable = yes, maxLen = 4}; HIREDATE date {isSqlNullable = yes};конец
- В этом примере запись Employee привязана к таблице (или представлению) с именем Employee .
Услуга
Часть EGL Service содержит общедоступные функции, предназначенные для доступа из других приложений или систем. В этом примере определена служба с двумя функциями.
пакет com . моя компания . услуги ;служба EmployeeService функция getEmployees () возвращает ( Employee []) записи Employee [ 0 ] ; // определяем пустой массив записей получать записи ; // получаем записи из базы данных возврат ( записи ) ; // возвращаем записи конец функция addEmployee ( emp Employee in ) возвращает ( логическое ) пытаться добавить remp ; возврат ( истина ) ; onException ( например AnyException ) возврат ( ложь ) ; конец конецконец
- В EGL код организован в пакеты (например, Java (язык программирования) ).
- Первая функция, getEmployees , возвращает массив записей, заполненных записями в базе данных.
- Вторая функция, addEmployee, добавляет новую запись в базу данных и возвращает истину или ложь в зависимости от того, была ли запись добавлена успешно.
RUIHandler
Основным компонентом приложения Rich UI является обработчик Rich UI. Эти части генерируются в JavaScript.
пакет com . моя компания . ui ;импорт com . моя компания . услуги . Сотрудник ;импорт com . моя компания . услуги . EmployeeService ;импорт додзё . виджеты . DojoGrid ;импорт додзё . виджеты . DojoGridColumn ;обработчик EmployeeView типа RUIhandler { initialUI = [ grid ], onConstructionFunction = начало , cssFile = "main.css" } сетка DojoGrid { behavior = [ ], headerBehaviors = [ ], columns = [ новый DojoGridColumn { displayName = "First Name" , name = "FIRSTNAME" }, новый DojoGridColumn { displayName = "Last Name" , name = "LASTNAME" }, новый DojoGridColumn { displayName = "Salary" , name = "SALARY" } ] }; функция start () svc EmployeeService { }; вызовите svc . getEmployees () возвращается в displayEmployees ; конец функция displayEmployees ( retResult Employee [ ] in ) сетка . data = retResult as any [ ]; конец конец
Web 2.0 с EGL
В декабре 2008 года IBM представила новую технологию EGL Rich UI, чтобы упростить создание полнофункциональных веб-приложений в стиле Web 2.0 . Эта технология упрощает разработку, скрывая сложность Ajax , JavaScript , REST и SOAP от разработчика, что позволяет им сосредоточиться на бизнес-требованиях, а не на базовых технологиях.
Коммерческие продукты
Инструменты программирования EGL доступны в виде коммерческого продукта на основе Eclipse [2] , Rational Business Developer, а также в виде EGL-версии Rational Developer для System z .
EGL является целевым языком для модернизации устаревших приложений из-за схожести языковой семантики с процедурными языками и устаревшими языками 4-го поколения :
- набор инструментов преобразования, доступный в продукте Rational Business Developer, обеспечивает автоматическое преобразование из старых и стабильных языков IBM и Informix 4-го поколения
- набор сервисных предложений и дополнительных продуктов IBM (Rational Migration Extension для Natural, Rational Migration Extension для System i, Rational Migration Extension для продуктов CA) обеспечивает возможность преобразования из Software AG Natural , IBM RPG , CA Cool: Gen и CA Ideal / Datacom для EGL
Инструменты для поиска больших баз кода EGL, сравнения отдельных файлов EGL на предмет изменений и обнаружения дублированного кода доступны в Semantic Designs [3]
Рекомендации
- ^ EDT (Инструменты разработки EGL)
- ^ Затмение
- ^ Семантические проекты
дальнейшее чтение
- Enterprise Web 2.0 с EGL, ISBN 978-1-58347-091-6 .
- Разработка приложений Web 2.0 с EGL для IBM i, ISBN 978-1-58347-089-3 .
Внешние ссылки
- Сайт сообщества EGL Cafe
- Страница продукта IBM Rational Business Developer
- Информационные центры IBM Rational Business Developer
- Eclipse EGL Development Tools (EDT) Project - открытая реализация в Eclipse