---
layout: default
title: Announcements 2002
---

<h1>Announcements - 2002 and prior</h1>

<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>

<p class="pull-left">
  <strong>Next:</strong>
  <a href="kickstart.html">Kickstart FAQ</a>
</p>
