About the Contributors Randy Stafford is an accomplished professional in many aspects of software development,with 15 years of Information Technology experience across industries such as financial services,DBMS software,hospitality,telecommu- nications,transportation,CASE,and aerospace and defense.He has had broad exposure as a consultant or permanent employee of large public companies such as Travelers Express,Oracle,AMS,and Martin Marietta;and of small private companies such as GemStone,SynXis,and Ascent Logic Corporation. As a Smalltalk developer,he has been immersed in object-oriented and distributed-object system development since 1988,and has been involved in Web development and e-commerce projects since 1995. Currently Chief Architect at IQNavigator,Inc.,Mr.Stafford has developed eight production-distributed Java applications since 1997,using various EE application servers and Java ORBs.He was the originator and architect of FoodSmart,the example J2EE application from GemStone Systems,Inc.He was also the author of GemStone's pattern language on designing J2EE appli- cations,and of the GemStone Professional Services Foundation Classes,a framework for J2EE application development.He has used Ant to build automation on his last five J2EE applications,dating back to its initial release in the summer of 2000.He has used JUnit since its initial release in early 1998, and its predecessor,SmalltalkUnit,since 1995. Mr.Stafford is an alumnus of Colorado State University with a Bachelor of Science degree in Applied Mathematics,and graduate coursework in Com- puter Science.He is published in the object-oriented simulation and systems engineering literatures. Craig Russell is Product Architect at Sun Microsystems,where he is responsi- ble for the architecture of Transparent Persistence,an object-to-relational mapping engine.During the past 30 years,he has worked on architecture, design,and support for enterprise-scale distributed-transactional and data- base systems. Craig serves as Specification Lead on Java Data Objects,a specification for Java-centric persistence,managed as a Java Specification Request via the Java Community Process xxiii About the Contributors Randy Stafford is an accomplished professional in many aspects of software development, with 15 years of Information Technology experience across industries such as financial services, DBMS software, hospitality, telecommunications, transportation, CASE, and aerospace and defense. He has had broad exposure as a consultant or permanent employee of large public companies such as Travelers Express, Oracle, AMS, and Martin Marietta; and of small private companies such as GemStone, SynXis, and Ascent Logic Corporation. As a Smalltalk developer, he has been immersed in object-oriented and distributed-object system development since 1988, and has been involved in Web development and e-commerce projects since 1995. Currently Chief Architect at IQNavigator, Inc., Mr. Stafford has developed eight production-distributed Java applications since 1997, using various J2EE application servers and Java ORBs. He was the originator and architect of FoodSmart, the example J2EE application from GemStone Systems, Inc. He was also the author of GemStone’s pattern language on designing J2EE applications, and of the GemStone Professional Services Foundation Classes, a framework for J2EE application development. He has used Ant to build automation on his last five J2EE applications, dating back to its initial release in the summer of 2000. He has used JUnit since its initial release in early 1998, and its predecessor, SmalltalkUnit, since 1995. Mr. Stafford is an alumnus of Colorado State University with a Bachelor of Science degree in Applied Mathematics, and graduate coursework in Computer Science. He is published in the object-oriented simulation and systemsengineering literatures. Craig Russell is Product Architect at Sun Microsystems, where he is responsible for the architecture of Transparent Persistence, an object-to-relational mapping engine. During the past 30 years, he has worked on architecture, design, and support for enterprise-scale distributed-transactional and database systems. Craig serves as Specification Lead on Java Data Objects, a specification for Java-centric persistence, managed as a Java Specification Request via the Java Community Process. xxiii