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」を参照してください。

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

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

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

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

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

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

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

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、またはサポートされているデータベース ベンダーのプリコンパイラ。
デバッグ エクスペリエンス 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 バイト コードにコンパイルされます。 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 ファイルをサポートしないマネージ ファイル ハンドラーを使用します。