Java2 Enterprise Editionの基礎知識 |
|
“Write Once, Run Anywhere”。これはご存じのとおり、Javaの掲げる理念を表したスローガンです。「一度書けば、どこでも動く」。これは、ソースレベルでのポータビリティはもちろんのこと、バイナリレベルでのポータビリティの実現をも意味しています。
Java AppletはWebブラウザに内蔵されたJava VMによって、異なるプラットフォーム上であっても、単一のバイナリをダウンロードして動作させることができますし、サーバサイドの動作環境を実現するJava Servletも、サーバ側のプラットフォームでのポータビリティを保つことができます。LinuxでもSolarisでも、ときにはWindows NTでも、開発者はたじろぐことなく、1種類のソースファイルをClassファイルという1種類のバイナリにコンパイルし、複数のプラットフォームで動作させることができるわけです。
一方で、エンタープライズレベルのJavaテクノロジにおいては、プラットフォーム非依存性以外に、もう1つ解決しなければならないポータビリティの問題があります。それはどの部分のポータビリティかというと、より低水準なサービスの部分です。Webアプリケーションは、純粋なアプリケーションロジックのほかにも、さまざまな低水準なサービスを提供する必要があるからです。
例えば、データベース・アクセスひとつをとっても、ユーザーからのリクエストがあるたびに、毎回データベースへの接続や切断を行っていたのではサーバに負荷がかかり、何よりレスポンスへの影響が大きく、顧客の不満のもととなりかねません。そこで、コネクション・プーリングという手法が登場します。これは、あらかじめ接続をプールしておき、必要に応じてアプリケーションに割り当て、使用後は再びプールに回収し再利用するという仕組みです。この、コネクション・プーリングはWebアプリケーションには必須の技術です。
そのほかにも、セッションの管理、トランザクション管理、メール送信、CORBAやメッセージングによる既存システムとの連携、負荷分散、可用性の確保、といったようなサービスが必要となってきますが、これらをアプリケーション開発者が1から作成するのは非常に労力が大きく困難です。そこで、これらシステム・レベルのサービスをあらかじめ用意した動作環境として、各ベンダからアプリケーション・サーバ製品が登場してきたという経緯があるわけです。
アプリケーション開発者は、アプリケーション・サーバ製品を使用することで、より簡単にサーバサイドアプリケーションを構築することが可能になりました。上記のようなシステム・レベルのサービスはアプリケーション・サーバ側にラップされ、シンプルなメソッド呼び出しだけで使用可能となったからです。しかし、これによって言語そのものには依存性がなくとも、使用するサービスがベンダ独自のものとなることで、構築したシステムがアプリケーション・サーバ製品に依存してしまい、ポータビリティを損なうという結果を招いてしまいました。
こういった状況を解決するために登場したのが、J2EE(Java2 Enterprise Edition)です。J2EEの登場によって、各ベンダが独自に開発した各種の機能は標準化され、サーバサイドのエンタープライズシステムにおいても、 “Write Once, Run Anywhere”を実現することが可能となるわけです。
[関連記事]WebアプリケーションにおけるサーバサイドJavaの役割(@IT Java Solution)
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|