<!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/index.html">Engine</a>
          |
          <a href="../../../tools/devel/index.html">Tools</a>
          |
          <a href="../../../dvsl/devel/index.html">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="anakia.html">Anakia: XML->doc tool</a>
        </li>
              
    <li class="none">
              <a href="texen.html">Texen: text generation</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 in 1.5</a>
        </li>
              
    <li class="none">
              <a href="jira-report.html">Resolved Issues in 1.5</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/branches/Velocity_1.5_BRANCH/">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>
                    

           
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        

  

  

    <a name="what_is_velocity"></a><div class="section"><h2>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 href="http://java.sun.com/products/jsp/" class="externalLink">Java Server Pages</a> (JSPs) or
        <a href="http://www.php.net/" class="externalLink">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 href="http://jakarta.apache.org/turbine/" class="externalLink">Turbine</a> web application
        framework, together resulting in a view engine facilitating development of web
        applications according to a true MVC model. </p>

    </div>

    <a name="where_do_i_get_releases"></a><div class="section"><h2>Where do I get releases?</h2>

      <p> The current stable release version is version 1.5. </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://velocity.apache.org/download.cgi" class="externalLink">
          Apache Mirror system</a>. </p>

      <p> The Velocity jars are also available through the
        <a href="http://repo1.maven.org/maven2/org/apache/velocity/" class="externalLink">central Maven
          repository</a>. </p>

      <p> Older releases are archived at the
        <a href="http://archive.apache.org/dist/velocity/engine/" class="externalLink"> Apache
          Velocity archives</a>. </p>

    </div>

    <a name="where_do_i_get_nightly_snapshots"></a><div class="section"><h2>Where do I get nightly snapshots?</h2>

      <p> Nightly snapshots of the Velocity subversion source code tree can be found
        on our <a href="http://vc.apache.org/snapshots/velocity/" class="externalLink">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 href="http://www.apache.org/dev/version-control.html" class="externalLink">Public Subversion
          access</a> is also available. </p>

    </div>

    <a name="how_do_i_contribute_give_feedback_fix_bugs_and_so_on"></a><div class="section"><h2>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 href="http://velocity.apache.org/contact.html" class="externalLink"> Velocity
            mailing lists</a>. </li>

        <li> There's a list of issues waiting to be addressed in
          <a href="https://issues.apache.org/jira/browse/VELOCITY" class="externalLink">our bug tracker</a>. </li>

        <li>
          <a href="http://wiki.apache.org/velocity/FrontPage" class="externalLink"> 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 href="http://svn.apache.org/repos/asf/velocity/engine/trunk/" class="externalLink">
            online</a> and with a
          <a href="http://www.apache.org/dev/version-control.html" class="externalLink"> Subversion
            client</a>. </li>
      </ul>
    </div>
  

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2000-2007
    
          The Apache Software Foundation
          
  

  
    
  
  
    
             Last Published: 2007-03-06 19:34:55
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
