An Introduction to Struts
"Bottom Line Benefits of MVC"
Remember the earlier definition that described a Framework as "A set of assumptions, concepts, values, and practices that constitutes a way of viewing reality?" This is one of the most powerful benefits of the MVC pattern. It allows developers to think about (and design) complex applications as a series of relatively simple Model, View, and Controller components. This leads to better, more consistent, and more easily maintainable designs. In addition, it helps avoid the common pitfall of having each developer on a project choose a different approach for their work.
Case Study: Right Hand Manager Software
When Dennis Doubleday and others on his team at Right Hand Manager Software (http://www.righthandmanager.com) were evaluating how they wanted to do development, they decided right away that they wanted to use a framework that was based on the MVC design pattern. This decision came after having built a number of applications based on the J2EE platform. On previous projects, Dennis says "We spent a lot of time developing the re-usable framework and not our application."
- Struts performs well.
- Struts has a sound architectural model with a modest learning curve.
- Struts is very solid and stable.
- Struts has a strong set of custom tag libraries that simplify JSP development.
Also, according to Dennis, "Struts is very competitive technically, but to my mind the biggest advantages Struts has over competing technologies are practical." These features are:
- ongoing development by a large number of committed users/developers
- knowledgeable and responsive project leadership
- generally quick (and sometimes near-instant) problem resolution via the Struts mailing list or archives
- access to source code
- strong connection to and commitment to future integration with forward-looking technologies like JSTL and Java Server Faces
- increasing mind share that we expect will make it easier to hire new developers already familiar with the framework"
How have things worked out for them? Again, according to Dennis, "We are very happy with the way it is working out so far. There is very little burden on us to understand or implement the plumbing of our application; we simply create our Action and Form class extensions and our application Model beans."
Their results have been faster, more consistent development, and have excellent support. Plus, the platform they are building on is stable and constantly being improved. Oh—and by the way—it's free and you can get all the source code if you want it.
So, the question arises, should you consider adopting Struts? Of course, your answer depends on your particular circumstances and environment, but here are some criteria to consider:
- Are you using the J2EE platform (that is, developing applications using J2EE-compliant servers such as Weblogic Server, Websphere Application Server, Jakarta Tomcat, JBoss, iPlanet, and so forth)? If the answer to this is yes, Struts is likely worth considering.
- Do your developers have Java expertise? Although this isn't a "make or break" criterion, it helps. If your developers don't have Java experience but you are dedicated to moving to Java anyway, Struts may actually make the transition easier.
- Are you building applications that need to work in a Web browser? This is the niche that Struts fills. If the answer is no, Struts isn't for you. Unless you have requirements for browser-based application delivery, Struts won't add much value.
- Are you building applications now that use JavaServer Pages (JSP)? If so, you should definitely be looking at Struts. It may increase your developer productivity significantly.
- Is your development team considering building a "custom framework" for building Web-based applications? If so, ask them to justify not using Struts. Anything they would build on their own would likely not undergo near the amount of testing and development that Struts has. While they may have good reasons for not using it, Struts should definitely be on their radar.
To summarize, Struts is an application "Framework" for building Web-based applications in Java using the J2EE platform. Struts makes developers more productive by giving them prebuilt components to assemble applications from. Struts was built using industry best practices including the MVC design pattern and it can be deployed in a wide range of environments.
If you are using the Java/J2EE platform—and especially if you are currently developing applications using JavaServer Pages (JSP)—you should be considering Struts for the development of browser-based applications.
About the AuthorKevin Bedell has a degree in Engineering from Michigan Tech and an MBA from the Crummer Graduate School of Business at Rollins College. Portions of this article were adapted from material in his upcoming book for SAMS Publishing, Struts Kick Start (ISBN: 0-672-32472-5). A companion PowerPoint presentation suitable for presenting these ideas to a management group is available at http://www.strutskickstart.com.
Page 2 of 2