自学java看什么书强力推荐15本必看书籍华清远见.docx
《自学java看什么书强力推荐15本必看书籍华清远见.docx》由会员分享,可在线阅读,更多相关《自学java看什么书强力推荐15本必看书籍华清远见.docx(10页珍藏版)》请在冰豆网上搜索。
自学java看什么书强力推荐15本必看书籍华清远见
自学java看什么书强力推荐15本必看书籍
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。
就以华清远见的高级讲师读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断进步自己技术程度的Java程序员们。
一、Java编程入门类
对于没有Java编程经历的程序员要入门,随意读什么入门书籍都一样,这个阶段需要你快速的掌握Java根底语法和根本用法,宗旨就是“囫囵吞枣不求甚解〞,先对Java熟悉起来再说。
用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然〞。
1、?
Java编程思想?
在有了一定的Java编程经历之后,你需要“知其所以然〞了。
这个时候?
Java编程思想?
是一本让你知其所以然的好书,它对于根本的面向对象知识有比拟清楚的交待,对Java根本语法,根本类库有比拟清楚的讲解,可以帮你打一个良好的Java编程根底。
2、?
AgileJava?
中文版
这本书是出版社送给我的,我一拿到就束之高阁,放在书柜一页都没有翻过,但是前两天整理书柜的时候,拿出来一翻,竟然发现这绝对是一本好书!
这本书一大特点是以单元测试和TDD来贯穿全书的,在教你Java各种重要的根底知识的过程中,潜移默化的影响你的编程思维走向敏捷,走向TDD。
这本书对于内容取舍也非常得当,Java语言毕竟类库庞大,可以讲的内容太多,这本书选择的内容以及内容的多寡都很得当,可以让你以最少的时间掌握Java最重要的知识,顺便培养出来优秀的编程思路,真是一本不可多得的好书。
虽然作者自己把这本书定位在入门级别,但我不确定这本书用来入门是不是略微深了点,我自己也准备有空的时候翻翻这本书,学习学习。
二、Java编程进阶类
打下一个良好的Java根底,还需要更多的理论经历积累,我想没有什么捷径。
有两本书值得你在编程生涯的这个阶段阅读,培养良好的编程习惯,进步你的代码质量。
1、?
重构改善既有代码的设计?
这本书名气很大,不用多介绍,可以在闲暇的时候多翻翻,多和自己的理论互相印证。
这本书对产生影响是潜移默化的。
2、?
测试驱动开发byExample?
本书最大特点是很薄,看起来没有什么负担。
可以找一个周末的下午,一边看,一边照做,一个下午就把书看完,这本书的所有例子跑完了。
这本书的作用是通过实战让你培养TDD的思路。
三、Java架构师之路
到这个阶段,应该已经非常娴熟的运用Java编程,而且有了一个良好的编程思路和习惯了,但是可能还缺乏对应用软件整体架构的把握,如今就是迈向架构师的第一步。
1、?
ExpertOne-on-OneJ2EEDesignandDevelopment?
这本书是RodJohnson的成名著作,非常经典,从这本书中的代码诞生了springframework。
但是好似这本书没有中译本。
2、?
ExpertOne-on-OneJ2EEDevelopmentwithoutEJB?
这本书由gigix组织翻译,多位业界专家参与,虽然署名译者是JavaEye,其实JavaEye出力不多,实在是忝居译者之名。
以上两本书都是RodJohnson的经典名著,Java架构师的必读书籍。
在所推荐的这些书籍当中,是看过的最仔细,最认真的书,当时读这本书几乎是废寝忘食的一气读完的,有小时候挑灯夜读金庸武侠小说的劲头,书中所讲内容和自己的经历知识一一印证,又被无比精辟的总结出来,读完这本书以后,有种被打通经脉,功力爆增的感觉。
但是后来看过一些其别人的评价,似乎阅读体验并没有那么high,也许是因为每个人的知识积累和经历不同导致的。
那个时候刚好是经历知识积累已经足够丰富,但是还没有系统的整理成型,让这本书一梳理,立即形成完好的知识体系了。
3、?
企业应用架构形式?
Martin的又一本名著,但这本书只是泛泛的看了一遍,并没有仔细看。
这本书似乎更合适做框架的人去看,例如假如打算自己写一个ORM的话,这本书是一定要看的。
4、?
敏捷软件开发原那么、形式与理论?
UncleBob的名著,敏捷的经典名著,这本书比拟特别,与其说是讲软件开发过程的书,不如说讲软件架构的书,本书用了很大篇幅讲各种面向对象软件开发的各种形式,个人以为看了这本书,就不必看GoF的?
设计形式?
了。
四、软件开发过程
理解软件开发过程不单纯是进步程序员个人的良好编程习惯,也是增强团队协作的根底。
1、?
UML精粹?
UML其实和软件开发过程没有什么必然联络,却是软件团队协作沟通,撰写软件文档需要的工具。
但是UML真正实用的图不多,看看这本书已经足够了,完全没有必要去啃?
UML用户指南?
之类的东西。
要提醒大家的是,这本书的中译本翻译的非常之烂,建议有条件的看英文原版。
2、?
解析极限编程拥抱变化?
XP
这是KentBeck名著的第二版,中英文对照。
没什么好说的,必读书籍。
3、?
统一软件开发过程?
UP
其实UP和敏捷并不一定冲突,UP也非常强调迭代,测试,但是UP强调的文档和过程驱动却是敏捷所不取的。
不管怎么说,UP值得去读,毕竟在中国真正承受敏捷的企业很少,还是需要用UP来武装一下自己的,哪怕是披着UP的XP。
4、?
敏捷建模?
AM
ScottAmbler的名著,这本书非常的progmatic,告诉怎么既敏捷又UP,把敏捷和UP统一起来了,又提出了很多progmatic的建议和做法。
可以把?
解析极限编程拥抱变化?
、?
统一软件开发过程?
和?
敏捷建模?
这三本书放在一起读,看XP和UP的不同点,再看AM是怎么统一XP和UP的,把这三种理论融为一炉,形成自己的理论体系,那么也可以去写书了。
五、软件工程管理
假如突然被指导提拔为工程经理,而完全没有工程管理经历,肯定会心里没底;假如觉得自己管理工程不善,很想改善工程管理才能,那么去考PMP肯定是远水不解近渴的。
1、?
快速软件开发?
这也是一本名著。
可以这样说,有本书在手,就有了一个工程管理的高级参谋给你出谋划策,再也不必担忧自己不能胜任的问题了。
这本书不是讲管理的理论的,在实际的工程管理中,讲这些理论是不解决问题的,这本书有点类似于“软件工程点子大全〞之类的东西,列举了种种软件工程当中面临的各种问题,以及应该如何解决问题的点子,只需要稍加变通,找方抓药就行了。
六、总结
在这份推荐阅读书籍的名单中,没有列举流行的软件框架类学习书籍,例如Struts,Hibernate,Spring之类,也没有列举AJAX方面的书籍。
是因为这类书籍容易过时,而上述的大半书籍的生命周期都足够长,值得去购置和收藏。
【二.Java书籍Top10】
下面是JavaInside上推荐的十本不错的Java书籍。
1)JavaLanguageSpecification,ThirdEdition(byJamesGosling)
本书由Java技术的创造者编写,是JavaTM编程语言的权威性技术指南。
假如你想知道语言之构造的准确含义,本书是最好的资源。
2)EffectiveJava,SecondEdition(byJoshuaBloch)
本书介绍了在Java编程中78条极具实用价值的经历规那么,这些经历规那么涵盖了大多数开发人员每天所面临的问题的解决方案。
通过对Java平台设计专家所使用的技术的全面描绘,提醒了应该做什么,不应该做什么才能产生明晰、强健和高效的代码。
.
本书中的每条规那么都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。
本书内容全面,构造明晰,讲解详细。
可作为技术人员的参考用书。
…
3)JavaConcurrencyinPractice(byBrianGoetz)
随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。
Java5以及6在开发并发程序获得了显著的进步,进步了Java虚拟机的性能,进步了并发类的可伸缩性,并参加了丰富的新并发构建块。
在本书中,这些便利工具的创造者不仅解释了它们终究如何工作、如何使用,同时,还阐释了创造它们的原因,及其背后的设计形式。
本书既可以成为读者的理论支持,又可以作为构建可靠的,可伸缩的,可维护的并发程序的技术支持。
本书并不仅仅提供并发API的清单及其机制,本书还提供了设计原那么,形式和思想模型,使我们可以更好地构建正确的,性能良好的并发程序。
本书的读者是那些具有一定Java编程经历的程序员、希望理解JavaSE5,6在线程技术上的改良和新特性的程序员,以及Java和并发编程的爱好者。
4)JavaPuzzles:
Traps,PitfallsandCornerCases(byJoshuaBloch)
Java教父的又一经典名著–JavaPuzzlers,Amazon五星图书。
认为你到底有多理解Java?
你是一个代码神探吗?
你是否曾经花费过数天时间去追踪一个由Java或其类库的陷阱和缺陷而导致的bug?
你喜欢智力测验吗?
那么这本书正好合适你!
5)ThinkinginJava(byBruceEckel)
本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在BruceEckel的文字亲和力和小而直接的编程例如面前也会化解于无形。
从Java的根底语法到最高级特性(深化的面向对象概念、多线程、自动工程构建、单元测试和调试等),本书都能逐步指导你轻松掌握。
从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。
本书的作者拥有多年教学经历,对C、C++以及Java语言都有独到、深化的见解,以通俗易懂及小而直接的例如解释了一个个晦涩抽象的概念。
本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深化研究、JavaI/O系统、枚举类型、并发以及图形化用户界面等内容。
这些丰富的内容,包含了Java语言根底语法以及高级特性,合适各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。
6)Better,faster,lighterJava(byJustinGehtland,BruceA.Tate)
Java的开发者正深陷于复杂性的泥沼中而无法自拔。
我们的经历和才能正接近极限,程序员为了编写支持所选框架的程序所花的时间比解决真正问题的时间要多得多。
我们不禁要问,有必要把Java搞得这么复杂吗?
.
答案是否认的。
本书给你指引了一条出路。
无论是维护应用程序,还是从头开场设计,你都可以超越成规,并大幅精简根本框架、开发过程和最终代码。
你能重新掌握一度失控的J2EE应用程序。
..
在本书中,原作者Bruce与JustinGehtland将循序渐进、娓娓道来。
首先,他们列出了五项根本法那么。
他们展示了如何构建简单、解耦的代码,并告诉你如何选择技术。
他们还对两种被广泛运用的开源程序如何迎合这些概念进展了剖析。
最后,作者还将利用这些根本概念构建一个简单但内涵丰富的应用程序来解决现实世界中所遇到的问题。
7)CoreJava(vol.1,2)(byCayS.Horstmann,GaryCornell)
?
Java核心技术?
出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱开展的步伐,而且每一版都重新改写了局部内容,以便适应Java的最新特性。
全书对Java技术的阐述准确到位,表达方式深化浅出,并包含大量例如,从而帮助读者充分理解Java语言以及Java类库的相关特性。
8)TheJavaVirtualMachineSpecification(byTimLinholm,FrankYellin)
假如你需要理解Java虚拟机的bytecode,或者是一些编译方面的东西,这本书绝对让你得偿所愿。
其不但包含了机器码的标准说明,同时它也是Java编译器和运行环境的规格说明书。
9)RobustJava:
ExceptionHandling,Testing,andDebugging(byStephenStelting)
处理异常涉及开发、设计和体系构造等方面的知识。
本书共分3个局部。
第Ⅰ局部介绍Java异常的产活力理和用法,介绍一些最正确理论,讲述各类异常处理使用的一般API和技术。
第Ⅱ局部阐述可测试性设计,介绍故障形式分析,讨论常见API的异常及起因,分析J2EE体系构造和分布式API的异常形式。
第Ⅲ局部讨论在软件开发周期执行异常和错误处理,分析软件体系构造、设计形式、测试和调试,列举成熟的设计形式,介绍处理策略对系统体系构造的影响,讲述如何构建强健系统。
10)JavaCodeConvention
最后一本当然是Java编码标准,这是由Sun公司官方出品的。
这也是每个程序员为了得供程序的易读性,可维护性需要知道的。
【三.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年)
不是每个开发人员都需要如此细致地理解并发性,也不是每个工程师都能到达本书的水准,但却没有比本书更好的关于并发性编程的概述了。
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做了很多个这样的工程。
他的书提到了一些通用解决方案,并提供了关于使用、折中和可选方案的指导。
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讨论了如何不将真正重要的东西妥协掉而完成任务。
这不是一本关于