<?xml version="1.0" encoding="Shift_JIS" ?>
<document>

  <properties>
    <author email="jon@latchkey.com">Jon S. Stevens</author>
    <title>You make the decision - Embedded Usage</title>
    <translator>熊坂祐二</translator>
    <translator>高橋達男</translator>
    <original>ymtd/ymtd-embedded</original>
  </properties>

<body>

<section name="組み込みでの使用">

<p>
これは、アプリケーション内で Velocity を使用する例です。
</p>

<source><![CDATA[
    OutputStreamWriter writer = new OutputStreamWriter(output, encoding);
    Template template = RunTime.getTemplate(filename);
    template.merge( context, writer );
]]></source>

<p>
上記のコードは以下のように翻訳できます。
</p>

<ol type="1" start="1">
	<li>Writer を作成する</li>
	<li>Velocity に実行時の Template の評価をさせる</li>
	<li>テンプレートとコンテキストをマージする</li>
</ol>

<p>
Velocity テンプレートは、<b>どんな</b>タイプのデータでも含むことができます。
XML、SQL、HTML、普通のテキスト、国際化されたテキスト…何でも可能です。
パーサは、必要なものだけを解析して、それ以外は無視するという点で非常に頑強です。
上で示したように、どんな Java コードにでも Velocity のテンプレートエンジンを
組み込むことができます。
この利点は、どんな用途でもユーザに単独のテンプレートシステムを提供できるということです。
</p>

<p>
例えば、J2EE Web サイトの<a
href="http://java.sun.com/j2ee/blueprints/sample_application/index.html">ペットショップサンプル</a>には、注文が完了したとき、確認メールを送る JavaBean があります。
このサンプルで残念なのは、メールの内容を変更するためには、
Java コードを編集する必要があるという点です。
もちろんこのサンプルは、基本フォーマットとして JSP ベースのテンプレートを使えば、
別のやり方で実装できます。
しかし、引数として処理対象のテンプレートをとることができるコンテキスト内に
<a href="http://cvs.apache.org/viewcvs/jakarta-turbine-2/src/java/org/apache/turbine/util/velocity/">Javaオブジェクト</a>をただ作成するのに比べると、その実装は難しいです。
</p>

<p>
もう一つの例としてあげるのは、Velocity が組み込まれている
<a href="../texen.html">Texen</a> と <a href="../anakia.html">Anakia</a>
というツールです。
その利点はやはり、Velocity を、Web アプリケーションに限定されることなく、
他の便利なアプリケーションを生み出すための埋め込みツールとして使えることです。
同じことは、JSP エンジンでもたぶん可能ですが、ずっと難しいでしょう。
</p>

<p>
[どちらを選ぶかは] あなたが判断してください。
</p>

<p>
<strong>[ <a href="ymtd-taglibs.html">Taglibs</a> &lt;- 前 | 
    次 -&gt; <a href="./ymtd-implementation.html">実装</a> ]
</strong></p>

</section>

</body>
</document>
