The contents of this book are broken up into four logical parts:
Part I: Adaptive Processes
Chapter 1: A J2EE Adaptive Foundation. This chapter introduces the concepts behind the creation of an adaptive foundation for rapid development.
Chapter 2: Rapid Application Development. Techniques commonly associated with the rapid development of software, including rapid development languages, approaches to prototyping, and timeboxed development methods, are described in this chapter.
Chapter 3: Embracing Adaptive Methods. Chapter 3 explores the importance of lightweight development methodologies that incorporate an iterative approach to building software.
Part II: Agile Architectures
Chapter 4: Designing for Rapidity. This chapter looks at how the choices we make at design time have implications for the project's timeframe.
Chapter 5: Modeling Software. The topic of this chapter is the use of models for building software architectures, and it examines how UML diagrams enable the communication, validation, and exploration of system designs.
Chapter 6: Code Generation. We discuss the merits of passive and active code generation. The use of XDoclet for generating boilerplate code artifacts for Enterprise JavaBeans is illustrated by example, along with the use of Apache's Velocity template engine.
Chapter 7: Rapidity and the Database. The repetitive nature of data access code makes it a prime candidate for code generation. This chapter looks at the time savings to be had from the use of the code generation tool Middlegen, as well as at how object-relational mapping products can ease the process of mixing object-oriented technology with that of relational database technology.
Chapter 8: Model-Driven Architecture. This chapter brings together models with code generation techniques to explore the MDA paradigm. The use of the open source MDA tool AndroMDA is covered by example.
Part III: Rapid Languages
Chapter 9: Scripting. This chapter looks at the benefits of scripting languages and introduces the Java-compatible scripting language Jython.
Chapter 10: Working to Rule. This chapter examines the benefits of using rule engines to maintain business logic. The open source, expert system shell Jess is introduced as an example of a rule-based language.
Chapter 11: Aspect-Oriented Programming. AOP provides new language constructs for modularizing crosscutting concerns. The result is a powerful mechanism for applying changes dynamically to an application. This chapter introduces the AOP language AspectJ and the AOP framework AspectWerkz.
Part IV: Dynamic Environments
Chapter 12: Optimal Builds. Chapter 12 addresses the importance of having a highly efficient and optimized build process in place for conducting rapid development.
Chapter 13: The Integrated Development Environment. We examine the need to invest in sophisticated and integrated development tools. The open source developer's workbench Eclipse is introduced as an example of a suitable J2EE development environment.
Chapter 14: Test-Driven Development. The practice of test-driven development is key to defining an approach that is resilient to changing requirements and designs. This chapter looks at the importance of constructing an automated unit test suite and covers the JUnit framework for writing unit tests as well as the use of mock objects in testing.
Chapter 15: Efficient Quality Assurance. The final chapter looks at using automated testing tools for undertaking functional and performance testing. The open source tools HttpUnit and Apache JMeter are covered by example.