Sooner or later, every software developer has the opportunity to build a rich client using Swing, Delphi, C++, or one of Microsoft's user interface (UI) programming languages. It quickly becomes obvious that the development of these applications is wholly different than working on an application intended to run within a web browser. The differences are many, but one of the biggest standouts is the lack of readily available UI components for web applications.
With the advent of MVC, the goal of separating application logic from the presentation of the business data has become a well-accepted design practice. While greatly improved development environments such the frameworks discussed throughout this book (along with technologies such as Java servlets and JSPs) have aided developers who build browser-based applications, other technologies are continually emerging. When building applications whose purpose is to solve a "real-world" business problem, your chance of beating your competitors to the marketplace is very closely tied to the ability to develop applications that are faster, better, and cheaper.
This chapter presents an overview of one of the next-generation technologies that is attracting much attention largely because of its promise to do things faster, better, and maybe even cheaper. As with many other software development topics, entire books are being written on the topic, so we'll focus on how this new technology integrates with Struts and leave the details for another book.