@IT|@IT自分戦略研究所|QA@IT|イベントカレンダー+ログ | ||
Loading
|
|
@IT > Linuxの真実、Windowsの真実(8) |
企画:アットマーク・アイティ 営業企画局 制作:アットマーク・アイティ 編集局 掲載内容有効期限2004年12月31日 |
|
|
Linuxの真実、Windowsの真実(8)
Webアプリケーション開発で急速に支持を得たのがサーバ・サイドJavaテクノロジだ。Javaは、UNIXベンダの1つであるSun Microsystemsによって開発されたソフトウェア・プラットフォームである。仕様が公開され開発環境(JDK)が無償提供されたこと、特定プラットフォームに依存しないアプリケーションを作成できたことなどから、Javaを利用したサーバ・サイドWebアプリケーション向けの各種フレームワークやコンポーネント、開発ツールなどが、Sunだけでなくサードパーティやオープンソース・コミュニティなどによって活発に開発されている。 Webアプリケーション・プラットフォーム開発では後発となったマイクロソフトは、Webアプリケーションをも含む次世代ソフトウェア戦略の.NET構想を発表し、それを実際のフレームワークとして実装した.NET Frameworkを発表した。この.NET Frameworkは、Webアプリケーションだけでなく、従来のWindowsアプリケーションや、新しいXML Webサービスをも共通のプラットフォームで構築可能にする強力なフレームワークだ。.NET Frameworkに含まれるWebアプリケーション開発用フレームワークであるASP.NETは、後発ではある代わりに高い開発生産性を持っており、多くのプログラマの注目を集めた。新しいフレームワークの登場とともに、Windows Server 2003+IIS 6.0という高機能で堅牢なWebアプリケーション・プラットフォームも発表されたことから、WindowsベースでのWebアプリケーション開発も急速に広がっている。
JavaベースのWebアプリケーション開発用としては、IBM WebSphereやBEA WebLogicなど、中〜大規模システム開発を念頭に置いた有償製品が販売されている。しかしその気になれば、Linuxとオープンソース・ベースのJava関連ソフトウェア(以下ではこれらを「フリーJava製品」と表記する)を組み合わせることで、ソフトウェアのライセンス料なしで、Webアプリケーション・プラットフォームを構築することも可能だ。 一方Windowsプラットフォームを選択した場合は、サーバOSやデータベースなどのサーバ・ソフトウェア、クライアントPCからサーバにアクセスするために必要なCAL(Client Access License)など、規模にもよるがかなりのライセンス・コストを見込まなければならない。このため特に小〜中規模クラスのWebアプリケーション開発では、LinuxとフリーJava製品を利用して、低コストでシステムを開発したいという意向を持つユーザーが少なくない。 しかし、たとえフリーJava製品を組み合わせたとしても、その上で実装される業務アプリケーションはタダではできない。また業務の生産性を向上させるには高い実行性能が必要であり、システムの展開や日々の運用管理にかかる管理コストや、将来の拡張に備えた柔軟性なども幅広く評価して、システム開発全体のコストを算出する必要がある。システムのチューニングや障害発生時の原因究明と対処など、一般に業務システムの展開と運用では、初期コストを大きく超えるランニング・コストが必要になるからだ。 今回は、中小規模のWebアプリケーション・プラットフォームとして、Linux+フリーJava製品を組み合わせたものと、Windows+.NETとを比較し、それぞれの特徴やコストとリスクについて検討してみる。
フリーJava製品を前提としたWebアプリケーション・プラットフォームの構成は次のようになるだろう(通常は、これ以外にもデータベース・システムが必要となる)。
Javaプログラムを実行するには、まず、最も基本的なJavaの実行エンジンであるJ2SE(Java 2 Standard Edition)仕様を実装したJ2RE(Java2 Runtime Environment)またはJ2SDK(Java2 Software Development Kit)が必要になる。 サーバサイドにおけるアプリケーション実行のための各種の仕様やAPIをセットにしたものがJ2EEである。J2EEには、サーバサイドにおけるJavaの実行形態であるサーブレットや、Webページを記述するためのJSP(JavaServer Pages)、データベースにアクセスするためのJDBCなどが含まれる。 SunはJ2EEのRI(Reference Implementation)しか提供していないため、実際にサーバサイドのアプリケーションを動作させるためにはコンテナが必要だ。サーブレット/JSPを動作させるためのコンテナ(Webコンテナ)の代表的なものがオープンソース・コミュニティ「Jakarta Project」によって開発されたTomcatだ。 また、大規模システムではプレゼンテーション層とビジネスロジック層を明確に分けて開発する。その際に、ビジネスロジック層の実装や、データベースとの接続に用いられるのがEJBである。EJBを動作させるためのEJBコンテナでオープンソースの代表的なものがJBossだ。 このように、Javaの開発ではRIに従って実装されたコンテナ類を自ら選択し、組み合わせて使わなければならない。 そしてWebアプリケーションのためのより高度なフレームワークとして、Jakarta Strutsプロジェクトによって開発されたものが「Struts」である。Strutsを利用すれば、MVCモデル(Model−View−Controllerモデル)ベースで構築された抽象度の高いフレームワークに従ってWebアプリケーションを開発でき、開発生産性を上げることができる。 JavaベースのWebアプリケーション開発に関するテクノロジの詳細については、Java Solutionフォーラムの次の記事などを参考にされたい。
一方、マイクロソフトが提供する現在のWebアプリケーション・プラットフォームは次のようになっている。
マイクロソフト1社がすべて開発しているため当然ともいえるが、Linux+フリーJavaと比較すると、こちらは非常にシンプルである。周知のとおり、Windows Server 2003にはWebサーバであるIIS 6.0、および.NET対応アプリケーションを実行するためのランタイムであるNET Framework(現在のバージョンは1.1)が最初から標準で組み込まれている。 図から分かるとおり、JavaのStrutsに相当する高度なWebアプリケーション・フレームワークであるASP.NETまでもが.NET Frameworkとして1つに統合されている。つまりJavaでは開発者が選択して組み合わせる必要があるApache、JBoss、Tomcat、Strutsなどが、Windows Server 2003だけでシンプルに用意できるということだ。 .NET FrameworkやASP.NET、ADO.NETなどの詳細については、Insider.NETの以下の記事を参照されたい。
Linux+フリーJava、Windows+.NET Framework両者のプラットフォーム構成が分かったところで、双方を利用したWebアプリケーション開発のコストとリスクについて検討してみよう。 ■サポートと将来性に不安が残るJava しかし開発主体は分散しており、将来的なサポートは必ずしも保証されていない。現在、Javaの開発元であるSunは、JSF(Java Server Faces)と呼ばれるMVCベースのWebアプリケーション・フレームワークを開発中だ。これに対し、Strutsの将来に疑問を投げかける開発者も多い。一度開発したら長期にわたり改修などのメンテナンスが発生しないシステムか、フレームワークがどのように変化しようと自分でメンテナンスを行える技術力と覚悟がなければ、これは大きなリスクになるだろう。 一方マイクロソフトは、現行.NET Framework 1.1の次バージョンである2.0、さらにその先のLonghornに搭載される予定のWinFXと、アプリケーション・インターフェイスのロードマップを数年先まで公表している。バージョン間でどの程度まで互換性が維持されるのかは不明だが、少なくとも現在の.NET Frameworkをベースとして発展させたものであることは間違いない。Linux+Javaに比較すれば、作成したアプリケーションの長期的なサポート保証のリスクと、将来への移行リスクは小さいといってよいだろう。 ■高度な開発スキルが要求されるJava Windows+.NETでは、コンポーネントの組み合わせが選択できない代わり、単一の開発主体による標準化の利点と、コンポーネント統合の利点を享受できる。フレームワークの構成も非常にシンプルである。Javaとは異なり、Windows+.NETでは、開発者がシステム・チューニングとして調整すべきパラメータは極めて少ない。 誤解を恐れずにいえば、Javaでの開発はマニュアル車、Windowsでの開発はオートマチック車と考えられる。前者は車の構造と特性をよく理解して乗りこなせば最高のパフォーマンスを手に入れられるが、中途半端では十分なパフォーマンスが出ない。後者はこまごまと手を加える余地は少ないために、最高のパフォーマンスを引き出すのは難しいかもしれないが、代わりに及第点のパフォーマンスを容易に手に入れられる。
無償のソフトウェアと有償のソフトウェアのライセンス・コストだけを比較することに意味はない。無条件に軍配は前者にあがるからだ。 しかし企業のシステム開発では、初期のライセンス・コストだけでなく、全体的な開発コスト、展開後の運用管理コスト、開発した業務アプリケーションの将来への拡張性などを入念に検討する必要がある。「フリーJavaなら安い」と安直な結論を出す前に、さまざまなトータルなコストとリスクについて1つずつ考える必要があるだろう。
|
|