<?xml version="1.0" encoding="UTF-8"?>

<document>
  
  <properties>
    <title>Velocity</title>
    <author email="velocity-dev@jakarta.apache.org">Velocity Documentation
      Team</author>
  </properties>
  
  <body>
    <section name="What is Velocity?" href="WhatisVelocity?">
      <p>Velocity is a Java-based template engine. It permits anyone to use a simple yet
        powerful template language to reference objects defined in Java code.</p>
      
      <p>Velocity is written in 100% pure Java and can be easily embedded into your own
        applications. It also provides easy integration into web applications through a
        servlet and tasks for using Velocity from
        <a href="http://ant.apache.org/">Apache Ant</a>.</p>
    </section>
    
    <section name="Where can Velocity be used?">
      <subsection name="Web based applications">
        <p> When Velocity is used for web development, Web designers can work in parallel with
          Java programmers to develop web sites according to the Model-View-Controller
          (MVC) model, meaning that web page designers can focus solely on creating a site
          that looks good, and programmers can focus solely on writing top-notch code.
          Velocity separates Java code from the web pages, making the web site more
          maintainable over its lifespan and providing a viable alternative to
          <a href="http://java.sun.com/products/jsp/">Java Server Pages</a> (JSPs) or
          <a href="http://www.php.net/">PHP</a>.</p>
      </subsection>
      
      <subsection name="Template based code and report generation">
        <p> Velocity's capabilities reach well beyond the realm of the web; for example, it
          can be used to generate SQL, PostScript and XML (see
          <a href="engine/anakia/">Anakia</a> for more information on XML
          transformations) from templates. It can be used either as a standalone utility for
          generating source code and reports, or as an integrated component of other
          systems.</p>
      </subsection>
      
      <subsection name="Framework Integration">
        <p> A huge number of other projects have Velocity integration either natively or
          through 3rd party add-ons. Some examples are:</p>
        
        <ul>
          <li>
            <a href="http://jakarta.apache.org/turbine/">Turbine</a> uses Velocity
            as its main view layer.</li>
          <li>
            <a href="http://struts.apache.org/">Struts</a> offers Velocity
            integration through a Velocity subproject called
            <a href="tools/">Velocity Tools</a>
            .</li>
          <li>
            <a href="http://www.springframework.org">Spring Framework</a> supports
            Velocity through its
            <code>VelocityConfigurer</code> and <code>VelocityViewResolver</code>.</li>
        </ul>
      </subsection>
    </section>

    <section name="How do I get started">
      <p>
        The Velocity engine subproject contains the documentation to get started using
        Velocity and embedding Velocity into your own applications. Please select either
        a <a href="releases/engine/">released version</a> to get started.
      </p>
    </section>
    
    <section name="Velocity subprojects">
      <p> Velocity currently consists of three subprojects:</p>
      
      <ul>
        <li>
          <a href="engine/">Velocity Engine</a>. This is the actual
          templating engine which does all the work. This subproject contains also the task
          definitions for using Velocity from
          <a href="http://ant.apache.org/">Apache Ant</a>.</li>
        <li>
          <a href="tools/">Velocity Tools</a>. This subproject contains
          tools and other useful infrastructure to build web- and non-web application using
          Velocity. You will find e.g. code for
          <a href="http://struts.apache.org/">Struts</a> integration or the
          standalone Velocity View Servlet here.</li>
        
        <li>
          <a href="dvsl/">Velocity DVSL</a>. DVSL
          (Declarative Velocity Style Language) is a tool modeled after XSLT and is intended
          for general XML transformations using the Velocity Template Language as the
          transformation language.</li>
      </ul>
    </section>
    
    <section name="What are the current releases and where do I get them?">

      <p>
        These are the current releases of all subprojects:
        <table>
          <tr><th>Project</th><th>Release Version</th><th>Development Version</th></tr>
          <tr><td>Engine</td><td><a href="releases/engine/1.4/">1.4</a></td><td><a href="engine/">1.5</a></td></tr>
          <tr><td>Tools</td> <td><a href="releases/tools/1.2/">1.2</a></td> <td><a href="tools/">1.3</a></td></tr>
          <tr><td>DVSL</td>  <td>-</td>                                     <td><a href="dvsl/">1.0</a></td></tr>
        </table>
     </p>
      
      <p> The release distribution is available as a combined source/binary distribution in
        <code>tar.gz</code> and
        <code>zip</code> formats, and can be downloaded through the
        <a
          href="http://jakarta.apache.org/site/downloads/downloads_velocity.cgi">
          Apache Mirror system</a>.</p>
      
      <p> The Velocity jars are also available through the
        <a href="http://www.ibiblio.org/maven/velocity/">central Maven
          repository</a>.</p>
      
      <p> Older releases are archived at the
        <a href="http://archive.apache.org/dist/jakarta/velocity/">Jakarta
          Velocity archives</a>.</p>
      
    </section>
    
    <section name="Where do I get nightly snapshots?"
      href="WheredoIgetnightlysnapshots?">
      
      <p> Nightly snapshots of the source code for all subprojects can be found
        <a href="http://svn.apache.org/dist/jakarta/velocity/nightly/"> here</a>.<br/>
      
        They are meant to provide easy access to the project source code if you are located
        behind a firewall or don't want to deal with a subversion client and
        are created automatically from the Subversion repository.<br/>As
        this is our live development workspace, there are no guarantees as to what you will
        find there, although we do our best to maintain a buildable source tree. If you are
        looking for the stable supported release, please use <a href="releases/">a released
        version</a>.</p>
      
      <p> If you are willing to risk getting dirty, we invite you to try the nightly snapshot to
        see the current state of affairs. (and help out!)
        <a href="http://www.apache.org/dev/version-control.html">Public Subversion
          access</a> is also available.</p>
      
    </section>
    
    <section name="How do I contribute, give feedback, fix bugs and so on?"
      href="HowdoIcontribute,givefeedback,fixbugsandsoon?">
      
      <p> The Velocity project appreciates any contributions, including documentation
        help, source code and feedback. Suggested changes should come in the form of source
        code and/or feedback.</p>
      
      <ul>
        <li> Report bugs, ask questions, and help new users on the
          <a href="mail-lists.html"> Velocity
            mailing lists</a>.</li>
        
        <li> There's a list of issues waiting to be addressed in
          <a href="http://issues.apache.org/jira/browse/VELOCITY"> JIRA</a>.</li>
        
        <li>
          <a href="http://wiki.apache.org/jakarta-velocity/FrontPage"> Our Wiki</a>
          has a large collection of community written content. Add your own article or
          contribute to the FAQ! </li>
        <li> Read-only access to the Subversion
          <strong>jakarta-velocity</strong> repository is available both
          <a href="http://svn.apache.org/repos/asf/jakarta/velocity/">
            online</a> and with a
          <a href="http://www.apache.org/dev/version-control.html"> Subversion
            client</a>.</li>
      </ul>
      
    </section>
  </body>
</document>
