In this chapter we've considered some of the most important choices to be made in J2EE development projects, other than the architectural decisions we considered in . We've looked at:
How to choose an app server. One of the strengths of the J2EE platform is that it allows a choice of competing implementations of the J2EE specifications, each with different strengths and weaknesses. Choosing the appropriate app server will have an important influence on a project's outcome. We've looked at some of the major criteria in choosing an app server, stressing the importance of considering the specific requirements, rather than marketing hype. We've seen the importance of choosing an app server early in the project lifecycle, to avoid wasting resources getting up to speed with multiple servers. We've considered the issue of total cost of ownership, of which license costs are just a part.
As this is a practically focused tutorial, I haven't discussed choosing a development methodology, or deciding when one is required. However, this is another important choice. We've seen the importance of tackling risks early. I recommend using a methodology for J2EE development that emphasized this. Both the Rational Unified Process and Extreme Programming (XP) meet this requirement. Personally, I prefer "lightweight" or "agile" methodologies (see http://agilealliance.org/principles.html), although the degree of formality appropriate tends to increase the larger the project. I recommend the following resources as starting points for readers unfamiliar with these methodologies: The Unified Software Development Process from Oracle (), and http://www.extremeprogramming.org ("Extreme Programming: A Gentle Introduction").
In the next chapter we look at testing J2EE apps. Testing is an important concern throughout the software development lifecycle and is accorded particular importance in both these methodologies.