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 クラスにアクセスすることはできません。
 
 
		詳細については、次のチュートリアルを参照してください:『Interface Mapping Toolkit』と『Java サービス インターフェイスのディプロイとリソース アダプターの使用』。
 
	  
 
	  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 相互運用性」と「マネージ COBOL チュートリアル」を参照してください。
 
	  
 
	  COBOL、Java Domain、および 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 を呼び出すことも可能です。
 
 
		  - OO COBOL からの Java の呼び出し - INVOKE 文を介して OO COBOL の Java オブジェクト ドメインを使用します。
 
 
		  - Java からの OO COBOL の呼び出し - クラスウィザードを使用して、OO 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 を呼び出す必要があります。 | 
 
				 なし |