又一波Java专业人士必备书籍来袭
Java专业人士必备的书籍大放送:
每个程序员都会有一些由于经常被当作专业资料参阅而磨坏的书。下列书籍应该是Java语言程序员的书架上必备的。书很贵,所以我有意将这份列表弄得很短,仅限于重要书籍。
ThinkinginJava(BruceEckel)
ThinkinginJava,3rdedition(BruceEckel;PrenticeHallPTR,2002年)
Java编程思想:第3版(陈昊鹏等译;机械工业出版社,2005年)
Eckel的书对于学习如何在Java语言环境中使用好面向对象技术极其实用。书中大量的代码样例解释了他所介绍的概念。文字出自一个并不认为Java技术总是正确答案的人,所以相当地实用。Eckel具有多种语言的大量经验,还有用面向对象方式进行思考的扎实技能。本书将这些技能放到实用的Java语言环境中。他还在写一本新书,名为ThinkinginEnterpriseJava。
EffectiveJava(JoshuaBloch)
EffectiveJava:ProgrammingLanguageGuide(JoshuaBloch;Addison-Wesley,2001年)
EffectiveJava中文版(潘爱民译;机械工业出版社,2003年)
本书是理解优秀Java程序设计原则的最佳书籍。大多数材料从其他的“学习Java”的书中根本找不到。例如,Bloch书中关于覆盖equals()这一章是我读过的最好的参考资料之一。他也在书中包括了很实用的建议:用接口替代抽象类和灵活使用异常。Bloch是Sun公司Java平台库的架构师,所以他透彻地了解这门语言。事实上,他编写了该语言中大量有用的库。本书必读!
TheJavaProgrammingLanguage(KenArnold,JamesGosling,DavidHolmes)
TheJavaProgrammingLanguage(KenArnold,JamesGosling,DavidHolmes;Addison-Wesley,2000年)
Java编程语言(第3版)(虞万荣等译,中国电力出版社,2003年)
这也许是能弄到的最好的Java入门读物。它并不是一个标准规范,而是一本介绍每门语言特性的可读书籍。这本书在严谨性和教育性方面权衡得很好,能够让懂编程的人迅速被Java语言(和其丰富的类库)所吸引。
ConcurrentProgramminginJava:DesignPrinciplesandPatterns(DougLea)
ConcurrentProgramminginJava:DesignPrinciplesandPatterns,2ndedition(DougLea;Addison-Wesley,1999年)
Java并发编程—设计原则与模式(第二版)(赵涌等译,中国电力出版社,2004年)
不是每个开发人员都需要如此细致地了解并发性,也不是每个工程师都能达到本书的水准,但却没有比本书更好的关于并发性编程的概述了。如果您对此感兴趣,请从这里开始。Lea是SUNY的一名专业程序员,他的和并发性有关的作品和想法都包含在了JDK5.0规范(引自JSR166)中,所以您大可放心,他所说的关于有效使用Java语言的建议是值得一听的。他是一个很善于沟通的人。
ExpertOne-On-OneJ2EEDesignandDevelopment(RodJohnson)
ExpertOne-On-OneJ2EEDesignandDevelopment(RodJohnson)
WROX:J2EE设计开发编程指南(魏海萍译,电子工业出版社,2003年)
对于刚接触J2EE的人来说,这是唯一的一本如实反映这项技术的书。本书收录了多年的成功经验和失败经验,不同于其他许多作者,Johnson乐于将失败的经验公诸于众。J2EE常常都被过度使用。Johnson的书能帮您避免这一点。
Refactoring(MartinFowler,KentBeck,JohnBrant,WilliamOpdyke,DonRoberts)
Refactoring:ImprovingtheDesignofExistingCode(MartinFowler,KentBeck,JohnBrant,WilliamOpdyke,DonRoberts;
Addison-Wesley,1999年)
重构:改善既有代码的设计(中文版)(侯捷等译,中国电力出版社,2003年)
Fowler写了几本现已出版的最流行的编程书,包括AnalysisPatterns。他的关于重构的书是这一主题的基本书籍。重构代码是被程序员忽略的训练,但却是程序员最直观的想法。重构是在不改变代码结果的前提下改进现有代码的设计。这是保持代码整洁的最佳方式,用这种方法设计的代码总是很容易修改。什么时候进行重构呢?当代码“散发出味道”时。Fowler的书里满是Java语言代码的例子。许多Java语言集成开发环境(IDE)(包括了IBM的Eclipse)都将Fowler的重构包含了进去,每一个都使用他的重构名命名,所以熟悉如extractmethod等重构方法还是很值得的。
DesignPatterns(ErichGamma,RichardHelm,RalphJohnson,JohnVlissides)
DesignPatterns:ElementsofReusableObjectOrientedSoftware(ErichGamma,RichardHelm,RalphJohnson,JohnVlissides;Addison-Wesley,1997年)
设计模式:可复用面向对象软件的基础(李英军等译,机械工业出版社,2005年)
这是一本在专业程序员圈子里更为有名的书,基于作者共同的绰号,这本书被认为是“四人帮(GOF)之书”。模式是思考和解决普通编程问题时可以重用的方式。学习模式是一门学科。使用好模式(或知道什么时候不使用模式)是一项技能。忽略模式则是错误的。书中所有的例子都以C++表示,但Java语言是从那里诞生的,让Java语言程序员由此联系到如何在Java语言中实现这些模式相对简单一些。熟悉模式并了解如何使用好模式使编程更加简单。这使得和其他程序员交流也更简单,因为在针对通用问题的通用解决方案中,模式是描述解决方案中彼此协作的大量相关编程概念的快捷方式。一些更为通用的方式,如工厂方法则是普便存在的,甚至存在于Java语言本身。关于明智使用模式的这个主题,也可以阅读JoshuaKerievsky的RefactoringtoPatterns,该书称可以让代码来告诉您何时实现模式。
PatternsofEnterpriseApplicationArchitecture(MartinFowler)
PatternsofEnterpriseApplicationArchitecture(MartinFowler;Addison-Wesley,2002年)
企业应用架构模式(王怀民等译,机械工业出版社,2004年)
比起小型、一次性项目来说,企业开发当然代表了更大的挑战。那并不意味着企业开发带来的所有挑战都是新挑战。事实上有些时候,这项开发已经是以前完成过的了。Fowler做了很多个这样的项目。他的书提到了一些通用解决方案,并提供了关于使用、折中和可选方案的指导。Fowler在书中包含了一些熟悉的模式,如模型视图控制器(MVC),他也提供了一些您也许不了解的模式,如处理Web站点上特定页面请求或行为请求的PageController模式。正如您对待大多数模式一样,一旦您读过许多模式,您就会认为“我已经知道那个模式了”。也许是这样,但有一个用来引用模式的通用表达方式还是很有帮助的。在有多个组件(由不同人开发)的大型项目中,该类引用是一项很好的帮助。
UMLDistilled(MartinFowler)
UMLDistilled:ABriefGuidetotheStandardObjectModelingLanguage(MartinFowler;Addison-Wesley2003年)
UML精粹:标准对象语言简明指南(第3版)(徐家福译,清华大学出版社,2005年)
对于专业的程序员来说,UML是一门很重要的通用可视化沟通语言,但是它被过度使用和草率地滥用了。您无需对使用UML沟通了解太多。Martin对UML的提炼为您提供了最核心的东西。事实上,前后的封页提供了常规基础上可能使用到的所有东西。该书中UML例子的代码都是Java代码。
Test-DrivenDevelopment:ByExample(KentBeck)
Test-DrivenDevelopment:ByExample(KentBeck;Addison-Wesley2002年)
测试驱动开发(中文版)(崔凯译,中国电力出版社,2004年)
测试优先编程将使编程发生革命性变化,能助您成为更好的程序员。在写代码之前编写测试开始很难,但却是一项威力强大的技能。通过优先编写测试,可使代码更加简单,并确保从一开始它就能工作(Beck实践着他提倡的测试优先,与人合写了JUnit,这是Java语言最流行的测试框架)。Beck的书是权威的参考资料,扩展了的Money例子也用Java语言写成。Beck详述了如何用测试优先进行思考(这也许是许多程序员首先遇到的障碍)。
ThePragmaticProgrammer:FromJourneymantoMaster(AndyHuntandDaveThomas)
ThePragmaticProgrammer:FromJourneymantoMaster(AndrewHunt和DavidThomas;Addison-Wesley1999年)
程序员修炼之道——从小工到专家(马维达译,电子工业出版社,2004年)
做一个纯粹的面向对象开发人员有其优势所在。在当今复杂的社会中,作为Java语言开发人员,为完成任务常要妥协。Hunt和
Thomas探讨了如何不将真正重要的东西妥协掉而完成任务。这不是一本关于Java语言的书,而是Java语言开发人员重要的思想读物。例如,我认为没从“要解决问题,而不是推卸责任”这句忠言中受益的程序员,不能像个自豪的艺术家一样在他的杰作上签上大名。
Peopleware:ProductiveProjectsandTeams(TomDeMarcoandTimothyLister)
Peopleware:ProductiveProjectsandTeams(TomDeMarco,TimothyLister;DorsetHouse,1999年)
人件(第2版)(UMLChina翻译组译,清华大学出版社,2003年)
这份列表中的其他所有书籍都至少和技术有些相关。这本书却不是。在所有技术行话和首字母缩略词的海洋中,有时软件开发人员和经理们会忘记:是人制造了软件。DeMarco和Lister向我们提醒了这一事实,也向我们提醒了形成这一区别的原因。这不是一本关于一门特定编程语言的书籍,但却是每个Java语言程序员都应该读的书。关于“累死程序员如何让经理们适得其反”还有许多其他的好书,但这是最好的一本。
学好java语言从阅读开始!