<?xml version="1.0" encoding="Shift_JIS"?>
<document>

  <properties>
    <author email="jon@latchkey.com">Jon S. Stevens</author>
    <title>You make the decision - Implementation</title>
    <translator>熊坂祐二</translator>
    <translator>高橋達男</translator>
    <original>ymtd/ymtd-implementation</original>
  </properties>

<body>

<section name="実装">

<subsection name="第一の点: 標準">

<p>
JSP で宣伝されている利点の一つは、「標準」であるということです、
そして、相当な数の人々がそれを重視していますが、
そうするあまり、「標準」でない技術はどれも拒否してしまいます。
この利点に関して、真実を追求するとわかることですが、
用語に正確にしたがえば (これが重要です)、
JSP は、「Sun標準仕様」であり、厳密には「標準」ではないのです。
このことは重要です。なぜなら、JSP が実は Microsoft の ASP や PHP Group の PHP と同様、
「標準」でないからです。言い換えれば、あなたがたまたま使っているツールはどれでも、
「標準」になるかもしれません。
</p>

<p>
JSP を定義しているのは、Java Community Process (JCP) 内の小さなグループです。
実際問題として、JCP に加わるにはかなり高い障壁があります。
なぜなら、NDA (機密保持契約) にサインをした上で、
プロジェクトリードによる加入の承認を受けなければならず、
場合によっては料金を払わなければならないのです。
極論すれば、JSP 仕様は実は Sun が所有する製品であるということになります。
</p>

<p>
ここで重要なこととして、この文書の元の作者 (Jon Stevens) は Servlet とJSP の仕様を
策定する JSR-053 のメンバーであることを注記しておきます。
</p>

<p>
JSR-053 の内部では、すべてがオープンになっていないことは明白ですし、
決定は密室で行われます。もちろん参加者が反対することは出来ますが、
それでも決定の背景には Sun の影響力があります。
</p>

</subsection>

<subsection name="第二の点: 複雑さ">

<p>
JSP は仕様であると同時に実装でもあります。
この仕様には、いろいろな企業（それにオープンソース）による実装があります。
JSP 仕様は、それほど簡単に実装できるものではありません。
関連する複雑なシステムがたくさんあり、その幾つかでは性能を最適化するために、
Servlet エンジンに特別な仕掛けさえ必要です。
</p>

<p>
JSP 仕様は比較的新しいです（まだ 1.x フェーズです）。つまり、
この仕様ではきちんと定義されていないところが何箇所もあり、
そうした箇所の個別の詳細の一部については実装にまかせられているということです。
これはつまり、多くの部分で間違いがあるだけでなく、JSP テンプレートコードが
実装によって動作が異なる可能性があるということです。
このことは、複数のコンテナにまたがる JSP ベースのアプリケーションをテストする際に、
悪夢を引き起こします。特に難解なバグ (極端な条件でのみ現れるバグ)
がコンテナによって発生したりしなかったりすると最悪です。
</p>

<p>
Jakarta プロジェクトを立ち上げ、Sun に Jasper (JSP の参照実装) のソースコードを
提供させた元々の理由の一つに、ソースコードの単一の基準を採用する
ようにベンダーを推奨することがありました。残念なことに、そうはなりませんでした。
互換性テストスイートはありますが、ベンダーがテストに合格することを
必須とする方針は決まっていません。
また、テストに合格しないベンダーを打ちのめすべく公にさらす場所もありません。
</p>

</subsection>

<subsection name="最後の点: Velocity">

<p>
Velocity がどんなものになるかは、このプロジェクトの開発者が決めます。
Velocity へのどんな変更点も既存のテンプレートをダメにしないことを確認する回帰テストで
使われる、包括的なテストスイートを開発者は作成しました。
もし、あなたやあなたの会社が Velocity の開発に参加し、
その方向性の決定に貢献したいのであれば、メーリングリストに加わって、
開発作業に貢献するだけでOKです。これはつまり、
どんな企業も Velocity の仕様を独占できないということであり、
Velocity ならどんな Servlet エンジンでも同じテンプレートが動作
するということでもあります。
</p>

</subsection>

<p>
[どちらを選ぶかは] あなたが判断してください。
</p>
<p>
<strong>[ <a href="ymtd-embedded.html">組み込みでの使用</a> &lt;- 前 | 
    次 -&gt; <a href="./ymtd-hosting.html">ホスティング</a> ]
</strong></p>

</section>

</body>
</document>
