アットマーク・アイティ @IT@IT自分戦略研究所QA@ITイベントカレンダー+ログ

 @IT > Linuxの真実、Windowsの真実(8)
 
@IT[FYI] 企画:アットマーク・アイティ 営業企画局
制作:アットマーク・アイティ 編集局
掲載内容有効期限2004年12月31日

 

Linuxの真実、Windowsの真実(8)
ワークロード5:Webアプリケーション開発

第8回
Webアプリ開発プラットフォームとしての
Linux+フリーJavaとWindows+.NET


Linux+フリーJava製品ならライセンス料ゼロでソフトウェアをそろえられる。しかしそれは本当に安上がりなのか?

 

    Webアプリケーションの勃興

 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アプリケーション開発も急速に広がっている。

    「Webアプリ開発はJavaが安上がり」は本当か?

 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とを比較し、それぞれの特徴やコストとリスクについて検討してみる。

    Linux+フリーJava製品を利用したWebアプリケーション・プラットフォーム

 フリーJava製品を前提としたWebアプリケーション・プラットフォームの構成は次のようになるだろう(通常は、これ以外にもデータベース・システムが必要となる)。

フリー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フォーラムの次の記事などを参考にされたい。

    Windows+.NET Frameworkを利用したWebアプリケーション・プラットフォーム

 一方、マイクロソフトが提供する現在のWebアプリケーション・プラットフォームは次のようになっている。

Windows+.NET Frameworkを利用した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によるWebアプリケーション開発比較

 Linux+フリーJava、Windows+.NET Framework両者のプラットフォーム構成が分かったところで、双方を利用したWebアプリケーション開発のコストとリスクについて検討してみよう。

■サポートと将来性に不安が残るJava
 Webアプリケーション・プラットフォームとして先行したUNIX/Linux+Javaは、当初のJ2SEから始まり、必要に応じて、より抽象度の高い標準仕様が策定され、それを満たすフレームワーク実装が積み上げられてきた。これらのフレームワークを実装した開発元は単一ではなく、サードパーティから開発コミュニティまで、さまざまな主体によって開発されたものを選べる。選択の幅は広く、用途に応じてフレームワーク実装を選択できるため、業務処理に応じた最適なシステム・チューニングができる可能性が高い。

 しかし開発主体は分散しており、将来的なサポートは必ずしも保証されていない。現在、Javaの開発元であるSunは、JSF(Java Server Faces)と呼ばれるMVCベースのWebアプリケーション・フレームワークを開発中だ。これに対し、Strutsの将来に疑問を投げかける開発者も多い。一度開発したら長期にわたり改修などのメンテナンスが発生しないシステムか、フレームワークがどのように変化しようと自分でメンテナンスを行える技術力と覚悟がなければ、これは大きなリスクになるだろう。

 一方マイクロソフトは、現行.NET Framework 1.1の次バージョンである2.0、さらにその先のLonghornに搭載される予定のWinFXと、アプリケーション・インターフェイスのロードマップを数年先まで公表している。バージョン間でどの程度まで互換性が維持されるのかは不明だが、少なくとも現在の.NET Frameworkをベースとして発展させたものであることは間違いない。Linux+Javaに比較すれば、作成したアプリケーションの長期的なサポート保証のリスクと、将来への移行リスクは小さいといってよいだろう。

