Before we begin to examine specific issues in J2EE architecture, let's consider what we're trying to achieve. A well-designed J2EE app should meet the following goals. Note that while we're focusing on J2EE-based solutions, these goals apply to all enterprise apps:
Be robust
Enterprise software is important to an organization. Its users expect it to be reliable and bug-free. Hence we must understand and take advantage of those parts of J2EE that can help us build robust solutions and must ensure that we write quality code.
Depending on an app's business requirements, we may also need to meet the following goals:
Support for multiple client types
There's an implicit assumption that J2EE apps always need to support multiple J2EE-technology client types, such as web apps, standalone Java GUIs using Swing or other windowing systems or Java applets. However, such support is often unnecessary, as "thin" web interfaces are being more and more widely used, even for apps intended for use within an organization (ease of deployment is one of the major reasons for this).
Important |
The importance of the last two goals is a matter of business requirements, not a J2EE article of faith. We can draw a dividend of simplicity that will boost quality and reduce cost throughout a project lifecycle if we strive to achieve only goals that are relevant. |