<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html>
  <head>
    <title>Apache Velocity - Velocity</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <link rel="alternate" href="http://feeds.feedburner.com/ApacheVelocitySiteNews" type="application/rss+xml" title="Apache Velocity - Velocity News" />
          <meta name="author" content="Velocity Documentation Team" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../../" id="bannerLeft">
    
                                            <img src="images/velocity_project_wide.png" alt="" />
    
            </a>
                          <span id="bannerRight">
    
                                            <img src="images/velocity-logo.png" alt="" />
    
            </span>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
    
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../../">Velocity</a>
              &gt;
      
          Velocity Engine
                </div>
            <div class="xright">      <a href="../../devel/">Engine</a>
          |
          <a href="../../../tools/devel/">Tools</a>
          |
          <a href="../../../anakia/devel/">Anakia</a>
          |
          <a href="../../../texen/devel/">Texen</a>
          |
          <a href="../../../docbook/">DocBook</a>
          |
          <a href="../../../dvsl/devel/">DVSL</a>
          
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
    
                   <h5>Velocity</h5>
        <ul>
              
    <li class="none">
              <strong>General</strong>
        </li>
              
    <li class="none">
              <a href="overview.html">Overview</a>
        </li>
              
    <li class="none">
              <a href="getting-started.html">Getting Started</a>
        </li>
              
    <li class="none">
              <a href="webapps.html">Web Applications</a>
        </li>
              
    <li class="none">
              <a href="../../../download.cgi">Download</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/VelocityFAQ">FAQ (Wiki)</a>
        </li>
          </ul>
          <h5>Docs</h5>
        <ul>
              
    <li class="none">
              <a href="user-guide.html">User Guide</a>
        </li>
              
    <li class="none">
              <a href="developer-guide.html">Developer Guide</a>
        </li>
              
    <li class="none">
              <a href="vtl-reference-guide.html">VTL Reference</a>
        </li>
              
    <li class="none">
              <a href="glossary.html">Glossary</a>
        </li>
          </ul>
          <h5>Developers</h5>
        <ul>
              
    <li class="none">
              <a href="license.html">License</a>
        </li>
              
    <li class="none">
              <a href="apidocs/index.html">Javadoc</a>
        </li>
              
    <li class="none">
              <a href="changes-report.html">Changes</a>
        </li>
              
    <li class="none">
              <a href="jira-report.html">Resolved Issues</a>
        </li>
              
    <li class="none">
              <a href="upgrading.html">Upgrading</a>
        </li>
              
    <li class="none">
              <a href="jar-dependencies.html">Dependencies</a>
        </li>
              
    <li class="none">
              <a href="http://svn.apache.org/viewvc/velocity/engine/trunk/">Source Code Repository</a>
        </li>
              
    <li class="none">
              <a href="build.html">Building from Source</a>
        </li>
          </ul>
          <h5>Community</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/">Wiki</a>
        </li>
              
    <li class="none">
              <a href="../../../news.html">Recent News</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/PoweredByVelocity">Powered By Velocity</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/VelocityEditors">IDE/Editor Plugins</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/PublishedArticlesAndBooks">Articles and Books</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/GetInvolved">Get Involved</a>
        </li>
              
    <li class="none">
              <a href="../../../contact.html">Mailing Lists</a>
        </li>
          </ul>
          <h5>Velocity Development</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/RoadMap">Road Map</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/CodeStandards">Coding Standards</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/DocumentationGuidelines">Documentation Guidelines</a>
        </li>
              
    <li class="none">
              <a href="https://issues.apache.org/jira/browse/VELOCITY">Issues</a>
        </li>
              
    <li class="none">
              <a href="../../../who-we-are.html">Who we are</a>
        </li>
          </ul>
          <h5>Translations</h5>
        <ul>
              
    <li class="none">
              <a href="http://www.jajakarta.org/velocity/">Site (Japanese)</a>
        </li>
              
    <li class="none">
              <a href="translations/user-guide_fi.html">User's Guide (Finnish)</a>
        </li>
              
    <li class="none">
              <a href="translations/user-guide_fr.html">User's Guide (French)</a>
        </li>
              
    <li class="none">
              <a href="translations/user-guide_es.html">User's Guide (Spanish)</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-reports.html">Project Reports</a>
              </li>
          </ul>
                                             
                        
                        
                        <a class="poweredBy" href="../../../" title="Apache Velocity" ><img class="poweredBy" alt="Apache Velocity" src="images/pbv90x30.png" /></a>
                                
                        
                        
                        <a class="poweredBy" href="../../../rss/news.rss" title="Velocity News Feed" ><img class="poweredBy" alt="Velocity News Feed" src="images/feed-icon-24x24.jpg" /></a>
                    
       <iframe src="http://www.apache.org/ads/buttonbar.html"
               style="border-width:0; float: left" frameborder="0" scrolling="no"
               width="135"
               height="265" ></iframe>

           
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2><a name="What_is_Velocity"></a>
What is Velocity?</h2>
<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> 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 class="externalLink" href="http://java.sun.com/products/jsp/">Java Server Pages</a>
 (JSPs) or
        <a class="externalLink" href="http://www.php.net/">PHP</a>
