Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010068264 | QA76.73.J38 P76 2004 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
What is this book about?
The Extreme Programming (XP) methodology enables you to build and test enterprise systems quickly without sacrificing quality. In the last few years, open source developers have created or significantly improved a host of Java XP tools, from XDoclet, Maven, AntHill, and Eclipse to Ant, JUnit, and Cactus. This practical, code-intensive guide shows you how to put these tools to work -- and capitalize on the benefits of Extreme Programming.
Using an example pet store application, our expert Java developers demonstrate how to harness the latest versions of Ant and XDoclet for automated building and continuous integration. They then explain how to automate the testing process using JUnit, Cactus, and other tools, and to enhance project management and continuous integration through Maven and AntHill. Finally, they show you how to work with XP tools in the new Eclipse IDE.
Complete with real-world advice on how to implement the principles and practices of effective developers, this book delivers everything you need to harness the power of Extreme Programming in your own projects.
What does this book cover?
Here are some of the things you'll find out about in this book:
How to automate the building of J2EE apps and components with Ant and XDoclet Techniques for automating Java testing using JUnit Procedures for automating servlet, JSP, and other J2EE testing using Cactus Ways to automate Swing testing with Jemmy, JFCUnit, and Abbot How to manage projects using Maven Techniques for automating continuous integration with AntHill and Cruise Control How to harness plugins for JUnit, Cactus, and Ant in the Eclipse IDE Ways to implement Extreme Programming best practicesWho is this book for?
This book is for enterprise Java developers who have a general familiarity with the XP methodology and want to put leading Java XP tools to work in the development process.
Author Notes
Richard Hightower is Chief Mentor/Consultant for ArcMind, a full-service software development company. Rick is a software engineer by training who specializes in software development tools and processes, and developing enterprise applications using J2EE, XML, UML, JDBC, SQL, and open source technologies. Formerly he was the Senior Software Engineer for Java Architecture at Intel''s Enterprise Architecture Lab. Rick is the co-author of Professional Jakarta Struts , and he contributed two chapters to the book Mastering Tomcat .
Rick has spoken at a variety of industry conferences and events, including JavaOne, TheServerSide.com Software Symposium JDJEdge, WebServicesEdge, and the Complete Programmer Network software symposiums.
Warner Onstine is a founder and CTO of Interface Guru, a leading Web Usability firm where he consults on back-end technology issues with specific emphasis on how technology and usability work together to present the user with an easy-to-use interface. Warner also runs his own custom development shop, Sandcast Software, which focuses on community and team-oriented software.
Warner got his first computer, a TI-99 4/A, when he was 9 and almost immediately attempted to program a game in Basic on it, which did not work. He stubbornly refuses to get rid of that machine though, along with his trusty NeXT Turbo MonoStation, upon which he got his first taste of Objective-C. This eventually led to Java, skipping right over C++.
His strong community background soon led him to open source, where he has had the chance to meet and interact with several incredible individuals from Jakarta and other open source communities. This also has helped him to keep an open eye on the trends that will soon shape the new landscape--one of his specialties.
Another skill he has is in assisting companies with making the right choices at the right time, utilizing XP, in-depth knowledge of their subject area, and the currently available tools germane to their problem. Warner is also a co-founder and President of the Tucson Java Users Group, which he helped form in 2001, which keeps him rather busy at times. Previously, Warner worked at eBlox, Inc. (a Web development company), Intalio, Inc. (a bay-area Business Process Management Server company), and the University of Arizona Main Library on the Digital Library Team.
Paul Visan is an expert J2EE developer. He serves as a Principal Software Engineer for eBlox, Inc, where he finds that open source tools are invaluable to his work. Paul is a proud Romanian native, now living in the heart of Tucson Arizona. He is a regular contributor to IBM''s developerWorks, for which he has written a series of tutorials on Java Web Services. Paul would like to thank Andrew Barton, Nicholas Lesiecki, Tim Ryan, and Victoria McSherry for helping with this book.
Damon Payne currently works as the Microsoft Business Group manager for Centare Group, Ltd. in Milwaukee, WI. Damon is very passionate about open source technology in the Java and Microsoft .NET worlds. His other professional interests include Mobile development, data persistence patterns, and product development. When not programming or speaking Damon enjoys raising his wonderful daughter, Brooke, home theater, and music.
Joseph D. Gradecki is a software engineer at Comprehensive Software Solutions, where he works on their SABIL product, a enterprise-level securities processing system. He has built numerous dynamic, enterprise applications using Java, AspectJ, servlets, JSPs, Resin, MySQL, BroadVision, XML, and more. He is the author of Mastering JXTA and the coauthor of MySQL and Java Developer''s Guide (with Mark Matthews and Jim Cole). Joeholds Bachelors and Masters degrees in Computer Science and is currently pursuing a Ph.D.
Kate Rhodes is a self-taught programmer, serial entrepreneur, and occasional musician with a Japanese nickname and an unstoppable urge to learn new things, solve new problems, and write open source apps. She''s got too many pets, too many projects, and too little time. If she could afford an army of programming minions she''d have one.
She''s ranked better than most and worse than some. She''s worked in impressive places you''ve possibly heard of and unimpressive places you''ve never heard of. She''s done some stuff she''s very proud of and some she isn''t. And so long as life keeps offering up interesting new challenges for her to learn from, she''s happy. If you''re overcome with curiosity you can always see what Kate and her wife are up to at www.masukomi.org.
Robert Watkins is a Brisbane, Australia-based software developer of nine years'' experience. He''s been called a programmer, a software engineer, an architect, and a few other things (many unprintable), but mostly ignores the titles and does what he has to do. These days he is mostly working in J2EE and related technologies, and is a passionate advocate of agile development techniques. When not working, he spends most of his time with his wife and twin children, and when he gets a chance, he takes time out to read Terry Pratchett novels. Robert is also one of the developers on the CruiseControl project.
Erik Meade is an employee of Wells Fargo, who attended XPImmersionTwo, interviewed at XPImmersionThree, coached at XPImmersionFour, and hung out on the evenings of XPImmersionFive. He is the edior of junit.org and an evangelist of JUnit, Ant, CruiseControl, HttpUnit, Tomcat, and open source in general. He is also a contributor to JUnitPerf.
Table of Contents
Introduction | p. xxv |
Part I Key Concepts | |
Chapter 1 Introduction to Extreme Programming | p. 1 |
XP Overview | p. 1 |
Adopting XP? | p. 9 |
Summary | p. 10 |
Chapter 2 J2EE Deployment Concepts | p. 11 |
The JAR File | p. 13 |
Web Applications and the WAR File | p. 15 |
Enterprise Beans and the EJB JAR File | p. 17 |
Enterprise Applications and the EAR File | p. 20 |
Conclusion | p. 21 |
Chapter 3 Storing and Managing Code with CVS | p. 23 |
The Benefits of Versioning | p. 23 |
About CVS | p. 24 |
CVS Foundations | p. 24 |
Setting Up CVS on the Server | p. 33 |
CVS Pitfalls and Solutions | p. 34 |
Part II Automated Building and Continuous Integration | |
Chapter 4 Ant Primer | p. 37 |
Basics of Using Ant | p. 38 |
Standard Targets | p. 40 |
Conclusion | p. 65 |
Chapter 5 Building Java Applications with Ant | p. 67 |
Hello World Model Project | p. 68 |
Hello World Application Project | p. 75 |
Hello World Main Project | p. 78 |
The Applet Project | p. 81 |
Hello World Recap | p. 86 |
Conclusion | p. 86 |
Chapter 6 Building J2EE Applications with Ant | p. 87 |
Hello World | p. 87 |
Web Application Project | p. 88 |
Enterprise JavaBeans | p. 104 |
EAR Enterprise Application | p. 121 |
The Pet Store Case Study | p. 126 |
Summary | p. 129 |
Chapter 7 XDoclet Primer | p. 131 |
What Is XDoclet? | p. 131 |
Code Generation Templating | p. 133 |
Installing XDoclet | p. 134 |
Configure Ant | p. 134 |
A Simple Example | p. 136 |
XDoclet Tasks, Subtasks, and Templates | p. 141 |
XDoclet Merging | p. 143 |
Summary | p. 144 |
Chapter 8 Building J2EE Web Components with Ant and XDoclet | p. 145 |
Servlet Example | p. 145 |
Webdoclet Tags | p. 150 |
Using Ant for the Configuration | p. 152 |
Using Ant Properties, Init-Params, and Filtering | p. 154 |
Creating Taglibs | p. 154 |
Using Eclipse with Webdoclet | p. 157 |
Summary | p. 167 |
Chapter 9 Building EJBs with Ant and XDoclet | p. 169 |
Generating XDoclet EJBs | p. 169 |
Summary | p. 185 |
Chapter 10 Building Struts Apps with Ant and XDoclet | p. 187 |
Brief Introduction to Struts | p. 187 |
Installing Struts | p. 188 |
A Sample Application | p. 188 |
Struts and XDoclet | p. 195 |
Summary | p. 198 |
Chapter 11 Creating Custom Ant Tasks | p. 199 |
How Ant Works | p. 199 |
An Example Task | p. 200 |
A Skeleton Task Example | p. 201 |
Building a New Task | p. 203 |
Using the New Task | p. 208 |
Summary | p. 212 |
Chapter 12 Creating XDoclet Custom Tags and Templates | p. 213 |
XDoclet Architecture | p. 213 |
A Simple Template | p. 216 |
Building an XDoclet Template | p. 217 |
Summary | p. 220 |
Part III Automated Java Testing | |
Chapter 13 Unit Testing with JUnit | p. 221 |
Overview of JUnit | p. 222 |
Case Study: Adding an Entity Bean to the Pet Store | p. 234 |
Summary | p. 262 |
Chapter 14 Load Testing with JUnitPerf | p. 263 |
JUnitPerf Concepts | p. 264 |
TimedTest Example | p. 264 |
LoadTest Example | p. 271 |
Case Study | p. 272 |
Summary | p. 278 |
Chapter 15 Defect Tracking with Bugzilla | p. 279 |
Enter Bugzilla | p. 280 |
Bugzilla Setup | p. 280 |
Bugs in Bugzilla | p. 285 |
Security | p. 293 |
Summary | p. 296 |
Part IV Automated J2EE Testing | |
Chapter 16 Functional Testing with HttpUnit | p. 297 |
Why Functional Testing? | p. 297 |
Why HttpUnit? | p. 298 |
HttpUnit Basics | p. 299 |
Advanced Topics in HttpUnit | p. 309 |
Spider Example | p. 312 |
Summary | p. 318 |
Chapter 17 Performance Testing with JMeter | p. 319 |
Overview of JMeter | p. 319 |
JMeter Concepts | p. 320 |
Using JMeter to Test a Web Application Navigation | p. 322 |
Using JMeter to Test the Web Application's Form Entry | p. 327 |
Using JMeter to Test Performance of Our RDBMS | p. 334 |
Case Study: The Pet Store | p. 335 |
Summary | p. 342 |
Chapter 18 Cactus Primer | p. 343 |
Why In-Container Testing? | p. 343 |
Why Cactus? | p. 346 |
Installing Cactus | p. 347 |
Cactus Architecture | p. 350 |
Cactus with Ant | p. 359 |
Summary | p. 360 |
Chapter 19 Testing Servlets and Filters with Cactus | p. 361 |
Testing Servlets | p. 361 |
Testing Filters | p. 365 |
Summary | p. 369 |
Chapter 20 JspTestCases and Testing Custom Tags with Cactus | p. 371 |
Testing Simple Tags | p. 372 |
Testing Tag Attributes and Page Interaction | p. 373 |
Testing Body Tags | p. 376 |
Testing Iteration Tags | p. 378 |
Server-Side Assertion Facilities | p. 380 |
Working with Nested Tags | p. 381 |
Testing Auxiliary Tag Components | p. 384 |
Case Study: The Pet Store with Custom Tags | p. 385 |
Summary | p. 391 |
Chapter 21 Testing EJBs with Cactus | p. 393 |
Creating an Ant Buildfile to Run the Test | p. 396 |
Case Study: Adding an Entity Bean to the Pet Store | p. 397 |
Summary | p. 408 |
Chapter 22 Code Coverage with jcoverage | p. 409 |
Why Code Coverage? | p. 410 |
jcoverage Primer | p. 411 |
100% Go Code and 80% Exception Handling | p. 416 |
Other Tools: GroboUtils | p. 422 |
Conclusion | p. 423 |
Part V Automated Swing Testing | |
Chapter 23 Swing Testing with Jemmy | p. 425 |
Jemmy Primer | p. 426 |
Testing a Swing Application with Jemmy | p. 427 |
Summary | p. 436 |
Chapter 24 Swing Testing with jfcUnit | p. 437 |
jfcUnit Primer | p. 438 |
Testing a Swing Application with jfcUnit | p. 439 |
Summary | p. 445 |
Chapter 25 Swing Testing with Abbot | p. 447 |
Abbot and Costello Primer | p. 448 |
Recording and Using Our Test | p. 452 |
Advantages of Abbot | p. 455 |
Part VI Continuous Integration, Project Management, and IDEs | |
Chapter 26 Managing Projects with Maven | p. 457 |
Maven Primer | p. 458 |
Maven Architecture | p. 469 |
Understanding Jelly | p. 472 |
Project Management with Maven | p. 475 |
Case Study: Managing Our Pet Store Project with Maven | p. 480 |
Summary | p. 488 |
Chapter 27 Automating Continuous Integration with CruiseControl | p. 489 |
Basics of Using CruiseControl | p. 491 |
CruiseControl Components | p. 497 |
CruiseControl Life Cycle | p. 502 |
Multiproject Support | p. 503 |
Enhancing Your Build Scripts | p. 503 |
Summary | p. 504 |
Chapter 28 Automating Continuous Integration with AntHill | p. 507 |
AntHill Primer | p. 507 |
Obtaining and Installing AntHill | p. 509 |
An AntHill HelloWorld | p. 515 |
Working with Dependencies | p. 523 |
Using AntHill with Petstore | p. 524 |
Part VII API Tag Reference | |
Chapter 29 Ant Tag Reference | p. 527 |
Ant Command Line Options | p. 527 |
Ant Parent Elements | p. 528 |
Ant Key Tasks | p. 532 |
Directory and File System Tasks | p. 535 |
External Execution Tasks | p. 539 |
File Library Tasks | p. 545 |
File Readers, Writers, and Tokenizers | p. 548 |
Source Control Tasks | p. 549 |
Some Key Optional Tasks | p. 551 |
Frequently Used Nested Parameters and Elements | p. 553 |
Chapter 30 Ant API Reference | p. 557 |
Package org.apache.tools.ant | p. 558 |
Putting it All Together | p. 582 |
Chapter 31 JUnit API Reference | p. 585 |
Package junit.framework | p. 585 |
Package junit.extensions | p. 600 |
Chapter 32 Cactus API Reference | p. 607 |
Package org.apache.cactus | p. 607 |
Package org.apache.cactus.util | p. 627 |
Package org.apache.cactus.server | p. 629 |
Chapter 33 HttpUnit API Reference | p. 635 |
Package com.meterware.httpunit | p. 635 |
Chapter 34 JUnitPerf API Reference | p. 665 |
Package com.clarkware.junitperf | p. 665 |
Part VIII Appendix | |
Appendix A Example Applications Used in This Book | p. 675 |
Simple Example: Model 2 Hello World | p. 676 |
Case Study Example: The Pet Store | p. 676 |
Baseline Version of the Pet Store | p. 677 |
Setting Up the Database with Test Data: A Small Taste Of Ant | p. 687 |
Complete Listings | p. 692 |
Conclusion | p. 712 |
Index | p. 713 |