■高度な開発スキルが要求されるJava
 Linux+Javaのコンポーネント選択の幅が広いということは、裏を返せば、Webアプリケーション開発者がコンポーネントの最適な組み合わせを選択し、アプリケーション開発ではそれらを使いこなさなければならないということでもある。最適なコンポーネントの組み合わせを選択し、それらの特徴を活かすためには、高度な経験とノウハウが必要である。またシステム開発において、Java開発者は最後のシステム・チューニング(各種パラメータ設定など)に大変苦労すると聞く。これも、Javaの柔軟性の裏返しと考えてよいだろう。

 Windows+.NETでは、コンポーネントの組み合わせが選択できない代わり、単一の開発主体による標準化の利点と、コンポーネント統合の利点を享受できる。フレームワークの構成も非常にシンプルである。Javaとは異なり、Windows+.NETでは、開発者がシステム・チューニングとして調整すべきパラメータは極めて少ない。

 誤解を恐れずにいえば、Javaでの開発はマニュアル車、Windowsでの開発はオートマチック車と考えられる。前者は車の構造と特性をよく理解して乗りこなせば最高のパフォーマンスを手に入れられるが、中途半端では十分なパフォーマンスが出ない。後者はこまごまと手を加える余地は少ないために、最高のパフォーマンスを引き出すのは難しいかもしれないが、代わりに及第点のパフォーマンスを容易に手に入れられる。

    初期ライセンス・コストだけでなく、運用や将来性も見据える必要がある

 無償のソフトウェアと有償のソフトウェアのライセンス・コストだけを比較することに意味はない。無条件に軍配は前者にあがるからだ。

 しかし企業のシステム開発では、初期のライセンス・コストだけでなく、全体的な開発コスト、展開後の運用管理コスト、開発した業務アプリケーションの将来への拡張性などを入念に検討する必要がある。「フリーJavaなら安い」と安直な結論を出す前に、さまざまなトータルなコストとリスクについて1つずつ考える必要があるだろう。

関連リンク
Microsoft .NETとSun J2EE:Nileアプリケーションのベンチマークテスト



<バックナンバー>
◆ インデックスページ 「Linuxの真実、Windowsの真実
◆ プロローグ 「LinuxとWindows。その本当のコストとリスクを評価するために
◆ 第1回 「ファイル/プリント・サーバの基本機能比較
◆ 第2回 「ネットワーク管理に不可欠なディレクトリ・サービス
◆ 第3回 「Linuxの本当のTCOを考える
◆ 第4回 「LinuxはWindowsより安全か?
◆ 第5回 「Office互換ソフトの実力とリスク
◆ 第6回 「Webサーバ・プラットフォームとしてのLinuxとWindows
◆ 第7回 「大規模Webホスティング・サービスでシェアを広げるWindows+IIS
◆ 第8回 「Webアプリ開発プラットフォームとしてのLinux+フリーJavaとWindows+.NET
◆ 第9回 「可用性、スケーラビリティを備えたシステム開発
◆ 第10回 「座談会:システム・インテグレータから見たLinuxとWindows(前編)
◆ 第11回 「座談会:システム・インテグレータから見たLinuxとWindows(後編)

 


ファイルサーバーとしてWindows Server 2003のパフォーマンスがLinuxを凌ぐ

エンタープライズコンピューティングにおける Windows 2000 と Linux の比較ビジネスバリューを複数のワークロードから検証

社内のファイルサーバーを効率的に管理するには?

社内のサーバーが増加し、管理コストが問題に

情報漏洩と改ざんへの対策とは?

情報の安全性を確保するバックアップ

ファイルサーバーのディスク領域管理

導入事例:ライオン株式会社
Unix と Linux の環境を Microsoft Windows Server 2003 環境へ移行。社内サーバー台数を 200 台から 15 台へ削減

導入事例:東北電力/東北インフォメーション・システムズ
Microsoft? Windows? 2000 Server の PKI サポートを利用したスマートカード導入により、約 1 万 4000 台の超大規模システムのセキュリティを効率的に強化

Windows Server Systemのホームページ

Windows Server 2003のホームページ

Windows Server 2003テクノロジ(ファイル サービスと印刷サービス)

Microsoft TechNetのホームページ

TechNet:Windows 2000 Server

TechNet:Windows Server 2003



</comment> <tr> <td bgcolor="#EEEEEE"><font size="2"><a href="javascript:KeepIt();"> <img src="/club/keepoint/images/ico_kpt.gif" alt="kee&lt;p&gt;oint保存" border="0" align="absmiddle" width="24" height="18">kee&lt;p&gt;ointで保存</a></font></td> </tr> <comment>

 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