Java と COBOL の相互運用オプション

Enterprise Developer は、COBOL と Java を統合できるさまざまな方法を提供します。一部の方法では、既存のアプリケーションの変更を必要とする場合があります。また、どの方法がより適切かは、アプリケーションの種類によって異なる場合があります。本トピックでは、それぞれの方法を概説し、方法の選択に影響する各種要素についてまとめます。

EJB と Java Bean に対する Enterprise Server のサポート

Enterprise Server は、COBOL アプリケーション用のアプリケーション サーバーです。Enterprise Server は高いパフォーマンスとともに、メインフレーム サブシステム エミュレーションも提供します。

Enterprise Developer の Interface Mapping Toolkit 機能 (IMTK) を使用して、Enterprise Server で動作する COBOL アプリケーションにアクセスする、EJB または J2SE Bean を生成します。次にこの Bean が、Java アプリケーション サーバーにディプロイされた JCA リソース アダプターを使用します。

制約事項:
  • COBOL アプリケーションから直接 Java クラスにアクセスすることはできません。

詳細については、「Tutorial: Interface Mapping Toolkit」を参照してください。

COBOL Java ドメインおよび Java Native Interface (JNI) の使用

次のシナリオは、最も高いパフォーマンスを必要とするデスクトップ アプリケーションに最適です。COBOL は、Enterprise Server ランタイムでネイティブ コードとして実行されます。COBOL と Java を同時に使用するには、提供されたサポート ライブラリを使用して呼び出しをコーディングします。

次に示すのは、Java 2 Standard Edition (J2SE) と COBOL を統合する方法です。

  • Java からの手続き型 COBOL の呼び出し - com.microfocus.cobol.RuntimeSystem クラスで提供されるサポートを使用します。このクラスは CobolBean クラスを提供するように拡張されています。この RuntimeSystem クラスによるサポートは、手続き型 COBOL から JNI (Java Native Interface) 経由で Java を呼び出すことも可能にします。
  • オブジェクト指向 COBOL からの Java の呼び出し - INVOKE 文を介してオブジェクト指向 COBOL の Java オブジェクト ドメインを使用します。
  • Java からのオブジェクト指向 COBOL の呼び出し - オブジェクト指向 COBOL クラス内のメソッドごとに関数を提供する Java ラッパー クラスを作成します。「ラッパー クラス」を参照してください。

詳細については、「関連情報」を参照してください。

次の表に、各シナリオでサポートされる技術と、アプリケーションを Java と統合するメカニズムをまとめます。

表 1. COBOL および Java の統合オプション
  Enterprise Server Java バイト コード COBOL Java ドメイン
Java アプリケーション サーバーのサポート あり。一般的なアプリケーション サーバーはすべてサポートされます。「追加ソフトウェア要件」を参照してください。 あり。「追加ソフトウェア要件」を参照してください。 利用できません。

EJB 標準に準拠していないため、Java アプリケーション サーバーでは JNI を使用しないことを推奨します。

データベースのサポート ODBC、またはサポートされているデータベース ベンダーのプリコンパイラ。 OpenESQL を使用する JDBC。 ODBC、またはサポートされているデータベース ベンダーのプリコンパイラ。
デスクトップ Java アプリケーション 一般的な用途ではありません。 あり あり
EJB のサポート あり あり なし
ファイル IO トランザクション あり。Fileshare を介して行います。 Fileshare は Java アプリケーション サーバーではサポートされていないため、利用できません。
注: Fileshare はデスクトップでサポートされています*
あり。Fileshare を介して行います。
Fileshare のサポート あり なし あり
相互運用性メカニズムおよびパフォーマンス COBOL アプリケーションは、Enterprise Server でネイティブ コードとして実行されます。IMTK を使用して、EJB または J2SE bean を生成します。これは、COBOL コードにアクセスし、Java アプリケーション サーバーにディプロイされている JCA リソース アダプターを使用します。 COBOL アプリケーションは、Java が直接アクセスする Java バイト コードにコンパイルされます。 COBOL アプリケーションは、ネイティブ コードとして実行されます。Java は、JNI を使用してアクセスされます。
Mainframe Subsystem Support あり なし なし
JEE コンテナー マネージ トランザクションのサポート あり。

アプリケーション サーバーと Java の間に、別個のデータベース接続がありますが、協調的なトランザクションはありません。

アプリケーション マネージ トランザクションのサポートのみです。 アプリケーション マネージ トランザクションのサポートのみです。
COBOL からの Java SDK アクセス なし あり。完全にサポートされています。 すべての Java 型は、INVOKE 文を使用してサポートされます。

JNI インターフェイスを通してネイティブ呼び出しを使用する場合は、追加コードを追加する必要があります。

Micro Focus クラス ライブラリを使用して、ユーザー定義型およびマッピングを作成できます。

Web サービス エンドポイント あり 直接ではありません。Java は、エンドポイントとして動作し、COBOL を呼び出す必要があります。 なし
* デスクトップでは、ファイル操作は、Fileshare をサポートする「ネイティブ」ファイル ハンドラーを使用します。ただし、Java EE などのサーバー環境では、Enterprise Developer は、Fileshare、ACU、または RM ファイルをサポートしないマネージ ファイル ハンドラーを使用します。