JAVA超级工具(影印版)
JAVA超级工具(影印版)
John Ferguson Smart
出版时间:2009年04月
页数:871
所有真正的工匠都需要用最好的工具来做他们最精细的活儿,程序员也不例外。

《Java超级工具》囊括了30个开源工具,专门用于提高任何规模的团队或者组织中Java开发人员的实践水平。

每一章都包含针对一个特定工具的一系列短小精悍的小节——无论这个工具用于构建系统、版本控制或者开发流程中的其他方面——这样你就相当于在一个包装里得到了30本简短的书籍。

无论你选择哪一种开发方式——敏捷、Rational统一过程(RUP)、极限编程(XP)、 SCRUM 或者其他——本书中的实践技巧和工具都使得流程自动化和更优化。《Java超级工具》探讨关键的Java开发问题领域和最佳实践,并且专注于在开发周期的各个环节能够提高生产力的开源工具,包括:

* 构建工具,例如Ant和Maven 2
* 版本控制工具, 例如CVS和Subversion
* 质量度量工具,例如CheckStyle、PMD、FindBugs和 Jupiter
* 用来生成良好文档同时降低写文档和维护文档耗时的工具
* 单元测试工具,例如JUnit 4、TestNG以及开源测试覆盖工具Cobertura
* 集成测试、负载测试和性能测试自动化;网络服务、Swing接口和网络接口的自动化测试
* 问题管理工具,如Bugzilla和Trac
* 持续集成工具,例如Continuum、CruiseControl、LuntBuild和Hudson

提高开发实践水平并且让你在开发流程中的日子更容易些。《Java超级工具》对于核心开发人员和软件架构师而言是必读书目,能让他们的职业生涯秩序井然。

