Struts is available free of charge and can be downloaded from the Apache Struts site at http://struts.apache.org/. Because Struts is open source, you have a couple of options when downloading the Struts framework software. You can download the software in binary, precompiled form or you can download the source code for compiling on your own. For most cases, the binary distribution will suffice; however, if you want to make changes to the Struts source code, the source distribution is available.
If you choose to download a binary distribution of Struts, you have a couple of options. You can download a released version of the code, which has been rigorously tested and certified as being of good quality, or you can download a nightly build of the code, which is less stable and not intended for production use. Opting to use a nightly build allows you to get access to the latest enhancements and bug fixes that have been made to the Struts framework ahead of an official release. However, it's important to point out again that nightly builds have no guarantee on quality because adding a new feature to Struts could potentially break another feature that has been stable for some time.
Similar to downloading a binary distribution of Struts, if you choose to download a source distribution, you have a couple of options. You can download the source for an officially released version of Struts or you can choose to get the "latest and greatest" version of the Struts source code directly from the Struts Subversion source control repository. Just as with the binary distribution, choosing to download the latest Struts source code can get you the newest enhancements and bug fixes to the software, but it may also have new bugs.
Since Struts is a Web application framework and not a stand-alone application, Struts distributions principally consist of the Struts API libraries and their associated files, such as Document Type Definitions (DTDs) for XML configuration files and JSP Tag Library Descriptor (TLD) files. Additionally, Struts comes with several sample Web applications that illustrate how to use the Struts framework. One of the sample Web applications, struts-blank-[strutsversion #].war (e.g., struts-blank-1.3.5.war), is typically used for new Struts applications because it provides a basic template for a Struts application, including all the necessary .jar files, and so on. Struts distributions also come with a sample Web application, struts-mailreader-[struts version #].war (e.g., struts-mailreader-1.3.5.war), that illustrates the basic structure of a Struts application.
Similar to the binary distribution, the source distribution consists of the Struts API libraries and sample Web applications. The major difference, however, is that all of the code for the libraries and sample applications is in source form. This is particularly useful for projects where the source code may need to be changed or where you may want access to the source code for debugging an application and so on.