. </p>
<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="anakia.html">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.
        For instance, Velocity provides template services for the
        <a class="externalLink" href="http://jakarta.apache.org/turbine/">Turbine</a>
 web application
        framework, together resulting in a view engine facilitating development of web
        applications according to a true MVC model. </p>
</div>
<div class="section"><h2><a name="Where_do_I_get_releases"></a>
Where do I get releases?</h2>
<p> The current stable release version is version 1.6.1. </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 class="externalLink" href="http://velocity.apache.org/download.cgi">
          Apache Mirror system</a>
. </p>
<p> The Velocity jars are also available through the
        <a class="externalLink" href="http://repo1.maven.org/maven2/org/apache/velocity/">central Maven
          repository</a>
. </p>
<p> Older releases are archived at the
        <a class="externalLink" href="http://archive.apache.org/dist/velocity/engine/"> Apache
          Velocity archives</a>
. </p>
</div>
<div class="section"><h2><a name="Where_do_I_get_nightly_snapshots"></a>
Where do I get nightly snapshots?</h2>
<p> Nightly snapshots of the Velocity subversion source code tree can be found
        on our <a class="externalLink" href="http://vc.apache.org/snapshots/velocity/">nightly snapshot site</a>
. </p>
<p><b>Caveat!</b>
 These snapshots are generated automatically from the project source code repository. 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 the current release of
        Velocity. </p>
<p><b>Please be aware that these snapshots are not official
     releases of Apache Velocity software. They are provided for
     developer convenience only!</b>
</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 class="externalLink" href="http://www.apache.org/dev/version-control.html">Public Subversion
          access</a>
 is also available. </p>
</div>
<div class="section"><h2><a name="How_do_I_contribute_give_feedback_fix_bugs_and_so_on"></a>
How do I contribute, give feedback, fix bugs and so on?</h2>
<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 class="externalLink" href="http://velocity.apache.org/contact.html"> Velocity
            mailing lists</a>
. </li>
<li> There's a list of issues waiting to be addressed in
          <a class="externalLink" href="https://issues.apache.org/jira/browse/VELOCITY">our bug tracker</a>
. </li>
<li><a class="externalLink" href="http://wiki.apache.org/velocity/velocity"> 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 repository is available both
          <a class="externalLink" href="http://svn.apache.org/repos/asf/velocity/engine/trunk/">
            online</a>
 and with a
          <a class="externalLink" href="http://www.apache.org/dev/version-control.html"> Subversion
            client</a>
. </li>
</ul>
</div>

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2000-2008
    
          The Apache Software Foundation
          
  

  
    
  
  
    
             Last Published: 2008-12-15 08:38:22
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
