<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright 1999-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->


<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

                                                    <meta name="author" value="Velocity Documentation Team">
            <meta name="email" value="jvanzyl@zenplex.com">
            
           
                                    
                        
            <title>Velocity - Velocity Design</title>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#525D76">        
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align="left">
<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" border="0"/></a>
</td>
<td align="right">
<a href="http://jakarta.apache.org/velocity/"><img src="./images/logo.gif" alt="Velocity" border="0"/></a>
</td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </td></tr>
                
                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="true">
                    
    <!-- ============================================================ -->

                <p><strong>About</strong></p>
        <ul>
                    <li>    <a href="./index.html">Overview</a>
</li>
                    <li>    <a href="./getting-started.html">Getting Started</a>
</li>
                    <li>    <a href="http://jakarta.apache.org/builds/jakarta-velocity/">Download</a>
</li>
                    <li>    <a href="./install.html">Install</a>
</li>
                    <li>    <a href="./design.html">Design</a>
</li>
                    <li>    <a href="./contributors.html">Contributors</a>
</li>
                    <li>    <a href="./changes.html">ChangeLog</a>
</li>
                    <li>    <a href="./code-standards.html">Coding Standards</a>
</li>
                    <li>    <a href="./license.html">License</a>
</li>
                    <li>    <a href="./todo.html">TODO</a>
</li>
                    <li>    <a href="http://issues.apache.org/bugzilla/enter_bug.cgi?product=Velocity">Report Issues</a>
</li>
                </ul>
            <p><strong>Community</strong></p>
        <ul>
                    <li>    <a href="./powered.html">Powered By Velocity</a>
</li>
                    <li>    <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a>
</li>
                    <li>    <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
</li>
                    <li>    <a href="http://jakarta.apache.org/site/cvsindex.html">CVS Repositories</a>
</li>
                </ul>
            <p><strong>Docs</strong></p>
        <ul>
                    <li>    <a href="./user-guide.html">User's Guide (English)</a>
</li>
                    <li>    <a href="./user-guide_fi.html">User's Guide (Finnish)</a>
</li>
                    <li>    <a href="./user-guide_fr.html">User's Guide (French)</a>
</li>
                    <li>    <a href="./user-guide_es.html">User's Guide (Spanish)</a>
</li>
                    <li>    <a href="./developer-guide.html">Developer's Guide</a>
</li>
                    <li>    <a href="./vtl-reference-guide.html">VTL Reference Guide</a>
</li>
                    <li>    <a href="./specification.html">Specification</a>
</li>
                    <li>    <a href="./api/index.html">Javadoc</a>
</li>
                </ul>
            <p><strong>Tools</strong></p>
        <ul>
                    <li>    <a href="./tools/index.html">Velocity Tools</a>
</li>
                    <li>    <a href="./anakia.html">Anakia : XML->doc tool</a>
</li>
                    <li>    <a href="./texen.html">Texen : text generation</a>
</li>
                    <li>    <a href="./dvsl/index.html">DVSL : XML xformation</a>
</li>
                    <li>    <a href="./veltag.html">Veltag : JSP taglib</a>
</li>
                    <li>    <a href="./migration.html">Migration to Velocity</a>
</li>
                    <li>    <a href="./devtools.html">Editors and IDEs</a>
</li>
                </ul>
            <p><strong>Comparisons</strong></p>
        <ul>
                    <li>    <a href="./ymtd/ymtd.html">YMTD</a>
</li>
                    <li>    <a href="./differences.html">VM/WM Differences</a>
</li>
                    <li>    <a href="./casestudy1.html">JSP vs. Velocity</a>
</li>
                    <li>    <a href="./casestudy2.html">XMLC vs. Velocity</a>
</li>
                </ul>
            <p><strong>Site Translations</strong></p>
        <ul>
                    <li>    <a href="http://jakarta.apache.org/velocity/">English</a>
</li>
                    <li>    <a href="http://www.ingrid.org/jajakarta/velocity/velocity-1.2-rc2/docs-ja/index.html">Japanese</a>
</li>
                </ul>
                        </td>
                    <td width="80%" align="left" valign="top">
                                                                    <table border="0" cellspacing="0" cellpadding="2" width="100%">
      <tr><td bgcolor="#525D76">
        <font color="#ffffff" face="arial,helvetica,sanserif">
          <a name="Design"><strong>Design</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
    Velocity is a Java-based template engine. It can be used as a
    standalone utility for generating source code, HTML, reports,
    or it can be combined with other systems to provide template
    services. Velocity will be tightly integrated with the
    <a href="http://java.apache.org/turbine">Turbine</a>
    web application framework. Velocity-Turbine
    provide a template service by which web applications may be
    developed according to a true MVC model.
 </p>
                                                <p>
    Velocity has a myriad of potential uses -- generating SQL, PostScript,
    or Java source code from templates -- but web developers looking for
    a viable alternative to
    <a href="http://www.php.net/">PHP</a> and
    <a href="http://java.sun.com/products/jsp/">Java
    Server Pages</a> (JSPs) are expected to be its principle user group.
 </p>
                                                <p>
    Velocity allows web page designers to embed simple yet powerful script
    elements in their web pages. These script elements work
    in conjunction with a Context object, which is defined in Java code.
    A context object--essentially a hashtable that provides get and set
    methods for retrieving and setting objects by name within the Context
    --provides a "hook" from the Java code to the Velocity script
    elements. These script elements allow a web designer to retrieve
    objects from the Context and insert these into a web page as text
    values. The web designer has some control over looping (for each)
    and conditional statements (if/else).
 </p>
                                                <p>
    Velocity enforces a Model-View-Controller (MVC) style of development
    by separating Java code from HTML template code. Unlike JSPs,
    Velocity does not allow Java code to be embedded in pages. Unlike PHP,
    Velocity does not implement features with other functions. The MVC
    approach is one of Velocity's great strengths, and allows for more
    maintainable and better-designed web pages.
 </p>
                                                <p>
    Although MVC-style development can sometimes lead to longer incubation
    periods for web sites, particularly if the developers involved are new
    to MVC, this approach saves time over the long term (believe us, we have
    been doing this for a long time now). The MVC abstraction prevents web page
    designers from messing with a software engineer's Java code, and
    programmers from unduly influencing the look of web sites. Velocity enforces
    a contract that defines what roles people play in the web site development
    process.
 </p>
                                                <p>
    Velocity uses a grammar-based parser generated by
    <a href="http://www.metamata.com/javacc/">JavaCC</a> (Java Compiler
    Compiler) using the JJTree extension to create an Abstract Syntax Tree.
 </p>
                                                <p>
    Velocity's design concept is borrowed from <a href="http://www.webmacro.org/">WebMacro</a>. Those involved in the
    Velocity project acknowledge and appreciate the development and design work
    that went into the WebMacro project.
 </p>
                            </blockquote>
        </p>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#525D76" size="-1"><em>
                    Copyright &#169; 1999-2004, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
        </body>
    </html>
<!-- end the processing -->




















