WebObjects
出典: フリー百科事典『ウィキペディア(Wikipedia)』
WebObjects(ウェブオブジェクツ)はアップルコンピュータの開発ツールXcodeに無料で付属する、JavaによるWebアプリケーションサーバである。
Webアプリケーション・Webサービスを開発・運用するための開発ツール・フレームワークを持ち、徹底したオブジェクト指向、強力なデータべース接続機能、高速なプロトタイピングが可能なツールが特徴である。WebObjectsでは、Webブラウザから使用できるウェブアプリケーション、スタンドアロンのJavaデスクトップアプリケーション、Webサービスを提供するアプリケーションを開発することができる。
WebObjectsのサポートするプラットフォームは開発・運用環境共にMac OS Xのみだが、運用環境はJava言語のみで開発されており、JavaをサポートしているプラットフォームであればWebObjectsアプリケーションを運用できる(Mac OS X Serverを購入して運用ライセンスを得ることが必要)。また、JBoss、Apache Tomcat、BEA WebLogic、IBM WebSphereといったサードパーティのJ2EEアプリケーションサーバでも運用できる。
現在アップルコンピュータはApple Store、.Macをはじめとした自社のオンラインサービスをWebObjectsで構築している。中でもiTunes Storeは最も注目されるWebObjectsアプリケーションである。
目次 |
[編集] 特徴
- 統合開発環境
- Webアプリケーションの開発・運用に必要な機能を提供する各種フレームワークと開発ツールを持つ。
- Webアプリケーションサーバ
- WebObjectsアプリケーションはJ2SEべースのWebアプリケーションサーバとしてスタンドアロンで動作する。アプリケーションの管理にはJavaMonitorというアプリケーションを使い、Webブラウザから操作する。サーブレットとしてJ2EEサーバで運用することも可能。
- データべースアクセス
- リレーショナルデータベースのテーブルをクラスにマッピングするデータべースフレームワークにより、SQL文を記述することなくデータべースにアクセスすることができる。
- プレゼンテーション、ロジック、データの分離
- プレゼンテーション(HTML)、ロジック(Java)、データ(SQL)を明確に分離し、再利用可能なWebページを構成する。
- ステート管理
- セッションを用いてあらゆるオブジェクトを長期間保持することができる。
- スケーラビリティとパフォーマンス
- 複数のアプリケーションインスタンス、複数のアプリケーションサーバを管理できる。負荷分散のアルゴリズムは3種類用意されている。
- ルールベースの高速アプリケーション開発
- プロジェクト作成時にデータモデルを与えるだけで、カスタマイズが可能なWebアプリケーションを生成することができる。
[編集] 歴史
WebObjectsは1996年3月にNeXT Software Inc.から世界初のWebアプリケーションサーバとしてリリースされた。以降他製品との競争により開発が進み、ウォルト・ディズニー・カンパニー、デルコンピュータ、英国放送協会、日産自動車などの大企業でも使われるようになった。
その後NeXTはアップルコンピュータに買収され、アップルコンピュータはWebObjectsを手に入れてからソフトウェアをハードウェアの販売につなげる戦略を展開している。2000年には無制限の運用ライセンスを含めたWebObjectsの価格を、5万ドルから699ドルに大幅に値下げした(当時の日本円で約692万円の値下げ)。2001年5月にはWebObjectsの運用環境を含めたMac OS X Serverの販売を開始した。Mac OS X ServerにはWebObjectsの無制限の運用ライセンスも含まれているので、WebObjectsは実質的に無料である。
2005年6月にはバージョン5.3がリリースされ、単体の製品からMac OS Xの一部として移行を始めた。699ドルで販売されていた開発ツールとフレームワークはXcodeに付属するようになり、WindowsやSolarisなど他プラットフォームのサポートを打ち切った。
現在アップルはさらにWebObjectsをXcodeに統合する作業を進めている。一方でMac OS X専用となったソリューションへ徐々に移行できるように、アップルは一つ前のバージョンである5.2の販売を継続している。WebObjects 5.2はWindows 2000 ServerとSolaris 8での運用を公式にサポートしており、Windows 2000 Professional用の開発ツールが付属している。
[編集] フレームワーク
WebObjectsで使われる主なフレームワークは次の3つに分けられる。
[編集] WebObjects フレームワーク(WOF)
WebObjects(ウェブオブジェクツ)フレームワークは、Webインターフェースとステート管理の機能を提供する。Webページを「テンプレート(HTMLファイル)、ロジック(Javaクラス)、両者間の設定ファイル(バインディングと呼ぶ)」の3つの要素で構成し、コンポーネントと呼ばれる単位で管理する。Webページ表示時には、テンプレート内の<WEBOBJECT>タグが設定に応じてHTMLに変換される。
このフレームワークはハイパーリンクやフォームコントロールも管理する。フォームの入力値は適切なオブジェクトに変換され、コンポーネントオブジェクトに代入される。ハイパーリンクや送信ボタンをクリックすると、コンポーネントオブジェクトのメソッドが呼び出されるようになっている。
また、ステート管理によりコンポーネントオブジェクトはHTTPトランザクションを越えて保持される。そのためオブジェクトの状態をHTMLとして表示したものがWebページとなる。WebObjectsアプリケーションでは、ユーザはブラウザを通してオブジェクトを操作していると言える。
[編集] Enterprise Objects フレームワーク(EOF)
Enterprise Objects(エンタープライズオブジェクツ)フレームワークは、リレーショナルデータベースとオブジェクト(Enterprise Object、エンタープライズオブジェクト、略してEOと呼ばれることが多い)をマッピングする。必要に応じてSQL文を生成するため、データべースの問い合わせから保存までオブジェクトを通して操作することができる。
EOFの大きな特徴はデータ構造としてのリレーショナルデータベースをマッピングするだけでなく、DBMSとしての機能(トランザクション管理、同時実行制御、整合性など)を備えている点にある。特にトランザクション管理を行うオブジェクト(EOEditingContext)が中心となり、多くのデータべース操作はこのオブジェクトを通して行われる。データべース操作後はオブジェクトとデータべースが同期され、SQL文も随時生成されるので、データべースを特別に意識しなくてもプログラミングすることができる。
[編集] Foundation フレームワーク
Foundation(ファウンデーション)フレームワークは、基本的なデータ構造やWebObjectsに必要な機能を提供する。前述したフレームワークはこのフレームワークに依存している。
このフレームワークは配列や辞書などの基本的なコレクションクラスも持ち、一部機能がJava標準ライブラリと重複する。バージョン5以前のWebObjectsはObjective-Cで開発されており、NeXTSTEP/OPENSTEPの同名フレームワークに大きく依存していた。そのためJavaに移行する際に同名フレームワークがほぼそのまま移植された。ただし、多くのクラスでJava標準ライブラリと同じインターフェースが実装されている。
[編集] ルールベースのアプリケーション開発
WebObjectsにはEOFの設定ファイルを与えるだけで各種データべース操作(検索、追加、更新、削除)を行うアプリケーションを作成する機能があり、プロトタイプを素早く作成することができる。このアプリケーションは起動時に設定ファイルからデータべースの情報を取得し、動的にWebインターフェースを生成する。アプリケーションをカスタマイズするには主にルールを用い、ルールの変更は再コンパイルをしなくともアプリケーションに反映される。
ルールベースのアプリケーションは次の3種類。
- Direct To Web (D2W)
- HTMLべースのWebアプリケーション。
- Direct To Java Client
- Java Swingを使ったデスクトップアプリケーション。
- Direct To Web Services
- Webサービスアプリケーション。
[編集] Javaとの互換性
WebObjectsは一部の開発ツールを除き、Javaで開発されている。
- 運用
- Java 1.3以降をインストールしたOSで動作する。サポート外ではあるが、Windowsや各Linuxディストリビューションでの動作が確認されている。またJ2EEサーバでも運用することができる。
- J2EEとの統合
- WebObjectsアプリケーションを.warファイルなどにまとめ、J2EEサーブレットとして運用できる。
- JDBC
- WebObjectsはJDBCドライバを使ってデータべースと通信する。
- Swing
- EOFを操作するJavaアプレットを作成できる。アプレットでは分散オブジェクトを使ってアプリケーションサーバ内のオブジェクトと通信する。
[編集] バージョン履歴
- 1.0 — 1996年5月28日
- デビューリリース。
- 2.0 — 1996年6月25日
- WebObjects Builderのプレリリース。
- 3.0 — 1996年11月
- 3.1
- Java APIの一部をサポート。
- 3.5 — 1997年12月
- Javaのサポートを強化。すべてのコンポーネントとオブジェクトがJDK 1.1.3で動作するようになった。
- 4.0 — 1998年9月
- Mac OS X Serverに対応。このMac OS X Serverは「Rhapsody」のコードネームで開発されていたもの。
- OPENSTEP 4.2 OSのサポートが中止され、YelloBoxと呼ばれるOPENSTEPのライブラリがWindows NTに移植された。
- 静的なURLから特定のメソッドを呼び出せる、ダイレクトアクションと呼ばれる機能が追加された。
- Direct to Webアプリケーションが開発できるようになった。
- WebObjectsとEOFがスレッドセーフになり、マルチスレッドで動作するアプリケーションを開発できるようになった。
- 4.5 — 2000年5月
- Objective-Cで開発できる最後のバージョン。
- 5.0 — 2001年5月
- Objective-CからJavaに全面的に書き直された。
- 5.1 — 2002年1月10日
- Enterprise JavaBeansをサポート。
- アプリケーションをサーブレットとして運用できるようになった。
- 5.2 — 2002年11月
- Webサービスをサポート。
- 5.2.1 — 2002年11月
- 5.2.2 — 2003年8月
- 5.2.3 — 2004年2月
- 5.2.4 — 2005年5月2日
- 5.3 — 2005年6月6日
- 5.3.1 — 2005年11月10日
[編集] オープンソースの代替ソフトウェア
OPENSTEPと同様、WebObjectsが周囲に与えた影響は小さくない。 WebObjectsがObjective-CからJavaに書き直されてから、オープンソースの代替ソフトウェアが数多く作られてきた。 Objective-CやJavaを含め、様々な言語で影響を受けたフレームワークが開発されている。
- Objective-C
- SOPE
- GNUstepWeb
- Java
- Tapestry
- Cayenne
- wotonomy
- Ruby
- Python
- Modeling Framework
- Smalltalk
- Seaside
- PHP
- PHOCOA
[編集] 外部リンク
[編集] 情報及びサンプルコード
- Apple WebObjects product page(英語版)
- Apple WebObjects developer page(英語版)
- Apple WebObjects Reference Library(英語版)