<?xml version="1.0"?>
<document>

  <properties>
    <title>Announcements</title>
  </properties>

<body>

<section name="Announcements">

    <h4 id="a20030630">30 Jun 2003 - Struts 1.1 Final released</h4>
    <p>
        The Struts team is proud, and extremely pleased, to announce the Final
        release of Struts 1.1. This release includes significant new
        functionality, as well as numerous fixes for bugs which were reported
        against the previous release, and supersedes the earlier 1.0.2 version
        as the latest official release of Struts from the Apache Software
        Foundation.
    </p>
    <p>The binary distribution is available at: <a href=
    "http://www.apache.org/dist/jakarta/struts/binaries/">
    http://www.apache.org/dist/jakarta/struts/binaries/</a> </p>
    <p>and the source distribution is available at: <a href=
    "http://www.apache.org/dist/jakarta/struts/source/">
    http://www.apache.org/dist/jakarta/struts/source/</a></p>
    <p>In addition, the library distribution, which contains updated binaries
       without the sample applications, is available at: </p>
    <p><a href="http://www.apache.org/dist/jakarta/struts/library/">
    http://www.apache.org/dist/jakarta/struts/library/</a> </p>
    <p>Details of the changes in this release are available in the Release
    Notes,which can be found here: </p>
    <p><a href=
    "http://jakarta.apache.org/struts/userGuide/release-notes-1.1.html">
    http://jakarta.apache.org/struts/userGuide/release-notes-1.1.html</a> </p>
    <hr/>

    <h4 id="a20030223">23 Feb 2003 - Struts 1.1 Release Candidate 1 Released</h4>
    <p>
        The Struts team is proud to announce the release of Struts 1.1 Release
        Candidate 1. This release includes some new functionality, as well as
        fixes for a number of bugs which were reported against earlier versions.
        The Struts Team believes that this release is ready for prime time, hence
        its designation as a release candidate.
    </p>
    <p>
        The binary distribution is available at:
    </p>
    <p>
        <a href="http://www.apache.org/dist/jakarta/struts/binaries/">
        http://www.apache.org/dist/jakarta/struts/binaries/</a>
    </p>
    <p>
        and the source distribution is available at:
    </p>
    <p>
        <a href="http://www.apache.org/dist/jakarta/struts/source/">
        http://www.apache.org/dist/jakarta/struts/source/</a>
    </p>
    <p>
        In addition, the library distribution, which contains updated binaries
        without the sample applications, is available at:
    </p>
    <p>
        <a href="http://www.apache.org/dist/jakarta/struts/library/">
        http://www.apache.org/dist/jakarta/struts/library/</a>
    </p>
    <p>
        Details of the changes in this release are available in the Release
        Notes, which can be found here:
    </p>
    <p>
        <a href="http://jakarta.apache.org/struts/userGuide/release-notes-1.1-rc1.html">
        http://jakarta.apache.org/struts/userGuide/release-notes-1.1-rc1.html</a>
    </p>
    <hr/>

    <h4 id="S20021231">31 Dec 2002 - Struts 1.1 Beta 3 Released</h4>
    <p>The Struts team is proud to announce the release of Struts 1.1 Beta 3. This
    release includes significant new functionality, while retaining full
    backwards compatibility with earlier versions of Struts. It also
    incorporates fixes for a number of bugs which were reported against earlier
    versions.
    </p>
    <p>
    The binary distribution is available at:
    </p>
    <p>
    <a href="http://www.apache.org/dist/jakarta/struts/binaries/">
    http://www.apache.org/dist/jakarta/struts/binaries/</a>
    </p>
    <p>
    and the source distribution is available at:
    </p>
    <p>
    <a href="http://www.apache.org/dist/jakarta/struts/source/">
    http://www.apache.org/dist/jakarta/struts/source/</a>
    </p>
    <p>
    In addition, the library distribution, which contains updated binaries
    without the sample applications, is available at:
    </p>
    <p>
    <a href="http://www.apache.org/dist/jakarta/struts/library/">
    http://www.apache.org/dist/jakarta/struts/library/</a>
    </p>
    <p>
    Details of the changes in this release are available in the Release Notes,
    which can be found here:
    </p>
    <p>
    <a href="http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b3.html">
    http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b3.html</a>
    </p>
    <hr/>

    <h4 id="a20020813">12 Aug 2002 - Struts 1.1 Beta 2 Released</h4>
    <p>The Struts team is proud to announce the release of Struts 1.1 Beta 2. This
    release includes significant new functionality, while retaining full
    backwards compatibility with earlier versions of Struts. It also
    incorporates fixes for a number of bugs which were reported against earlier
    versions.
    </p>
    <p>
    The binary distribution is available at:
    </p>
    <p>
    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/">http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/</a>
    </p>
    <p>
    and the source distribution is available at:
    </p>
    <p>
    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/src/">http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/src/</a>
    </p>
    <p>
    In addition, the library distribution, which contains updated binaries
    without the sample applications, is available at:
    </p>
    <p>
      http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b2/lib/
    </p>
    <p>
    Details of the changes in this release are available in the Release Notes,
    which can be found here:
    </p>
    <p>
      http://jakarta.apache.org/struts/userGuide/release-notes-1.1-b2.html
    </p>
    <hr/>

    <h4 id="a20020319">19 Mar 2002 - Struts 1.1 Beta 1 Released</h4>
    <p>
    The Struts team announces the release of Struts 1.1 Beta 1. This release
    includes substantial new functionality, while retaining full backwards
    compatibility with earlier versions of Struts. It also incorporates fixes
    for a number of bugs which were reported against earlier versions.
    </p>
    <p>
    The binary distribution for this release is available
    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/">
    <strong>here</strong></a>
    and the source distribution
    is available
    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/src/">
    <strong>here</strong></a>.
    In addition, a library distribution, which consists of a minimal
    binary distribution, without sample web applications or additional code, is
    available
    <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.1-b1/lib/">
    <strong>here</strong></a>.
    </p>
    <hr/>

    <h4 id="a20020211">11 Feb 2002 - Struts 1.0.2 Released</h4>
    <p>
    The Struts team announces the release of Struts 1.0.2. This release is a
    bug fix only release, which fixes a compatibility problem inadvertently introduced
    with the previous 1.0.1 release.
    </p>
    <p>
    The binary distribution for this release is available
    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/">
    <strong>here</strong></a>
    and the source distribution
    is available
    <a href="http://jakarta.apache.org/builds/jakarta-struts/release/v1.0.2/src/">
    <strong>here</strong></a>.
    In addition, a library distribution, which consists of a minimal
    binary distribution, without sample web applications or additional code, is
    available
    <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.2/lib/">
    <strong>here</strong></a>.
    </p>
    <hr/>

    <h4 id="a20020112">12 Jan 2002 - Struts 1.0.1 Released</h4>
    <p>
      The Struts team is proud to announce the release of Struts 1.0.1. This
      release is primarily a bug fix release, which fixes a number of known
      problems with the previous 1.0 release.
    </p>
    <p>
      The binary distribution for this release is available
      <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.1/">here</a>
      and the source distribution is available
      <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.1/src/">here</a>.
      In addition, a library distribution, which consists of a minimal binary distribution,
      without sample web applications or additional code, is available
      <a href="http://www.apache.org/dist/jakarta/jakarta-struts/release/v1.0.1/lib/">here</a>.
    </p>
    <hr/>


    <h4 id="a20010615">15 Jun 2001 - Struts 1.0 Released</h4>

