この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に
反映 させてください。反映後、このタグは除去してください。
(2018年2月 )
WebObjects (ウェブオブジェクツ)は、Mac OS X の開発環境に含まれていた、Java によるWebアプリケーションサーバ である。Apple が開発していた。
Webアプリケーション・Webサービス を開発・運用するための開発ツール ・フレームワーク を持ち、徹底したオブジェクト指向 、強力なデータベース接続機能、ラピッドプロトタイピング が可能なツールが特徴である。WebObjectsでは、ウェブブラウザ から使用できるウェブアプリケーション 、Webサービスを提供するアプリケーション を開発することができる。
WebObjectsのサポートするプラットフォームは開発・運用環境共にMac OS Xのみだが、運用環境はJavaのみで開発されており、Javaをサポートしているプラットフォーム であればWebObjectsアプリケーションを運用できる(バージョンによってはMac OS X Server を購入して運用ライセンスを得ることが必要)。また、JBoss 、Apache Tomcat 、BEA WebLogic、IBM WebSphereといったサードパーティー のJava EE アプリケーションサーバでも運用できる。
現在AppleはApple Store オンライン 、App Store をはじめとした自社オンラインサービスをWebObjectsで構築している。中でもiTunes Store は最も利用者の多いWebObjectsアプリケーションであった。
特徴
コストが不要
WebObjectsはMac OS Xの開発環境に付属するので、Mac以外のコストはかからない。
強力なフレームワーク
Webアプリケーションの開発・運用に必要な機能を提供する各種フレームワークを持つ。
Webアプリケーションサーバ
WebObjectsアプリケーションはJava SE ベースのWebアプリケーションサーバとしてスタンドアロンで動作する。アプリケーションの管理にはJavaMonitorというアプリケーションを使い、Webブラウザから操作する。サーブレット としてJava EE サーバで運用することも可能。
データベースアクセス
関係データベース のテーブルをクラスにマッピングするデータベースフレームワークにより、SQL文を記述することなくデータベースにアクセスすることができる。(オブジェクト関係マッピング )
プレゼンテーション、ロジック、データの分離
プレゼンテーション (HTML)、ロジック (Java)、データ (SQL) を明確に分離し、再利用可能なWebページを構成する。
ステート管理
セッションを用いてあらゆるオブジェクトを長期間保持することができる。
スケーラビリティとパフォーマンス
複数のアプリケーションインスタンス、複数のアプリケーションサーバを管理できる。負荷分散 のアルゴリズムは3種類用意されている。
ルールベースの高速アプリケーション開発
プロジェクト作成時にデータモデルを与えるだけで、カスタマイズが可能なWebアプリケーションを生成することができる。
歴史
WebObjectsは1996年 3月にNeXT Software Inc. から世界初のWebアプリケーションサーバとしてリリースされた。以降他製品との競争により開発が進み、ウォルト・ディズニー・カンパニー 、デル コンピュータ、英国放送協会 、日産自動車 などの大企業でも使われるようになった。
その後NeXTはApple Computer に買収され、Apple ComputerはWebObjectsを手に入れてからソフトウェアをハードウェアの販売につなげる戦略を展開している。2000年 には無制限の運用ライセンスを含めたWebObjectsの価格を、5万ドルから699ドルに大幅に値下げした(当時の日本円で約692万円の値下げ)。2001年 5月にはWebObjectsの運用環境を含めたMac OS X Serverの販売を開始した。Mac OS X ServerにはWebObjectsの無制限の運用ライセンスも含まれているので、WebObjectsは実質的に無料である。
なお、現在もAppleはバージョン5.2の販売を継続している。WebObjects 5.2はWindows 2000 Server とSolaris 8 での運用を公式にサポートしており、Windows 2000 Professional 用の開発ツールが付属している。
2005年 6月にはバージョン5.3がリリースされ、WebObjectsは単体の製品からMac OS Xの一部として移行した。699ドルで販売されていた開発ツールとフレームワークはXcode に付属するようになり、Windows やSolaris など他プラットフォームのサポートを打ち切った。一部の開発ツールのインタフェース が一新されたが、主な機能にほとんど変更はなかった。AppleはこのままWebObjectsをXcodeに統合する方針だったが、この方針はすぐに変更されることとなった。
2006年 8月、AppleはWWDCでCocoa-Javaブリッジの廃止を告げた。WebObjectsの開発ツールはすべてCocoa-Javaブリッジを利用して実装されていたが、Appleは再実装を行わないことに決めた。これにより、WebObjectsの開発ツールもすべて廃止されることとなった。
AppleはWebObjectsのランタイムのみ開発を継続することにし、開発ツールの開発をオープンソースコミュニティに任せることにした。オープンソースのツールの中でも代替可能なものは、Eclipse のプラグインであるWOLipsである。WOLipsは、すでに何年も重要な更新のないAppleのツールに匹敵する機能を持っていた。ただしEOModelerに相当する機能だけ欠けていたが、Appleの方針が定まったことで、急ピッチで開発が進められた。
2007年 10月、Mac OS X Leopardの開発ツールに含まれる形でWebObjects 5.4がリリースされた。ライセンスキーが不要になり、プラットフォームと開発・運用の区分に関係なく使えるようになった。Mac OS X Leopardの開発ツールからWebObjectsの開発ツールが廃止され、XcodeでもWebObjectsプロジェクトを開発できなくなり、事実上WOLipsが唯一の開発ツールとなった。
フレームワーク
WebObjectsで使われる主なフレームワークは次の3つに分けられる。
WebObjects フレームワーク (WOF)
WebObjects(ウェブオブジェクツ)フレームワークは、Webインタフェースとステート管理の機能を提供する。Webページを「テンプレート(HTMLファイル)、ロジック(Javaクラス)、両者間の設定ファイル(バインディングと呼ぶ)」の3つの要素で構成し、コンポーネントと呼ばれる単位で管理する。Webページ表示時には、テンプレート内の<WEBOBJECT>タグが設定に応じてHTMLに変換される。
このフレームワークはハイパーリンクやフォームコントロールも管理する。フォームの入力値は適切なオブジェクトに変換され、コンポーネントオブジェクトに代入される。ハイパーリンクや送信ボタンをクリックすると、コンポーネントオブジェクトのメソッドが呼び出されるようになっている。
また、ステート管理によりコンポーネントオブジェクトはHTTPトランザクションを越えて保持される。そのためオブジェクトの状態をHTMLとして表示したものがWebページとなる。WebObjectsアプリケーションでは、ユーザはブラウザを通してオブジェクトを操作していると言える。
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 Web Services
Webサービス アプリケーション。
Javaとの互換性
WebObjectsはJava で実装されている。
運用
Java 1.3以降をインストールしたOSで動作する。サポート外ではあるが、Windows や各Linux ディストリビューションでの動作が確認されている。またJava EE サーバでも運用することができる。
Java EEとの統合
WebObjectsアプリケーションを.warファイルなどにまとめ、Java EEサーブレット として運用できる。
JDBC
WebObjectsはJDBC ドライバを使ってデータベースと通信する。
バージョン履歴
オープンソースの代替ソフトウェア
OPENSTEP と同様、WebObjectsが周囲に与えた影響は小さくない。
WebObjectsがObjective-C からJava に書き直されてから、オープンソース の代替ソフトウェアが数多く作られてきた。
Objective-CやJavaを含め、様々な言語で影響を受けたフレームワークが開発されている。
外部リンク
情報及びサンプルコード
オープンソースの代替ソフトウェア