<?xml version="1.0"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you 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.
-->

<document>

  <properties>
    <title>Apache Turbine&#8482;</title>
  </properties>

<body>

<section name="Apache Turbine&#8482; Web Application Framework">

  <p>
    Apache Turbine&#8482; is a servlet based framework that allows experienced Java
    developers to quickly build web applications. Turbine allows you
    to use personalize the web sites and to use user logins to restrict
    access to parts of your application.
  </p>

  <p>
    Turbine is a matured and well established framework that is used as
    the base of many other projects (like e.g. the excellent <a
    href="https://portals.apache.org/jetspeed-1/">Jetspeed 1 (Retired)</a>
    Portals framework.
  </p>

  <p>
    Turbine is an excellent choice for developing applications that make use of a
    services-oriented architecture. Some of the functionality
    provided with Turbine includes a security management system (decoupled in Fulcrum Security), a
    scheduling service (decoupled in Fulcrum Quartz), XML-defined form validation server (Fulcrum Intake),
    and an XML-RPC service for web services.  It is a
    simple task to create new services particular to your application.
  </p>

  <p>
    The Turbine core is free of any dependency on a presentation layer
    technology. Both JavaServer Pages (JSP) and
    <a href="http://velocity.apache.org/engine/">Velocity</a> are supported
    inside Turbine.  For developers already familiar with JSP, or have
    existing JSP tag libraries, Turbine offers support for the Sun standard.
    <strong>Velocity</strong> is the favorite view technology of most users of the Turbine
    framework; try it out and see if Velocity can help you develop your
    web applications faster and work more easily with non-programming designers.   
  </p>

  <p>
    Turbine is developed in an open, participatory environment and
    released under the <a href="common/license.html">Apache
    Software License</a>. Turbine is intended to be a collaboration of the
    best-of-breed developers from around the world.  We invite you to
    participate in this open development project.  To learn more about getting
    involved, <a href="how-to-help.html">look at our &quot;How to Help&quot; pages</a>.
  </p>
  
  <subsection name="Integration Hints: JS, JSON, REST">
   <p> Modelling on the client side with JS-frameworks like KnockoutJS or Vue.JS is supported of course. You may use the provided XML-RPC service,
    simple Velocity context or Fulcrum JSON utilities.
    You may even want to skip (almost) the entire (server) view part and decide to use just REST-API libraries (Javax.ws.rs, Jersey). 
    As an example consider registering an JSON Fulcrum service returning a default (Jackson) ObjectMapper object, which may be resolved by a
    javax.ws.rs context Provider.
    For now no custom security integration is yet provided, but this may be done with web-token or any other token based authentification system 
    or annotation based.
    </p>
  </subsection>

</section>

<section name="Turbine Versions">
  <p>
    Turbine is since version 4.0 developed in a single master/branch.
  <ul>
  <li><strong><a href="turbine/development/turbine-5-2/">Turbine 5.2</a></strong> is  the current development master.
    </li>
  
   <li><strong><a href="turbine/development/turbine-5-1/">Turbine 5.1</a></strong> is
    is a highly backward compatible version of 5.0. Download it from <a href="https://www.apache.org/dyn/closer.cgi/turbine/turbine-5.1/">Apache Mirrors</a>.
    </li>
   
    <li><strong><a href="turbine/turbine-5-0/">Turbine 5.0</a></strong> is using Servlet 3.1, Java 8, Log4J2, Velocity 2. It is already used in some live applications,
     download it from one of the <a href="https://www.apache.org/dyn/closer.cgi/turbine/turbine-5.0/">Apache Mirrors</a>.
    </li>
   
    <li><strong><a href="turbine/turbine-4-0/">Turbine 4.0</a></strong> should be used only, if starting a project restricted 
    with Java 7. Download it from one of the 
    <a href="https://www.apache.org/dyn/closer.cgi/turbine/turbine-4.0/">Apache Mirrors</a>.
    Turbine 4.0 uses technologies like an <a href="http://avalon.apache.org/">
    Avalon-based</a> container and decoupled components from the
    <strong><a href="fulcrum/">Fulcrum</a></strong> sub-project of Turbine (most of the benefits of
    these enhancements are realized in the
    <a href="turbine/turbine-2-3.3/">2.3.3</a> release). One significant
    change in 4.0 is the introduction of a pipeline concept that allows you to define
    via <strong>XML</strong> all the stages for processing a request.
    </li>
    
    <li><strong><a href="turbine/turbine-2-3-3//">Turbine 2.3.3</a></strong> is 
    the version you should use when migrating from an older version of
    Turbine.  The 2.3 branch of Turbine has been switched to maintenance mode, however. 
    You can download Turbine 2.3.3 from one of the 
    <a href="https://www.apache.org/dyn/closer.cgi/turbine/turbine-2.3.3/">Apache Mirrors</a></li>
    
  </ul>
  </p>
</section>

<section name="Sub Projects">

<p></p>
<ul>
  <li>
    <a href="/fulcrum/">Fulcrum</a> components are by default in use since Turbine 4.x. It is a collection of services originally
    developed as part of Turbine, but now decoupled and usable in any environment
    that supports <a href="https://attic.apache.org/projects/avalon.html">Avalon</a> components. 
  </li>
</ul>
</section>

<section name="Turbine Alumni">

<p>
 As a longtime, but now ex-member of the <a href="http://attic.apache.org/projects/jakarta.html">Apache Jakarta Project (before 2018)</a> 
 (<a href="https://jakarta.apache.org/">old address</a>*), Turbine has influenced quite a number of projects:
</p>
<ul>
  <li>
    <a href="https://db.apache.org/torque/">Torque</a> is a persistence
    layer originally developed as part of Turbine.  Torque is now
    decoupled and part of the <a href="http://db.apache.org/">Apache Database Project</a>.
  </li>
  <li>
    <a href="https://maven.apache.org/">Maven</a> is an advanced Java
    Project Management tool originally developed out of the frustration with the
    Turbine build process. Maven is now a toplevel Apache project, residing at <a
    href="https://maven.apache.org/">maven.apache.org</a>.
  </li>
  <li>
    In addition, Turbine has spawned a number of <a href="http://commons.apache.org/">Commons</a>
    components like <a href="https://commons.apache.org/configuration/">Commons configuration</a> or
    <a href="https://commons.apache.org/email/">Commons EMail</a>.
  </li>
</ul>
* Note: Be aware, that <a href="https://jakarta.ee/about/">Jakarta EE</a> is since 2019 
 used as a brand label for the Java EE Cloud Native project.
</section>

<section name="The Apache Software Foundation">
<p>
The <a href="https://www.apache.org">Apache Software Foundation</a> provides support for the 
Apache community of open-source software projects. The Apache projects are defined by 
collaborative consensus based processes, an open, pragmatic software license and a desire 
to create high quality software that leads the way in its field.
</p>
<p> 
Apache Turbine, Turbine, Apache, the Apache feather logo, and the Apache Turbine project logo
are trademarks of The Apache Software Foundation.
</p>
<p>
All other marks mentioned may be trademarks or registered trademarks of their respective 
owners.
</p>
</section>
</body>
</document>