<p>
The production release of Struts 1.0, an open source framework for building Web applications, is now available for download at jakarta.apache.org. Struts encourages application architectures based on the Model-View-Controller (MVC) pattern and provides services common
to most Web applications. Struts helps developers deploy products that are reliable, scaleable, and easier to maintain.
</p>

<p>
The Struts framework offers services in three primary areas:
</p>

<p>
* A controller servlet to dispatch requests to specific Action classes (provided by the application developer).<br/>
* JSP custom tags to help developers create interactive form-based applications.<br/>
* Utility classes for XML parsing, automatic JavaBean population, and internationalization of prompts and messages.
</p>

<p>
Struts' support for internationalization builds on top of the Java Locale API, and have made it a popular choice for applications worldwide. Struts contributors include developers from Australia, France, Russia, and other parts of the globe.
</p>

<p>
In addition to the Struts official distribution, several third-party libraries are already available, which offer enhanced support for JSP templates, HTML form validation, and automatic JavaBean creation. Struts has also been integrated with the Expresso Framework distributed by
JCorporate Ltd. (jcorporate.com).
</p>

<p>
Struts can be used with a J2EE Application server to deploy distributed applications, but will run under any compliant Servlet container (Servlet API 2.2+, JSP 1.1+), including Tomcat 3.2 or later. In fact, Struts is already used as an informal compliance test for Java Servlet
containers and J2EE Application servers
</p> 

<p>
The Struts project was founded in May 2000 by Craig McClanahan. McClanahan is also the lead developer of Tomcat 4.0, Sun's reference implementation for Java Servlet and ServerPage containers. Both Tomcat and Struts are open source available under the Apache Software License,
and may be downloaded at jakarta.apache.org.
</p>

<p>
Twenty-six independent developers contributed to the creation of Struts 1.0, with the help of over 1300 subscribers to the Struts mailing lists.<br/>
</p>

<hr />

</section>

    <section>
       <p class="right">Next:
       <a href="userGuide/index.html">User and Developer Guides</a>
       </p>
    </section>

</body>
</document>
