Web applications are ubiquitous. (X)HTML-based web interfaces are the preferred front-end choice, not only for public Internet applications, but for many Intranet applications. Although the return of the thick (or rich or fat) client has been predicted for some years, most Java enterprise applications continue to adopt web-based user interfaces, and this is unlikely to change in the near future.
Many J2EE applications are dedicated web applications by their very nature. While this is hardly a revelation, classic J2EE architecture guidelines ignore its implications, in that they still proclaim distributed components as the cornerstone of any J2EE application. A typical J2EE web application demands for a clean architecture built on lightweight logical layers rather than (potentially) physically separated layers.
In previous chapters, we've emphasized the importance of reusable business interface layers. In a well-designed J2EE application, the business interface layer should be completely independent of the kinds of clients that will use it. In business-logic-driven applications, the business layer and underlying resource layers can often be developed and tested before the user interface(s), even before the choice of a particular user-interface technology.
Mixing various access technologies within the same application should pose no problem for a well-designed application, as we have already seen in Chapter 11 (Remoting) when we exposed business facades as ...