システム開発がますます複雑化していく中、エンジニアには、テクノロジを理解して、さまざまな場面に適した選択が求められます。本連載では、Javaと.NETの基本的な仕組みから最新の傾向や技術などについて、数回に分けて紹介します
前回の「設計者/SEが覚えておきたいJavaと.NETの違い」では、Javaと.NETにおけるリッチクライアント/RIAを含むクライアントサイドの技術や、Webアプリケーション開発のための技術をフレームワークやデータベースアクセス技術も交えながら、紹介しました。
今回は近年、システム開発の手法として標準化しつつある分散システム開発やWebサービスを利用するための技術や、さらにそこから派生してJavaと.NETの連携を紹介します。それらとともに、今後普及が予想されるクラウド・アプリケーションを開発するための技術も紹介することで、両技術の将来性を探っていければと思います。
また技術以外の側面として、Javaと.NETそれぞれのサポートやコミュニティなどからも、将来性について考察します。
近年のさまざまな業務システムでは、ネットワーク技術の発達によるデータの巨大化により、処理量が大きいものが出現してきました。このような膨大な処理を1台のコンピュータで処理しようとすると、パワーが足りない状況が生じています。そこで処理能力を向上させるために、複数のコンピュータを並列に動作させてネットワークを通じて処理をする分散コンピューティング/グリッドコンピューテイング技術が用いられることがあります。
分散コンピューティングの特徴として、コンピュータリソースの効率的な利用や、異種の機能間における資源の統合などが挙げられます。ほかにも複数のコンピュータで処理をすることで、「仮にどれか1台のコンピュータに故障が発生しても全体に被害が広がらない」というメリットがあります。
分散コンピューティングを実現する方法としては、ネットワークを使って分散しているオブジェクトをプログラムから利用する「分散オブジェクト技術」があります。有名なところでは、「OMG(Object Management Group)」が定めた分散オブジェクト技術仕様である「CORBA(Common Object Request Broker Architecture)」があります。
CORBAでは、ほかのプログラムからオブジェクトを利用するためのインターフェイスを記述するのに「IDL(Interface Definition Language)」という独自言語と、「IIOP(Internet Inter-ORB Protocol)」というプロトコルが使用されています。
IDLはオブジェクトのインターフェイスを実装する言語です。これをIDLコンパイラでコンパイルすることによって、各プログラム言語とCORBAが通信するためのモジュールである「スタブ」「スケルトン」が自動生成されます。
これにより、ほかのプラットフォームと言語を意識することなく相互に利用可能です。JavaのIDLコンパイラは「Java IDL」といいます。これにより、JavaからCORBAオブジェクトを扱えます。
またJavaには、分散オブジェクト技術として「Java RMI(Java Remote Method Invocation)」というAPIがあります。
このAPIを使用することで、ネットワークを通じて別のホスト上に存在するオブジェクト(リモートオブジェクト)のメソッドを呼び出せます。特別な文法もなくローカルのオブジェクトを呼び出すのと同じようにリモートのオブジェクトを扱える点が特徴です。
またJava RMIには、標準で対応しているプロトコルに「JRMP(Java Remote Method Protocol)」「RMI over IIOP」という通信プロトコルがあります。前者は対応するオブジェクトがJava RMIだけに限定されます。後者はCORBA対応言語で実装されたほかのアプリケーションとの通信が可能です。
Java EEに含まれる分散オブジェクト技術の「EJB(Enterprise JavaBeans)」にも、リモートオブジェクトモデルとしてJava RMIが使用されています。
ほかには、「メッセージング」と呼ばれるネットワーク上で情報のやりとりを「メッセージ」という単位で通信する技術があります。これはシステム間の連携を疎結合に保つために生まれました。
Javaではメッセージングを実現するために「JMS(Java Messaging Service)」というAPIがあります。JMSは「メッセージ指向ミドルウェア(MOM)」と呼ばれるエンタープライズメッセージングシステムを扱うためのJava EEの標準APIです。
JMSはメッセージングモデルとして「ポイント・ツー・ポイント(PTP)」「パブリッシュ/サブスクライブ(Publisher-Subscriber)」を採用しています。JMSはJDBCやJNDIなどのほかのJava EEの機能と連携できます。
Copyright © ITmedia, Inc. All Rights Reserved.