<?xml version="1.0" encoding="Shift_JIS"?>
<document>

  <properties>
    <author email="jon@latchkey.com">Jon S. Stevens</author>
    <title>You make the decision - Hosting</title>
    <translator>熊坂祐二</translator>
    <original>ymtd/ymtd-hosting</original>
  </properties>

<body>

<section name="ホスティング">

<p>
JSPは、ホスティング環境には素晴らしいです（つまり：
ISPのものや、大きい会社での共有された開発環境では）ページをサーバーに置いている
多くの異なる種類の人々は、HTML以上のことは詳しく分からないかもしれません。
それがそれほど素晴らしいという理由の一部は、HTMLライクな構文で
JSPを学のは、とても簡単であるということです！
</p>

<p>
しかし、それがが更に詳細に本当にそのステートメントを見るならば、
これが良いそのようなものでないかもしれないことは明白になります。
Javaコードの以下の部分を考えてみてください：
</p>

<source><![CDATA[
    Hashtable strings = new Hashtable();
    int i=0;
    while (true)
    {
        strings.put ("dead"+i, new StringBuffer(999999));
    }
]]></source>

<p>
これは、Hashtableをつくって、それからきついループに入るというものです。
同時に、それは999999のデフォルトのサイズを持つ新しいStringBufferオブジェクトを作成します。
したがって、（ホスティングされたアプリケーションの全てで共有される）Java仮想マシンの
中にメモリリークを発生されることになります。
</p>

<p>
すべてのメモリが消費されてしまうとすぐに、あらゆる同一ホストのアプリケーションは
恐ろしい「OutOfMemoryError」を受け取り始めることになります。
これがどれほど悪いかの理由は、<a href="./ymtd-error-handling.html">以前に</a>すでに説明しました。
本質的に、JSPページは、
突然、発生する役に立たない、全てのひどく書かれたJavaコードの2、3の行に達することで
発生するエラーと全サーバーがそうすることになるOutOfMemoryErrorを捕捉することができません
</p>

<p>
覚えていてください、JavaコードをJSPページに入れることは悪い考えです。
本当に気にかけないあなたのISPのサーバーで、
ホスティングされている14才の子供に、その他がこれらの動きによって影響を受けるか
もしれないとそれに述べてください。
</p>

<p>
Velocityテンプレート言語には、whileループは無いので、Velocityにはこの問題がありません。
Velocityでの唯一のループ構造は、要素の有限の量を持つ配列の上の#foreachループだけです。
また、#foreachを使用不能にしたり、再帰的にネストする量を制限することも可能です。
注: Velocityを変更して、 #while指示をテンプレート言語に追加することは可能です。
</p>
<p>
JSPやStrutsにおいて、人々がページにJavaコードを埋め込むのを妨げる
ものは何もありません。
</p>

<p>
あなたが判断してください。
</p>

<p>
<strong>[ <a href="ymtd-implementation.html">実装</a> &lt;- 前 | 
    次 -&gt; <a href="./ymtd-conclusion.html">結論</a> ]
</strong></p>

</section>

</body>
</document>
