又一波Java专业人士必备书籍来袭
java 专业人士必备的书籍大放送:
每个程序员都会有一些由于经常被当作专业资料参阅而磨坏的书。下列书籍应该是 java 语言程序员的书架上必备的。书很贵,所以我有意将这份列表弄得很短,仅限于重要书籍。
thinking in java (bruce eckel)
thinking in java, 3rd edition (bruce eckel; prentice hall ptr,2002 年)
java 编程思想:第3版 (陈昊鹏 等译; 机械工业出版社,2005 年)
eckel 的书对于学习如何在 java 语言环境中使用好面向对象技术极其实用。书中大量的代码样例解释了他所介绍的概念。文字出自一个并不认为 java 技术总是正确答案的人,所以相当地实用。eckel 具有多种语言的大量经验,还有用面向对象方式进行思考的扎实技能。本书将这些技能放到实用的 java 语言环境中。他还在写一本新书,名为 thinking in enterprise java。
effective java (joshua bloch)
effective java: programming language guide(joshua bloch; addison-wesley,2001 年)
effective java 中文版 (潘爱民 译; 机械工业出版社,2003 年)
本书是理解优秀 java 程序设计原则的最佳书籍。大多数材料从其他的 “学习 java ” 的书中根本找不到。例如,bloch 书中关于覆盖equals() 这一章是我读过的最好的参考资料之一。他也在书中包括了很实用的建议:用接口替代抽象类和灵活使用异常。bloch 是 sun 公司 java 平台库的架构师,所以他透彻地了解这门语言。事实上,他编写了该语言中大量有用的库。本书必读!
the java programming language (ken arnold, james gosling, david holmes)
the java programming language(ken arnold,james gosling,david holmes; addison-wesley,2000 年)
java 编程语言(第 3 版) (虞万荣 等译,中国电力出版社,2003 年)
这也许是能弄到的最好的 java 入门读物。它并不是一个标准规范,而是一本介绍每门语言特性的可读书籍。这本书在严谨性和教育性方面权衡得很好,能够让懂编程的人迅速被 java 语言(和其丰富的类库)所吸引。
concurrent programming in java: design principles and patterns (doug lea)
concurrent programming in java: design principles and patterns, 2nd edition(doug lea; addison-wesley,1999 年)
java 并发编程—设计原则与模式(第二版) (赵涌 等译,中国电力出版社,2004 年)
不是每个开发人员都需要如此细致地了解并发性,也不是每个工程师都能达到本书的水准,但却没有比本书更好的关于并发性编程的概述了。如果您对此感兴趣,请从这里开始。lea 是 suny 的一名专业程序员,他的和并发性有关的作品和想法都包含在了 jdk 5.0 规范(引自 jsr166)中,所以您大可放心,他所说的关于有效使用 java 语言的建议是值得一听的。他是一个很善于沟通的人。
expert one-on-one j2ee design and development (rod johnson)
expert one-on-one j2ee design and development(rod johnson)
wrox: j2ee 设计开发编程指南 (魏海萍 译,电子工业出版社,2003 年)
对于刚接触 j2ee 的人来说,这是唯一的一本如实反映这项技术的书。本书收录了多年的成功经验和失败经验,不同于其他许多作者,johnson 乐于将失败的经验公诸于众。j2ee 常常都被过度使用。johnson 的书能帮您避免这一点。
refactoring (martin fowler, kent beck, john brant, william opdyke, don roberts)
refactoring: improving the design of existing code(martin fowler,kent beck,john brant,william opdyke,don roberts;
addison-wesley,1999 年)
重构:改善既有代码的设计(中文版) (侯捷 等译,中国电力出版社 ,2003 年)
fowler 写了几本现已出版的最流行的编程书,包括 analysis patterns。他的关于重构 的书是这一主题的基本书籍。重构代码是被程序员忽略的训练,但却是程序员最直观的想法。重构是在不改变代码结果的前提下改进现有代码的设计。这是保持代码整洁的最佳方式,用这种方法设计的代码总是很容易修改。什么时候进行重构呢?当代码“散发出味道”时。fowler 的书里满是 java 语言代码的例子。许多 java 语言集成开发环境(ide)(包括了 ibm 的 eclipse)都将 fowler 的重构包含了进去,每一个都使用他的重构名命名,所以熟悉如extract method 等重构方法还是很值得的。
design patterns (erich gamma, richard helm, ralph johnson, john vlissides)
design patterns: elements of reusable object oriented software(erich gamma,richard helm,ralph johnson,john vlissides; addison-wesley,1997 年)
设计模式:可复用面向对象软件的基础 (李英军 等译,机械工业出版社 ,2005 年)
这是一本在专业程序员圈子里更为有名的书,基于作者共同的绰号,这本书被认为是 “*(gof)之书”。模式是思考和解决普通编程问题时可以重用的方式。学习模式是一门学科。使用好模式(或知道什么时候不 使用模式)是一项技能。忽略模式则是错误的。书中所有的例子都以 c++ 表示,但 java 语言是从那里诞生的,让 java 语言程序员由此联系到如何在 java 语言中实现这些模式相对简单一些。熟悉模式并了解如何使用好模式使编程更加简单。这使得和其他程序员交流也更简单,因为在针对通用问题的通用解决方案中,模式是描述解决方案中彼此协作的大量相关编程概念的快捷方式。一些更为通用的方式,如工厂方法 则是普便存在的,甚至存在于 java 语言本身。关于明智使用模式的这个主题,也可以阅读 joshua kerievsky 的 refactoring to patterns,该书称可以让代码来告诉您何时实现模式。
patterns of enterprise application architecture (martin fowler)
patterns of enterprise application architecture(martin fowler; addison-wesley,2002 年)
企业应用架构模式 (王怀民 等译,机械工业出版社 ,2004 年)
比起小型、一次性项目来说,企业开发当然代表了更大的挑战。那并不意味着企业开发带来的所有挑战都是新挑战。事实上有些时候,这项开发已经 是以前完成过的了。fowler 做了很多个这样的项目。他的书提到了一些通用解决方案,并提供了关于使用、折中和可选方案的指导。fowler 在书中包含了一些熟悉的模式,如模型视图控制器(mvc),他也提供了一些您也许不了解的模式,如处理 web 站点上特定页面请求或行为请求的 page controller 模式。正如您对待大多数模式一样,一旦您读过许多模式,您就会认为 “我已经知道那个模式了” 。也许是这样,但有一个用来引用模式的通用表达方式还是很有帮助的。在有多个组件(由不同人开发)的大型项目中,该类引用是一项很好的帮助。
uml distilled (martin fowler)
uml distilled: a brief guide to the standard object modeling language(martin fowler; addison-wesley 2003 年)
uml精粹:标准对象语言简明指南(第3版) (徐家福 译,清华大学出版社 ,2005 年)
对于专业的程序员来说,uml 是一门很重要的通用可视化沟通语言,但是它被过度使用和草率地滥用了。您无需对使用 uml 沟通了解太多。martin 对 uml 的提炼为您提供了最核心的东西。事实上,前后的封页提供了常规基础上可能使用到的所有东西。该书中 uml 例子的代码都是 java 代码。
test-driven development: by example (kent beck)
test-driven development: by example(kent beck; addison-wesley 2002 年)
测试驱动开发(中文版) (崔凯 译,中国电力出版社 ,2004 年)
测试优先编程将使编程发生革命性变化,能助您成为更好的程序员。在写代码之前编写测试开始很难,但却是一项威力强大的技能。通过优先编写测试,可使代码更加简单,并确保从一开始它就能工作(beck 实践着他提倡的测试优先,与人合写了 junit,这是 java 语言最流行的测试框架)。beck 的书是权威的参考资料,扩展了的 money 例子也用 java 语言写成。beck 详述了如何用测试优先进行 思考(这也许是许多程序员首先遇到的障碍)。
the pragmatic programmer: from journeyman to master (andy hunt and dave thomas)
the pragmatic programmer: from journeyman to master(andrew hunt 和 david thomas; addison-wesley 1999 年)
程序员修炼之道——从小工到专家 (马维达 译,电子工业出版社 ,2004 年)
做一个纯粹的面向对象开发人员有其优势所在。在当今复杂的社会中,作为 java 语言开发人员,为完成任务常要妥协。hunt 和
thomas 探讨了如何不将真正重要的东西妥协掉而完成任务。这不是一本关于 java 语言的书,而是 java 语言开发人员重要的思想读物。例如,我认为没从“要解决问题,而不是推卸责任”这句忠言中受益的程序员,不能像个自豪的艺术家一样在他的杰作上签上大名。
peopleware: productive projects and teams (tom demarco and timothy lister)
peopleware: productive projects and teams(tom demarco,timothy lister; dorset house,1999 年)
人件(第2版) (umlchina 翻译组 译,清华大学出版社 ,2003 年)
这份列表中的其他所有书籍都至少和技术有些相关。这本书却不是。在所有技术行话和首字母缩略词的海洋中,有时软件开发人员和经理们会忘记:是人 制造了软件。demarco 和 lister 向我们提醒了这一事实,也向我们提醒了形成这一区别的原因。这不是一本关于一门特定编程语言的书籍,但却是每个 java 语言程序员都应该读的书。关于 “累死程序员如何让经理们适得其反” 还有许多其他的好书,但这是最好的一本。
学好java语言从阅读开始!