Foreword

Andrew Glover, President, Stelligent Incorporated

Designing, coding, and deploying working Java applications isn’t easy. Doing it in a predictable manner rapidly with an acceptable level of quality is even harder. In addition to having to understand what stakeholders want or the varying skills of team members or even the myriad web, data access, and utility frameworks one can choose from, you’ve got to actually manage the development process itself!

The coding of requirements is challenging enough, but as anyone who’s ever delivered a working application knows, in the grand scheme of things, that’s one sliver of the development process—in fact, some may say that’s the easiest part. Think about all the techniques and processes that aggregate up to produce a software application.

First, you’ve got to figure out how to deliver the working application in a predictable manner. At a high level, this means three things: tracking changes to source code assets, keeping up with any uncovered issues, defects, or feature requests, and assembling the application in a reliable and repeatable manner.

Next, you’re going to want to actually ensure the application under development actually works—ideally during development. This means writing tests early. Of course, this process is easier said than done. Although arguably there are few standard testing frameworks from which to chose, there is a cornucopia of associated tools that accelerate writing developer tests by addressing specific challenges.

What’s more, as the code base grows, you’ll probably want to understand what’s being coded and how well it’s being developed. Although tests cancertainly verify code functionality, you may also want lighter-weight tools that can report on various metrics, such as complexity, coding standards, or even the coverage of tests.

Of course, if you’ve got a mechanism for assembling your application in a repeatable and reliable manner, it makes sense to augment this process by running tests and even analysis tools. What’s more, given that you want to produce working code quickly, it makes sense to assemble the application often—in fact, assembling it continuously facilitates discovering issues as they arise.

Finally, you’re going to want to enable easy maintenance of the code base so that features can be added often—in the same rapid and repeatable manner that the application was built.

John has assembled what I think is the “A” list of tools and techniques that will help you meet each and everyone of the challenges above. In fact, John presents multiple choices in some cases, giving you the opportunity to decide which tool works best for you. Whether you decide to use Ant or Maven for delivering a working application in a predictable manner, TestNG or JUnit for early developer testing, PMD or FindBugs for code analysis, or CruiseControl or Luntbuild for Continuous Integration, this book addresses the fundamental techniques for effectively employing these tools (and a multitude of others as well).

Rapid development of Java applications (which have an acceptable level of associated quality) is still hard as ever; however, after reading John’s magnum opus on the tools and techniques that ultimately enable predictability, confident, and accelerated delivery in a software development process, you’ll find that designing, coding, and deploying high-quality Java applications rapidly just got a whole lot easier.

Get Java Power Tools now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.