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 を呼び出す必要があります。 |
なし |