EGL(プログラミング言語)
コンテンツへジャンプコンテンツ
| EGL (エンタープライズ生成言語) | |
|---|---|
| 開発者 | IBM |
| ライセンス | Eclipseパブリックライセンス |
| Webサイト | www.eclipse.org/edt/ |
EGL(エンタープライズ生成言語)は、もともとIBMによって開発され、現在はEclipse Public License (EPL)の下でEDT(EGL開発ツール) [ 1 ] オープンソースプロジェクトとして利用可能であり、言語、フレームワーク、ランタイムプラットフォーム間で共通の言語とプログラミングモデルを提供することで、現代のマルチプラットフォームアプリケーション開発の課題に対応するように設計されたプログラミング技術です。
概要
[編集]この言語は、 Java、COBOL、Cなどの静的型付け言語を使用する人にとって馴染みのある概念を借用しています。ただし、静的型付けプログラミング言語では通常見られない、統一モデリング言語(UML)のステレオタイプの概念を借用しています。簡単に言えば、EGLは高水準の汎用アプリケーション開発言語です。
EGLは他の一般的な言語と構文が類似しているため、同様のプログラミング経験を持つアプリケーション開発者であれば習得可能です。EGLアプリケーション開発の抽象化により、プログラマーはシステムやミドルウェアの技術インターフェースから解放され、ビジネス機能の構築に集中できます。EGLアプリケーションとサービスは、EGLソースレベルで記述、テスト、デバッグされ、十分な機能テストが完了すると、COBOL、Java、またはJavaScriptコードにコンパイルされ、以下の環境で実行可能なビジネスアプリケーションの展開をサポートします。
- Java EE サーブレット コンテナのコンテキスト ( IBM WebSphere Application Server、Apache Tomcat、GlassFish )など、 Microsoft Windows、Linux、UNIXなどのJava 仮想マシンを備えたプラットフォーム
- IBM System z : CICS トランザクション サーバー、IMS、z/OSバッチ、UNIX システム サービス、WebSphere Application Server、z/VSE、Linux
- IBM Power Systems : IBM i、IBM WebSphere Application Server、Apache Tomcat、i 向け統合 Web アプリケーション サーバー
- Ajaxリッチ Web アプリケーション用のJavaScript をサポートするWeb ブラウザ( Internet Explorer、Firefox、Safariなど)
コード例
[編集]プログラム
[編集]EGLプログラムパーツは、1つのエントリーポイントを持つ生成可能なロジックパーツです。各プログラムパーツには、プログラム起動時に実行されるロジックを表すmain()関数が含まれています。プログラムは他の関数を組み込んだり、プログラム外部の関数にアクセスしたりできます。関数main()は、これらの他の関数を呼び出すことができます。プログラム関数は、EGL文、変数、および定数のセットで構成されます。
HelloWorldプログラム const GREETING文字列= "こんにちは、" ; 関数main () myName 文字列= " John " ; sayHello (私の名前) ;終わり関数sayHello ( name String in ) SysLib.writeStdOut ( GREETING +名前+ " ! " ) ; 終わり終わり記録
[編集]EGLレコードパーツは、データ要素のセットを定義します。この例では、CustomerRecordという名前のレコードが6つのフィールドで定義されています。
レコードCustomerRecordタイプBasicRecord customerNumber INT ; customerName STRING ; customerAddr1 STRING ; customerAddr2 STRING ; customerAddr3 STRING ; customerBalance MONEY ; end EGL には、リレーショナル データベースとデータを交換するために使用される、 SQLRecordと呼ばれる特殊なタイプのレコードがあります。
レコード従業員タイプ sqlRecord { tableNames =[["Employee"]], keyItems =[EMPNO]} EMPNUMBER 文字列{列 = "EMPNO", maxLen = 6}; FIRSTNME 文字列{sqlVariableLen = yes、maxLen = 12}; MIDINIT 文字列{isSqlNullable = yes、maxLen = 1}; LASTNAME 文字列{sqlVariableLen = yes、maxLen = 15}; DEPT 文字列{列 = "WORKDEPT", isSqlNullable = yes, maxLen = 3}; PHONENO 文字列{isSqlNullable = yes、maxLen = 4}; 採用日{isSqlNullable = yes};終わり- この例では、レコードEmployee はEmployeeという名前のテーブル (またはビュー) にバインドされます。
サービス
[編集]EGLサービスパーツには、他のアプリケーションやシステムからアクセスすることを目的としたパブリック関数が含まれています。この例では、2つの関数を持つサービスが定義されています。
パッケージcom . mycompany . services ; サービス従業員サービス 関数getEmployees ()は( Employee [])を返します。 records Employee [ 0 ] ; // 空のレコード配列を定義する レコードを取得; // データベースからレコードを取得する return ( records ) ; // レコードを返す 終わり 関数addEmployee ( emp Employee in )は( boolean )を返します 試す rempを追加します。 戻り値( true ) ; onException (例: AnyException ) 戻り値( false ) ; 終わり 終わり終わり- EGLでは、コードはパッケージに編成されます(Java(プログラミング言語)のように)
- 最初の関数getEmployees は、データベース内のレコードから生成されたレコードの配列を返します。
- 2 番目の関数addEmployee は、データベースに新しいレコードを追加し、レコードが正常に追加されたかどうかに応じて true または false を返します。
RUIハンドラー
[編集]リッチUIアプリケーションの主要コンポーネントは、リッチUIハンドラー部分です。これらの部分はJavaScriptで生成されます。
パッケージcom . mycompany . ui ; com . mycompany . services . Employeeをインポートします。 com.mycompany.services.EmployeeServiceをインポートします。 dojo.widgets.DojoGridをインポートします。 dojo.widgets.DojoGridColumnをインポートします。 ハンドラーEmployeeView型RUIhandler { initialUI = [ grid ], onConstructionFunction =開始、 cssファイル= "main.css" } グリッドDojoGrid {動作= [ ],ヘッダー動作= [ ],列= [ 新しいDojoGridColumn { displayName = "名" 、name = "FIRSTNAME" }, 新しいDojoGridColumn { displayName = "姓" 、name = "LASTNAME" }, 新しいDojoGridColumn { displayName = "給与" 、name = "給与" } ] }; 関数開始() svc従業員サービス{ }; svc.getEmployees ()を呼び出し、displayEmployeesに戻ります。 終わり 関数displayEmployees ( retResult Employee [ ] in ) グリッド.data = retResult をany [ ]として返します。 終わり 終わりEGLを使用したWeb 2.0
[編集]2008年12月、IBMはWeb 2.0スタイルのリッチWebアプリケーションの作成を簡素化する新しいテクノロジー、EGL Rich UIを発表しました。このテクノロジーは、 Ajax、JavaScript、REST、SOAPの複雑さを開発者から隠蔽することで開発を簡素化し、開発者が基盤となるテクノロジーではなくビジネス要件に集中できるようにします。
市販製品
[編集]EGLプログラミングツールはEclipseベース[ 2 ]の商用製品であるRational Business Developerとして提供されており、またRational Developer for System zのEGLエディションとしても提供されています。
EGL は、手続き型言語や従来の第 4 世代言語との言語セマンティクスの親和性により、レガシー アプリケーションの最新化のターゲット言語です。
- Rational Business Developer製品内で利用可能な一連の変換ツールは、古い安定したIBMおよびInformix 第4世代言語からの変換を自動化します。
- IBM のサービス オファリングと補完製品 (Rational Migration Extension for Natural、Rational Migration Extension for System i、Rational Migration Extension for CA 製品) のセットは、Software AG Natural、IBM RPG、CA Cool:Gen、および CA Ideal/Datacom から EGL に変換する機能を提供します。
大規模なEGLコードベースを検索し、個々のEGLファイルの変更を比較し、重複したコードを検出するツールは、Semantic Designs [ 3 ]から入手可能である。
参考文献
[編集]- ^ EDT (EGL開発ツール)
- ^ エクリプス
- ^ 「セマンティックデザイン」 。 2011年7月16日時点のオリジナルよりアーカイブ。2010年8月13日閲覧。
さらに読む
[編集]- EGL、 ISBNを使用したエンタープライズWeb 2.0 978-1-58347-091-6。
- EGL for IBM i を使用した Web 2.0 アプリケーションの開発、ISBN 978-1-58347-089-3。
外部リンク
[編集]| EGL (エンタープライズ生成言語) | |
|---|---|
| 開発者 | IBM |
| ライセンス | Eclipseパブリックライセンス |
| Webサイト | www.eclipse.org/edt/ |
EGL(エンタープライズ生成言語)は、もともとIBMによって開発され、現在はEclipse Public License (EPL)の下でEDT(EGL開発ツール) [1] オープンソースプロジェクトとして利用可能であり、言語、フレームワーク、ランタイムプラットフォーム間で共通の言語とプログラミングモデルを提供することで、現代のマルチプラットフォームアプリケーション開発の課題に対応するように設計されたプログラミング技術です。
概要
この言語は、 Java、COBOL、Cなどの静的型付け言語を使用する人にとって馴染みのある概念を借用しています。ただし、静的型付けプログラミング言語では通常見られない、統一モデリング言語(UML)のステレオタイプの概念を借用しています。簡単に言えば、EGLは高水準の汎用アプリケーション開発言語です。
EGLは他の一般的な言語と構文が類似しているため、同様のプログラミング経験を持つアプリケーション開発者であれば習得可能です。EGLアプリケーション開発の抽象化により、プログラマーはシステムやミドルウェアの技術インターフェースから解放され、ビジネス機能の構築に集中できます。EGLアプリケーションとサービスは、EGLソースレベルで記述、テスト、デバッグされ、十分な機能テストが完了すると、COBOL、Java、またはJavaScriptコードにコンパイルされ、以下の環境で実行可能なビジネスアプリケーションの展開をサポートします。
- Java EE サーブレット コンテナのコンテキスト ( IBM WebSphere Application Server、Apache Tomcat、GlassFish )など、 Microsoft Windows、Linux、UNIXなどのJava 仮想マシンを備えたプラットフォーム
- IBM System z : CICS トランザクション サーバー、IMS、z/OSバッチ、UNIX システム サービス、WebSphere Application Server、z/VSE、Linux
- IBM Power Systems : IBM i、IBM WebSphere Application Server、Apache Tomcat、i 向け統合 Web アプリケーション サーバー
- Ajaxリッチ Web アプリケーション用のJavaScript をサポートするWeb ブラウザ( Internet Explorer、Firefox、Safariなど)
コード例
プログラム
EGLプログラムパーツは、1つのエントリーポイントを持つ生成可能なロジックパーツです。各プログラムパーツには、プログラム起動時に実行されるロジックを表すmain()関数が含まれています。プログラムは他の関数を組み込んだり、プログラム外部の関数にアクセスしたりできます。関数main()は、これらの他の関数を呼び出すことができます。プログラム関数は、EGL文、変数、および定数のセットで構成されます。
HelloWorldプログラム const GREETING文字列= "こんにちは、" ; 関数main () myName 文字列= " John " ; sayHello (私の名前) ;終わり関数sayHello ( name String in ) SysLib.writeStdOut ( GREETING +名前+ " ! " ) ; 終わり終わり記録
EGLレコードパーツは、データ要素のセットを定義します。この例では、CustomerRecordという名前のレコードが6つのフィールドで定義されています。
レコードCustomerRecordタイプBasicRecord customerNumber INT ; customerName STRING ; customerAddr1 STRING ; customerAddr2 STRING ; customerAddr3 STRING ; customerBalance MONEY ; end EGL には、リレーショナル データベースとデータを交換するために使用される、 SQLRecordと呼ばれる特殊なタイプのレコードがあります。
レコード従業員タイプ sqlRecord { tableNames =[["Employee"]], keyItems =[EMPNO]} EMPNUMBER 文字列{列 = "EMPNO", maxLen = 6}; FIRSTNME 文字列{sqlVariableLen = yes、maxLen = 12}; MIDINIT 文字列{isSqlNullable = yes、maxLen = 1}; LASTNAME 文字列{sqlVariableLen = yes、maxLen = 15}; DEPT 文字列{列 = "WORKDEPT", isSqlNullable = yes, maxLen = 3}; PHONENO 文字列{isSqlNullable = yes、maxLen = 4}; 採用日{isSqlNullable = yes};終わり- この例では、レコードEmployee はEmployeeという名前のテーブル (またはビュー) にバインドされます。
サービス
EGLサービスパーツには、他のアプリケーションやシステムからアクセスすることを目的としたパブリック関数が含まれています。この例では、2つの関数を持つサービスが定義されています。
パッケージcom . mycompany . services ; サービス従業員サービス 関数getEmployees ()は( Employee [])を返します。 records Employee [ 0 ] ; // 空のレコード配列を定義する レコードを取得; // データベースからレコードを取得する return ( records ) ; // レコードを返す 終わり 関数addEmployee ( emp Employee in )は( boolean )を返します 試す rempを追加します。 戻り値( true ) ; onException (例: AnyException ) 戻り値( false ) ; 終わり 終わり終わり- EGLでは、コードはパッケージに編成されます(Java(プログラミング言語)のように)
- 最初の関数getEmployees は、データベース内のレコードから生成されたレコードの配列を返します。
- 2 番目の関数addEmployee は、データベースに新しいレコードを追加し、レコードが正常に追加されたかどうかに応じて true または false を返します。
RUIハンドラー
リッチUIアプリケーションの主要コンポーネントは、リッチUIハンドラー部分です。これらの部分はJavaScriptで生成されます。
パッケージcom . mycompany . ui ; com . mycompany . services . Employeeをインポートします。 com.mycompany.services.EmployeeServiceをインポートします。 dojo.widgets.DojoGridをインポートします。 dojo.widgets.DojoGridColumnをインポートします。 ハンドラーEmployeeView型RUIhandler { initialUI = [ grid ], onConstructionFunction =開始、 cssファイル= "main.css" } グリッドDojoGrid {動作= [ ],ヘッダー動作= [ ],列= [ 新しいDojoGridColumn { displayName = "名" 、name = "FIRSTNAME" }, 新しいDojoGridColumn { displayName = "姓" 、name = "LASTNAME" }, 新しいDojoGridColumn { displayName = "給与" 、name = "給与" } ] }; 関数開始() svc従業員サービス{ }; svc.getEmployees ()を呼び出し、displayEmployeesに戻ります。 終わり 関数displayEmployees ( retResult Employee [ ] in ) グリッド.data = retResult をany [ ]として返します。 終わり 終わりEGLを使用したWeb 2.0
2008年12月、IBMはWeb 2.0スタイルのリッチWebアプリケーションの作成を簡素化する新しいテクノロジー、EGL Rich UIを発表しました。このテクノロジーは、 Ajax、JavaScript、REST、SOAPの複雑さを開発者から隠蔽することで開発を簡素化し、開発者が基盤となるテクノロジーではなくビジネス要件に集中できるようにします。
市販製品
EGLプログラミングツールは、Eclipseベース[2]の商用製品であるRational Business Developerとして提供されており、またRational Developer for System zのEGLエディションでも提供されています。
EGL は、手続き型言語や従来の第 4 世代言語との言語セマンティクスの親和性により、レガシー アプリケーションの最新化のターゲット言語です。
- Rational Business Developer製品内で利用可能な一連の変換ツールは、古い安定したIBMおよびInformix 第4世代言語からの変換を自動化します。
- IBM のサービス オファリングと補完製品 (Rational Migration Extension for Natural、Rational Migration Extension for System i、Rational Migration Extension for CA 製品) のセットは、Software AG Natural、IBM RPG、CA Cool:Gen、および CA Ideal/Datacom から EGL に変換する機能を提供します。
大規模なEGLコードベースを検索し、個々のEGLファイルの変更を比較し、重複したコードを検出するツールは、Semantic Designs [3]から入手可能である。
参考文献
- ^ EDT (EGL開発ツール)
- ^ エクリプス
- ^ “セマンティックデザイン”. 2011年7月16日時点のオリジナルよりアーカイブ。2010年8月13日閲覧。
さらに読む
- EGL、 ISBNを使用したエンタープライズWeb 2.0 978-1-58347-091-6。
- EGL for IBM i を使用した Web 2.0 アプリケーションの開発、ISBN 978-1-58347-089-3。
外部リンク
- EGLカフェコミュニティサイト
- IBM Rational Business Developer 製品ページ
- IBM Rational Business Developer 情報センター
- Eclipse EGL 開発ツール (EDT) プロジェクト - Eclipseのオープン実装