手続き型 COBOL とマネージ COBOL の比較

手続き型 COBOL は、.NET および JVM 用の新しい構文が追加されていない通常の COBOL です。これは、Net ExpressServer Express、および Mainframe Express アプリケーションの記述に使用される COBOL であり、現在も積極的にサポートされています。

ネイティブ・コードまたは (ほとんどの場合) マネージ・コードにコンパイルすることができます。コア COBOL 構文は、マネージ・コードでサポートされます。ただし、サポートされていない機能もいくつかあります (例えば、Panels V2、Dialog System、ACUCOBOL-GT)。これは、既存のほとんどの COBOL アプリケーションを再コンパイルしてマネージ・アプリケーションを作成できることを意味します。

マネージ COBOL

マネージ COBOL は、.NET COBOL および JVM COBOL の総称です。

マネージ COBOL は、.NET および JVM フレームワークをサポートする拡張機能を備えた COBOL です。マネージ COBOL は、OO 構文サポートと、使用可能なクラス・ライブラリへのアクセスを許可する構文を提供します。

マネージ COBOL をコンパイルすると、コンパイラはマネージ・コード (Java 仮想マシン上で実行される JVM 用の .class または .jar) を生成します。

マネージ・コードとネイティブ・コード

ユーザは、jvmgen コンパイル指令を使用して、COBOL プログラムをマネージ・コードにコンパイルすることができます。マネージ COBOL COBOL JVM プロジェクトを使用している場合、これは IDE 内から自動的に行われます。

その結果、コンパイラは中間言語 (JVM バイト・コード .class/.jar) を作成します。

COBOL と他のすべての JVM 言語 (Java、JRuby、Jyphon など) は、このフォーマットにコンパイルされます。このフォーマットは、混合言語アプリケーションの記述を容易にします。

また、ネイティブ・コード・アプリケーションを作成することもできます。Eclipse では、デフォルトの COBOL プロジェクトはネイティブ・コードにコンパイルされます。

コンパイラは、ネイティブ・コンパイルの結果として .exe/.dll を生成します。

ネイティブ COBOL アプリケーションは、オペレーティング・システムに利用できる適切な管理サービスを呼び出す必要がありますが、マネージ・アプリケーションは、ラン・タイムによって提供される管理サービス (例外処理、ガベージ・コレクション、スレッド管理など) を利用できます。

ラン・タイム

JVM バイト・コード (.class/.jar files) は、実行のために JVM にディプロイすることができます。

JVM のジャストインタイム (just-in-time; JIT) コンパイラは、バイト・コードをオペレーティング・システムに対してネイティブなコードにコンパイルします。JVM は、メモリ管理、例外処理、ガベージ・コレクション、スレッド管理などの追加のサービスを提供します。

ネイティブ・アプリケーションとマネージ・アプリケーションの開発

ネイティブ・アプリケーションとマネージ・アプリケーションのどちらの場合でも、その開発、コンパイル、およびデバッグには IDE を使用します。ユーザは、新しい COBOL コードを記述するか、既存の COBOL アプリケーションを (場合によってはコード変更なしで) マネージ・コードまたはネイティブ・コードに再コンパイルすることができます。

Enterprise Server によって提供されるランタイム・システムでは、アプリケーションをディプロイして、さらにデバッグすることができます。

JVM COBOL アプリケーションは、実行のために Java 仮想マシンにディプロイされます。