John Ferguson Smart是Wakaleo咨询公司的首席咨询师 (www.wakaleo.com), 这是一家致力于为企业级Java和敏捷开发领域提供咨询、培训和指导服务的公司。
  1. Foreword
  2. Preface
  3. Introduction
  4. Part I. Build Tools
  5. 1. Setting Up a Project Using Ant
  6. 1.1 Ant in the Build Process
  7. 1.2 Installing Ant
  8. 1.3 A Gentle Introduction to Ant
  9. 1.4 Compiling Your Java Code in Ant
  10. 1.5 Customizing Your Build Script Using Properties
  11. 1.6 Running Unit Tests in Ant
  12. 1.7 Generating Documentation with Javadoc
  13. 1.8 Packaging Your Application
  14. 1.9 Deploying Your Application
  15. 1.10 Bootstrapping Your Build Scripts
  16. 1.11 Using Maven Dependencies in Ant with the Maven Tasks
  17. 1.12 Using Ant in Eclipse
  18. 1.13 Using Ant in NetBeans
  19. 1.14 Manipulating XML with XMLTask
  20. 1.15 Conclusion
  21. 2. Setting Up a Project Using Maven 2
  22. 2.1 Maven and the Development Build Process
  23. 2.2 Maven and Ant
  24. 2.3 Installing Maven
  25. 2.4 Declarative Builds and the Maven Project Object Model
  26. 2.5 Understanding the Maven 2 Lifecycle
  27. 2.6 The Maven Directory Structure
  28. 2.7 Configuring Maven to Your Environment
  29. 2.8 Dependency Management in Maven 2
  30. 2.9 Looking for Dependencies with MvnRepository
  31. 2.10 Project Inheritance and Aggregation
  32. 2.11 Creating a Project Template with Archetypes
  33. 2.12 Compiling Code
  34. 2.13 Testing Your Code
  35. 2.14 Packaging and Deploying Your Application
  36. 2.15 Deploying an Application Using Cargo
  37. 2.16 Using Maven in Eclipse
  38. 2.17 Using Maven in NetBeans
  39. 2.18 Using Plug-Ins to Customize the Build Process
  40. 2.19 Setting Up an Enterprise Repository with Archiva
  41. 2.20 Setting Up an Enterprise Repository Using Artifactory
  42. 2.21 Using Ant in Maven
  43. 2.22 Advanced Archetypes
  44. 2.23 Using Assemblies
  45. Part II. Version Control Tools
  46. 3. Setting Up Version Control Using CVS
  47. 3.1 An Introduction to CVS
  48. 3.2 Setting Up a CVS Repository
  49. 3.3 Creating a New Project in CVS
  50. 3.4 Checking Out a Project
  51. 3.5 Working with Your Files—Updating and Committing
  52. 3.6 Resolving a Locked Repository
  53. 3.7 Working with Keyword Substitution
  54. 3.8 Working with Binary Files
  55. 3.9 Tags in CVS
  56. 3.10 Creating Branches in CVS
  57. 3.11 Merging Changes from a Branch
  58. 3.12 Viewing Change History
  59. 3.13 Reverting Changes
  60. 3.14 Using CVS in Windows
  61. 4. Setting Up Version Control Using Subversion
  62. 4.1 An Introduction to Subversion
  63. 4.2 Installing Subversion
  64. 4.3 Subversion Repository Types
  65. 4.4 Setting Up a Subversion Repository
  66. 4.5 Setting Up a New Subversion Project
  67. 4.6 Checking Out Your Working Copy
  68. 4.7 Importing Existing Files into Subversion
  69. 4.8 Understanding Subversion Repository URLs
  70. 4.9 Working with Your Files
  71. 4.10 Seeing Where You’re At: The Status Command
  72. 4.11 Resolving Conflicts
  73. 4.12 Using Tags, Branches, and Merges
  74. 4.13 Rolling Back to a Previous Revision
  75. 4.14 Using File Locking with Binary Files
  76. 4.15 Breaking and Stealing Locks
  77. 4.16 Making Locked Files Read-Only with the svn:needs-lock Property
  78. 4.17 Using Properties
  79. 4.18 Change History in Subversion: Logging and Blaming
  80. 4.19 Setting Up a Subversion Server with svnserve
  81. 4.20 Setting Up a Secure svnserve Server
  82. 4.21 Setting Up a WebDAV/DeltaV Enabled Subversion Server
  83. 4.22 Setting Up a Secure WebDAV/DeltaV Server
  84. 4.23 Customizing Subversion with Hook Scripts
  85. 4.24 Installing Subversion As a Windows Service
  86. 4.25 Backing Up and Restoring a Subversion Repository
  87. 4.26 Using Subversion in Eclipse
  88. 4.27 Using Subversion in NetBeans
  89. 4.28 Using Subversion in Windows
  90. 4.29 Defect Tracking and Change Control
  91. 4.30 Using Subversion in Ant
  92. 4.31 Conclusion
  93. Part III. Continuous Integration
  94. 5. Setting Up a Continuous Integration Server with Continuum
  95. 5.1 An Introduction to Continuum
  96. 5.2 Installing a Continuum Server
  97. 5.3 Manually Starting and Stopping the Server
  98. 5.4 Checking the Status of the Server
  99. 5.5 Running the Continuum Server in Verbose Mode
  100. 5.6 Adding a Project Group
  101. 5.7 Adding a Maven Project
  102. 5.8 Adding an Ant Project
  103. 5.9 Adding a Shell Project
  104. 5.10 Managing Your Project Builds
  105. 5.11 Managing Users
  106. 5.12 Setting Up Notifiers
  107. 5.13 Configuring and Scheduling Builds
  108. 5.14 Debugging Your Builds
  109. 5.15 Configuring the Continuum Mail Server
  110. 5.16 Configuring the Continuum Web Site Ports
  111. 5.17 Automatically Generating a Maven Site with Continuum
  112. 5.18 Configuring a Manual Build Task
  113. 5.19 Conclusion
  114. 6. Setting Up a Continuous Integration Server with CruiseControl
  115. 6.1 An Introduction to CruiseControl
  116. 6.2 Installing CruiseControl
  117. 6.3 Configuring an Ant Project
  118. 6.4 Keeping People Notified with Publishers
  119. 6.5 Setting Up a Maven 2 Project in CruiseControl
  120. 6.6 The CruiseControl Dashboard
  121. 6.7 Third-Party Tools
  122. 6.8 Conclusion
  123. 7. LuntBuild—A Web-Based Continuous Integration Server
  124. 7.1 An Introduction to LuntBuild
  125. 7.2 Installing LuntBuild
  126. 7.3 Configuring the LuntBuild Server
  127. 7.4 Adding a Project
  128. 7.5 Using Project Variables for Version Numbering
  129. 7.6 Build Results Diagnostics
  130. 7.7 Using LuntBuild with Eclipse
  131. 7.8 Reporting on Test Coverage in Luntbuild Using Cobertura
  132. 7.9 Integrating Luntbuild with Maven
  133. 7.10 Conclusion
  134. 8. Continuous Integration with Hudson
  135. 8.1 An Introduction to Hudson
  136. 8.2 Installing Hudson
  137. 8.3 Managing the Hudson Home Directory
  138. 8.4 Installing Upgrades
  139. 8.5 Configuring Hudson
  140. 8.6 Adding a New Build Job
  141. 8.7 Organizing Your Jobs
  142. 8.8 Monitoring Your Builds
  143. 8.9 Viewing and Promoting a Particular Build
  144. 8.10 Managing Users
  145. 8.11 Authentication and Security
  146. 8.12 Viewing Changes
  147. 8.13 Hudson Plug-Ins
  148. 8.14 Keeping Track of Test Results
  149. 8.15 Keeping Track of Code Metrics
  150. 8.16 Reporting on Code Coverage
  151. 9. Setting Up an Instant Messaging Platform with Openfire
  152. 9.1 Instant Messaging in a Development Project
  153. 9.2 Installing Openfire
  154. 9.3 Setting Up Users and Accounts on Openfire
  155. 9.4 Authenticating Users in an External Database
  156. 9.5 Authenticating Users Against a POP3 Server
  157. 9.6 Virtual Team Meetings with the Group Chat
  158. 9.7 Extended Functionality with Openfire Plug-Ins
  159. 9.8 Using Openfire with Continuum
  160. 9.9 Using Openfire with CruiseControl
  161. 9.10 Using Openfire with Luntbuild
  162. 9.11 Sending Jabber Messages from a Java Application Using the
  163. Smack API
  164. 9.12 Detecting Presence Using the Smack API
  165. 9.13 Receiving Messages Using the Smack API
  166. Part IV. Unit Testing
  167. 10. Testing Your Code with JUnit
  168. 10.1 JUnit 3.8 and JUnit 4
  169. 10.2 Unit Testing with JUnit 4
  170. 10.3 Setting Up and Optimizing Your Unit Test Cases
  171. 10.4 Simple Performance Testing Using Timeouts
  172. 10.5 Checking for Exceptions the Easy Way
  173. 10.6 Using Parameterized Tests
  174. 10.7 Using assertThat and the Hamcrest Library
  175. 10.8 JUnit 4 Theories
  176. 10.9 Using JUnit 4 with Maven 2
  177. 10.10 Using JUnit 4 with Ant
  178. 10.11 Selectively Running JUnit 4 Tests in Ant
  179. 10.12 Integration Tests
  180. 10.13 Using JUnit 4 in Eclipse
  181. 11. Next-Generation Testing with TestNG
  182. 11.1 Introducing TestNG
  183. 11.2 Creating Simple Unit Tests with TestNG
  184. 11.3 Defining TestNG Test Suites
  185. 11.4 The TestNG Eclipse Plug-In
  186. 11.5 Using TestNG in Ant
  187. 11.6 Using TestNG with Maven 2
  188. 11.7 Managing the Test Lifecycle
  189. 11.8 Using Test Groups
  190. 11.9 Managing Dependencies
  191. 11.10 Parallel Testing
  192. 11.11 Test Parameters and Data-Driven Testing
  193. 11.12 Checking for Exceptions
  194. 11.13 Handling Partial Failures
  195. 11.14 Rerunning Failed Tests
  196. 12. Maximizing Test Coverage with Cobertura
  197. 12.1 Test Coverage
  198. 12.2 Running Cobertura from Ant
  199. 12.3 Checking the Code Coverage of TestNG Tests
  200. 12.4 Interpreting the Cobertura Report
  201. 12.5 Enforcing High Code Coverage
  202. 12.6 Generating Cobertura Reports in Maven
  203. 12.7 Integrating Coverage Tests into the Maven Build Process
  204. 12.8 Code Coverage in Eclipse
  205. 12.9 Conclusion
  206. 13. Testing a Struts Application with StrutsTestCase
  207. 13.1 Testing a Struts Application
  208. 13.2 Introducing StrutsTestCase
  209. 13.3 Mock Tests Using StrutsTestCase
  210. 13.4 Testing Struts Error Handling
  211. 13.5 Customizing the Test Environment
  212. 13.6 First-Level Performance Testing
  213. 13.7 Conclusion
  214. 14. Integration Testing Databases with DbUnit
  215. 14.1 Overview
  216. 14.2 DbUnit Structure
  217. 14.3 Example Application
  218. 14.4 Priming the Database
  219. 14.5 Verifying the Database
  220. 14.6 Replacing Values
  221. 14.7 Alternative Dataset Formats
  222. 14.8 Dealing with Custom Data Types
  223. 14.9 Other Applications
  224. 15. Performance Testing with JUnitPerf
  225. 15.1 Introducing JUnitPerf
  226. 15.2 Measuring Performance with TimedTests
  227. 15.3 SimulatingLoad with LoadTests
  228. 15.4 Load-Testing Tests That Are Not Thread-Safe
  229. 15.5 Separating Performance Tests from Unit Tests in Ant
  230. 15.6 Separating Performance Tests from Unit Tests in Maven
  231. 16. Load and Performance Testing with JMeter
  232. 16.1 Installing JMeter
  233. 16.2 Testing a Simple Web Application
  234. 16.3 Structuring Your Test Case
  235. 16.4 Recording and Displaying Test Results
  236. 16.5 Using the JMeter Proxy to Record a Test Case
  237. 16.6 Testing Using Variables
  238. 16.7 Testing on Multiple Machines
  239. 17. Testing Web Services with SoapUI
  240. 17.1 An Introduction to SoapUI
  241. 17.2 Installing SoapUI
  242. 17.3 Installing a Local Web Service
  243. 17.4 Testing Web Services with SoapUI
  244. 17.5 Load-Testing with SoapUI
  245. 17.6 Running SoapUI from the Command Line
  246. 17.7 Running SoapUI from Ant
  247. 17.8 Running SoapUI from Maven
  248. 17.9 Continuous Testing
  249. 17.10 Conclusion
  250. 18. Profiling and Monitoring Java Applications Using the Sun JDK Tools
  251. 18.1 The Sun JDK Profiling and Monitoring Tools
  252. 18.2 Connecting To and Monitoring a Java Application with jConsole
  253. 18.3 Monitoring a Remote Tomcat Application with jConsole
  254. 18.4 Detecting and Identifying Memory Leaks with the JDK Tools
  255. 18.5 Diagnosing Memory Leaks Using Heap Dumps, jmap, and jhat
  256. 18.6 Detecting Deadlocks
  257. 19. Profiling Java Applications in Eclipse
  258. 19.1 Profiling Applications from Within an IDE
  259. 19.2 The Eclipse Test & Performance Tools Platform
  260. 19.3 Installing TPTP
  261. 19.4 TPTP and Java 6
  262. 19.5 Basic Profiling with TPTP
  263. 19.6 Studying Memory Use with the Basic Memory Analysis Results
  264. 19.7 Analyzing Execution Time
  265. 19.8 Displaying Coverage Statistics
  266. 19.9 Using Filters to Refine Your Results
  267. 19.10 Profiling a Web Application
  268. 19.11 Conclusion
  269. 20. Testing Your User Interfaces
  270. 20.1 Testing Your Web Application with Selenium
  271. 20.2 Testing Swing GUIs with FEST
  272. 20.3 Conclusion
  273. Part VI. Quality Metrics Tools
  274. 21. Detecting and Enforcing Coding Standards with Checkstyle
  275. 21.1 Using Checkstyle to Enforce Coding Standards
  276. 21.2 Using Checkstyle in Eclipse
  277. 21.3 Customizing Checkstyle Rules in Eclipse
  278. 21.4 Customizing Checkstyle Rules Using the XML Configuration
  279. Files
  280. 21.5 Customizing Checkstyle: Common Rules That You Can Do
  281. Without, and Some That You Could Use
  282. 21.6 Defining Rules for Source Code Headers with Checkstyle
  283. 21.7 Suppressing Checkstyle Tests
  284. 21.8 Using Checkstyle with Ant
  285. 21.9 Using Checkstyle with Maven
  286. 22. Preemptive Error Detection with PMD
  287. 22.1 PMD and Static Code Analysis
  288. 22.2 Using PMD in Eclipse
  289. 22.3 Configuring PMD Rules in Eclipse
  290. 22.4 More on the PMD Rulesets
  291. 22.5 Writing Your Own PMD Ruleset
  292. 22.6 Generating a PMD Report in Eclipse
  293. 22.7 Suppressing PMD Rules
  294. 22.8 Detecting Cut-and-Paste with CPD
  295. 22.9 Using PMD in Ant
  296. 22.10 Using PMD in Maven
  297. 23. Preemptive Error Detection with FindBugs
  298. 23.1 FindBugs: A Specialized Bug Killer
  299. 23.2 Using FindBugs in Eclipse
  300. 23.3 Selectively Suppressing Rules with FindBug Filters
  301. 23.4 Using FindBugs Annotations
  302. 23.5 Using FindBugs in Ant
  303. 23.6 Using FindBugs in Maven
  304. 23.7 Conclusion
  305. 24. Inspecting the Results—Semiautomated Code Review with Jupiter
  306. 24.1 Introducing Jupiter—A Code Review Tool for Eclipse
  307. 24.2 Installing Jupiter in Eclipse
  308. 24.3 Understanding the Jupiter Code Review Process
  309. 24.4 Conducting Personal Code Reviews
  310. 24.5 Configuration
  311. 24.6 Setting Up Default Configuration Values
  312. 24.7 Individual Reviews
  313. 24.8 Team Review
  314. 24.9 Rework Phase
  315. 24.10 Jupiter Behind the Scenes
  316. 24.11 Conclusion
  317. 25. Sharpen Your Focus with Mylyn
  318. 25.1 Introduction to Mylyn
  319. 25.2 Installing Mylyn
  320. 25.3 Tracking Tasks and Issues
  321. 25.4 Interacting with Task Repositories
  322. 25.5 Focusing on a Task with Context Management
  323. 25.6 Using the Eclipse Change Sets
  324. 25.7 Sharing Context with Other Developers
  325. 25.8 Conclusion
  326. 26. Monitoring Build Statistics
  327. 26.1 QALab
  328. 26.2 Source Code Management Metrics with StatSCM
  329. 26.3 Statistics in Ant with StatSVN
  330. Part VII. Issue Management Tools
  331. 27. Bugzilla
  332. 27.1 An Introduction to Bugzilla
  333. 27.2 Installing Bugzilla
  334. 27.3 Setting Up Your Bugzilla Environment
  335. 27.4 Managing User Account
  336. 27.5 Restricting Access Using User Groups
  337. 27.6 Configuring a Product
  338. 27.7 Tracking Progress with Milestones
  339. 27.8 Managing Groups of Products with Classifications
  340. 27.9 Searching for Bugs
  341. 27.10 Creating a New Bug
  342. 27.11 The Lifecycle of a Bugzilla Bug
  343. 27.12 Scheduling Notifications (Whining)
  344. 27.13 Customizing Fields in Bugzilla
  345. 27.14 Conclusion
  346. 28. Trac—Lightweight Project Management
  347. 28.1 An Introduction to Trac
  348. 28.2 Installing Trac
  349. 28.3 Setting Up a Trac Project
  350. 28.4 Running Trac on the Standalone Server
  351. 28.5 Setting Up Tracd As a Windows Service
  352. 28.6 Installing Trac on an Apache Server
  353. 28.7 Administrating the Trac Site
  354. 28.8 Managing User Accounts
  355. 28.9 Tailoring the Trac Web Site: Using the Wiki Function
  356. 28.10 Using the Trac Ticket Management System
  357. 28.11 Updating Trac Issues from Subversion
  358. 28.12 Customizing Trac Ticket Fields
  359. 28.13 Setting Up Email Notifications
  360. 28.14 Reporting Using Trac Queries and Reports
  361. 28.15 Managing Progress with Trac Roadmaps and Timelines
  362. 28.16 Browsing the Source Code Repository
  363. 28.17 Using RSS and ICalendar
  364. 28.18 Customizing a Wiki Page with Python
  365. 28.19 Conclusion
  366. Part VIII. Technical Documentation Tools
  367. 29. Team Communication with the Maven 2 Project Web Site
  368. 29.1 The Maven 2 Project Web Site As a Communication Tool
  369. 29.2 Setting Up a Maven Site Project
  370. 29.3 Integrating Reports into Your Site
  371. 29.4 Creating a Dedicated Maven Site Project
  372. 29.5 Defining the Site Outline
  373. 29.6 The Maven Site Generation Architecture
  374. 29.7 Using Snippets
  375. 29.8 Customizing the Look and Feel of Your Site
  376. 29.9 Distributing Your Site
  377. 30. Automatically Generating Technical Documentation
  378. 30.1 Visualizing a Database Structure with SchemaSpy
  379. 30.2 Generating Source Code Documentation with Doxygen
  380. 30.3 Embedding UML Diagrams in Your Javadoc with UmlGraph
  381. 30.4 Conclusion
  382. Bibliography
  383. Index
书名:JAVA超级工具(影印版)
作者:John Ferguson Smart
国内出版社:中国电力出版社
出版时间:2009年04月
页数:871
书号:978-7-80205-731-9
原版书出版商:O'Reilly Media
John Ferguson Smart
 
John Ferguson Smart,Wakaleo咨询的主管,帮助一些公司优化了他们的Java开发实践和基础架构。他提供一些在敏捷开发和测试实践上的培训和指导,比如持续集成、测试驱动开发、构建自动化和持续部署。
 
 
The image on the cover of Java Power Tools is a drill press, a necessity in any workshop
because of its high-precision drilling capabilities. A drill press consists of a base, column
(or pillar), table, spindle (or quill), and drill head, which is usually driven by an induction
motor. There are several advantages to working with a drill press rather than a
handheld drill: less effort is required to apply the drill to the workpiece, and a lever
working on a rack and pinion controls the movement of the chuck and spindle, giving
the operator a considerable mechanical advantage; the drill can be mounted on a stand
or secured to a workbench, making the operation more secure; and the angle of the
spindle is fixed in relation to the table, allowing holes to be drilled accurately and
repetitively.