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

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

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

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

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

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

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

Java バイト コードへの COBOL アプリケーションの直接コンパイル

このシナリオは、Enterprise Server やトランザクション サポートを必要としないアプリケーション、および Java との最適な統合が必要な場合に適しています。

JVM COBOL は、COBOL と Java の完全統合を提供することで、JVM 内で直接実行される Java バイト コードをコンパイルします。この方法では、Java クラスはさまざまな技術を使用して、既存の COBOL アプリケーションを呼び出せます。COBOL アプリケーションは、Java SDK によって提供される Java クラスまたはルーチンも呼び出せます。

JVM COBOL アプリケーションを、それがディプロイされるプラットフォーム上でビルドする必要があります。

JVM の性質により、COBOL アプリケーションは、標準ネイティブ環境の JVM 外で動作する COBOL アプリケーションよりも、パフォーマンスが落ちる可能性が高くなります。パフォーマンスの低下率は、アプリケーションによって異なります。非常に集約的なバッチ アプリケーションではパフォーマンスが低下する可能性がありますが、対話式アプリケーションでは応答性に明確な違いがでないことがあります。

パフォーマンス水準が満足できるものかどうかを判断するため、既存のアプリケーションに対してパフォーマンス テストを行うことを推奨します。

詳細については、「JVM COBOL Interoperability」および「マネージ COBOL チュートリアル」を参照してください。

COBOL、Java Domain、および Java Native Interface (JNI) の使用

以下のシナリオは、最も高いパフォーマンスを必要とするデスクトップ アプリケーションに最適です。COBOL は、COBOL 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 アプリケーション サーバー サポート あり。定評のあるアプリケーション サーバーはすべてサポートしています。「追加ソフトウェア要件」を参照してください。 あり。「追加ソフトウェア要件」を参照してください。 NetExpress では、使用できません。

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

データベース サポート ODBC、またはサポートされているデータベース ベンダー プリコンパイラ。 OpenESQL を使用する JDBC。 ODBC、またはサポートされているデータベース ベンダー プリコンパイラ。
デバッグ エクスペリエンス Eclipse には、さまざまな Java と COBOL 向けのデバッガーがあります。 Eclipse で Java と COBOL の間に割り込むことができます。 Eclipse には、さまざまな Java と COBOL 向けのデバッガーがあります。

両方の言語は、同時にデバッグできません。COBOL から独立して Java をデバッグしたり、Java から独立して COBOL をデバッグしたりできます。

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

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

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

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

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

Web サービス エンドポイント あり 直接ではありません。Java は、エンドポイントとして動作し、COBOL を呼び出す必要があります。 なし