配色: 字号:
Java 程序员们值得一看的好书推荐
2015-12-02 | 阅:  转:  |  分享 
  
Java程序员们值得一看的好书推荐

“学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会。个

人认为看书有两点好处:

?能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一

本好书的价值远超其他资料

?对着书上的代码自己敲的时候方便

“看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二

步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一些总结和提炼,对于梳

理学习的内容很有好处,当然这里不是说自己的学习方法,就不再扯下去了。

很多程序员们往往有看书的冲动,但不知道看哪些书,下面我就给各位Java程序猿们推荐

一些好书(每本书的作者会加粗标红),其中绝大多数都是我自己平时在看的书,也算是我

对于平时读的书做一个小总结和读后感吧。

首先推荐的不是一本书,而是一个博客,也是我们博客园另外一位博友java_my_life。

目前市面上讲解设计模式的书很多,虽然我前面讲了看书是最好的,但是对设计模式感兴趣

的朋友们,我推荐的是这个博客。这位博友的设计模式讲得非常非常好,我认为90%的内

容都是没有问题且很值得学习的,其讲解设计模式的大体路线是:

1、随便开篇点明该设计模式的定义

2、图文并茂讲解该设计模式中的结构

3、以详细的代码形式写一下该种设计模式的实现

4、补充内容

5、讲解该设计模式的优缺点

对于一个设计模式我们关注、学习的知识点,不就是上面这些吗?

不过我要重点提醒一下网友们,同一种设计模式的写法有多种,并不是说只有按某种写法来

写才是这种设计模式。比方说适配器模式,我们关注适配器模式一定要关注的是什么是适配

器模式不是怎么写适配器模式,不要认为某段代码不是按照适配器模式的写法写下来的它就

不是适配器模式了,记住这一点,你在学习设计模式的时候一定会对代码中用到的设计模式

有更深入的理解。大讲台,混合式自适应IT职业教育开创者。

《深入理解Java虚拟机:JVM高级特性与最佳实践》



如果你不满足于做一个只会写if…else…的Java程序员,而是希望更进一步,我随便举几个

例子吧:

1、了解Java代码的底层运行机制

2、定位性能问题

3、对整个系统进行性能调优

4、解决各种奇奇怪怪的线上线下问题

5、更加高级别的,为自己的项目量身定做一款适合自己项目的虚拟机

那么Java虚拟机是你必学的一门技术。《深入理解Java虚拟机:JVM高级特性与最佳实

践》作者是周志明,这本书可以说是国内写得最好的有关Java虚拟机的书籍,近半年,前

前后后这本书我起码看了有5遍。国内写虚拟机的书除了这本,其实还有一些其他的,我也

买过,不过粗略看下来,很多内容也是《深入理解Java虚拟机:JVM高级特性与最佳实践》

此书里面的。

另外值得一提的是,《深入理解Java虚拟机:JVM高级特性与最佳实践》这本书,有电子

版的,网上搜一下就能下载到了。不过建议有兴趣的朋友还是去买书看,电子版本下载到的

一般是比较老的版本,相比最新修订版的《深入理解Java虚拟机:JVM高级特性与最佳实

践》,有很多作者新补充的知识点是没有的。

《HotSpot实战》



所有的Java虚拟机都是遵循着Java虚拟机规范来的,市面上的Java虚拟机几十款,《深入

理解Java虚拟机:JVM高级特性与最佳实践》一书里面讲的虚拟机并不针对某种特定的虚

拟机,而是从Java虚拟机规范的角度来讲解Java虚拟机。

我们平时使用的乃至商用的大多数Java虚拟机都是Sun公司的HotSpot,大家cmd进入命

令行,使用”java-version”命令就可以看到了。如果希望在Java虚拟机规范的基础上更加深

入地去理解虚拟机的一些细节是怎么实现的,就可以看一下《HotSpot实战》一书,作者是

陈涛。不过由于HotSpot的源码都是C/C++写的,所以要求读者有非常好的C/C++基础,如

果对这两门语言不是很熟悉的朋友,看这本书可能对你帮助不是很大。大讲台,混合式自适

应IT职业教育开创者。

最后提一句,如果有兴趣的朋友,不妨先去网上下载一个openJDK,HotSpot的源码就在里

面。

《Java并发编程实战》



这本书常常被列入Java程序员必读十大书籍排行榜前几位,不过个人不是很推荐这本书。

《Java并发编程实战》作者是BrianGoetz,怎么说呢,这本书前前后后我也看了两遍左右,

个人感受是:

1、文字多代码少

2、讲解多实践少

我觉得这可能就是老外写书的特点吧,因为Java是北美国家(加拿大、美国)开发和维护

的,所以老外对Java方方面面的理论知识体系都掌握得是非常清楚和透彻的。翻开这本书

看,多线程什么用、什么是死锁、什么是竞争、什么是线程安全等等,方方面面的知识点都

用大量的文字篇幅讲解,不免让人感觉十分枯燥,也难让读者有实质性的进步。我这本书看

了两遍也属于一目十行意思,有兴趣的地方就重点看一下。

无论如何,作为一本常常位于Jva程序员必读十大书籍排行榜前几名的书,还是一定要推荐

给大家的。

《java多线程编程核心技术》



《Java多线程编程核心技术》作者高洪岩。想要学习多线程的朋友,这本书是我大力推荐

的,我的个人博客里面二十多篇的多线程博文都是基于此书,并且在这本书的基础上进行提

炼和总结而写出来的。

此书和《Java并发编程实战》相反,这本书的特点是大篇幅的代码+小篇幅的精讲解,可能

这和中国人写的书比较偏向实用主义的风格有关。本书关于线程安全、synchronized、Reent

rant、Timer等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详

细讲解到,非常有实践价值。大讲台,混合式自适应IT职业教育开创者。

有兴趣的朋友们,我相信只要你们跟着这本书里面的代码敲、运行、思考,三步走,对于多

线程的使用与理解一定会进几大步。

不过这本书的缺点就是对于Java并发包下的一些类像CountDownLatch、Semphore、Cyclic

Barrier、Future、Callable等都没有讲到,重点的CAS和AQS也没有触及,重点类的实现原

理也没有提。当然,这很深入了,在学习了这本书之后如果能再去对这些知识进行一些学习、

研究的话,你一定会慢慢成长为一个很厉害的多线程高手。

《EffectiveJava中文版》



这是唯一一本我没有买的书。初识这本书,是在我的博文Java代码优化(长期更新)里面,

底下评论的时候有朋友提到了这本书,当时我说要去买,不过这两个月一直都没时间去逛书

店,甚是遗憾,之后肯定会找时间去买这本书的。

《EffectiveJava中文版》的作者是JoshuaBloch,这个人就很厉害了,他是谷歌的首席架

构师,属于超级技术大牛级别了吧,呵呵。由于没有看过这本书,所以我不好发表评论,但

是从这本书的知名度以及其作者的来头来看(多提一句,这本书也是Java之父JamesGosli

ng博士推崇的一本书),我相信这一定是一本值得一看的好书。

好的代码是每个Java程序员都应该去追求的,不是说我今天写一段好代码相比写一段烂代

码对性能会有多大的提升,更多的应该是提升了代码的可读性以及可以规避许多潜在的、未

知的问题,避免代码上线之后出问题而花时间去维护—-无论从时间成本、人力成本还是风

险成本来说,这都是非常高的。

《深入分析JavaWeb技术内幕》



《深入分析JavaWeb技术内幕》,作者许令波,淘宝工程师。

这本书我用一个字概括就是:全。真的非常全,HTTP、DNS、CDN、静态化、Jetty、Tomc

at、Servlet、Spring、MyBatis等等,什么都有,涉及知识面非常广,但又不像专门精讲某个

知识点的书籍一样讲得非常深入,感觉这本书就是尽量去用短的篇幅讲清楚一些JavaWeb

使用到的技术的内幕,让读者对这些知识点的技术内幕有一个理性的认识。大讲台,混合式

自适应IT职业教育开创者。

不过,尽管每个知识点的篇幅都不多,但是重点都基本讲到了,是一本让人真正有收获的书。

如果想进一步了解这些技术的技术内幕,就要自己去买相关书籍或者自己上网查资料了,有

种抛砖引玉,或者说师傅领进门、修行在个人的感觉。

《大型网站技术架构核心原理与案例分析》



一个字评价这本书,屌;两个字评价这本书,很屌;三个字评价这本书,非常屌。呵呵,好

了,再说下去可能别人以为我是水军了。

《大型网站技术架构核心原理与案例分析》的作者是李智慧,原阿里巴巴技术专家。

Java的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个

分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从一个小型网站成

长起来的?如何保证你的网站安全?分布式系统使用到了缓存,有哪些缓存?缓存的使用有

哪些值得注意的事项?

关于分布式的知识点,都在这本书里面有体现,只有你想不到,没有他写不到,而且写得非

常易懂,基本属于看一两遍,再记一些笔记就知道是怎么一回事儿了。多看几遍,对分布式

的理解一定会加深不少。而且里面不仅仅是分布式的知识,还非常接地气地写了如何做一个

好的架构师,其实我认为这不仅仅是写给想做架构师的读者看的,就是给读者一些建议,如

何更好地提出意见、如何更让别人关注你的声音、如何看到他人的优点,入木三分,让人获

益匪浅。

《大型网站系统与Java中间件实践》



《大型网站系统与Java中间件实践》作者曾宪杰,是淘宝的技术总监,算起来应该在阿里

有至少P8的级别了吧。

这本书的部分内容和上面一本李智慧的《大型网站技术架构核心原理与案例分析》有所重

合,像分布式系统的演化、CDN、CAP理论和BASE理论等等,这也更说明这些都是分布

式系统或者说是一个大型网站重点关注的内容,当作一次再学习也不错。

本书要突出的重点是中间件三个字,中间件是分布式系统中一个非常重要的东西,其最重要

的作用应该就是解耦,降低模块与模块之间的强依赖,不同的模块之间的依赖度降低,便可

以各自独立地开发自己的功能,这也可以说是软件工程发展的目标和驱动力。

因此,本书有一部分的内容就是基于中间件,详细讲解了中间件与JMS的各种知识,适合

对分布式系统比较熟悉并且想要往中间件方面有一定研究的读者。

《从Paxos到ZooKeeper分布式一致性原理与实践》



《从Paxos到ZooKeeper分布式一致性原理与实践》,作者倪超,阿里巴巴工程师。

这本书是我最近在研读的一本书,和上面的《大型网站系统与Java中间件实践》一样,属

于分布式组件的范畴,属于有些深入的内容,当然也是我自己的个人兴趣。当然,如果有志

向做一个出色的大型网站架构师、公司的技术总监之类,这些知识当然是必须掌握的。大讲

台,混合式自适应IT职业教育开创者。

本书从分布式系统基本理论开始讲起,讲到Paxos算法,最后慢慢引入到Zookeeper,循序

渐进。当然,更多的我目前还不方便发表什么看法,因为这本书的第二张Paxos算法我都还

没有弄懂(Paxos算法确实有些难以理解和不太易懂),接下来的章节还没有看下去。

如果网友们所在的公司在使用Zookeeper,并且你又对Zookeeper感兴趣想要研究一下它的

原理的,这本书将是不二之选。

《MySQL5.6从零开始学》



《MySQL5.6从零开始学》,作者刘增杰和李坤。

作为一名Java程序员,我认为我们千万不要觉得数据库是DBA的事情,数据库对一个Jav

a程序员来说也是必须掌握的一门知识,丰富的数据库性能优化经验是一个顶尖程序员必备

技能。

目前主流的数据库有Oracle和MySQL,当然推荐大家的是MySQL,主要原因我认为有两

点:

1、MySQL相比Oracle更轻量级、更小、安装和卸载更方便,SQL其实都是差不多的,如

果想学数据库,学MySQL就可以了,在家里面可以自己方便地研究,如果你的公司使用O

racle,只要再用对比学习法,关注一下Oracle和MySQL的差别即可

2、随着2009年阿里巴巴去IOE的运动的进行,目前国内的很多互联网公司都会选择MyS

QL作为它们使用的数据库,因为MySQL免费,所以既省钱又不需要出了问题就依赖甲骨

文公司

MySQL学习我推荐的是这本我自己学习看的《MySQL5.6从零开始学》,我是觉得挺好的

这本书,书里面的知识点很细致、很全面,读者选择书籍的标准大多不就是这两点吗?

《Spring源码深度解析》



《Spring源码深度解析》,作者郝佳。

Spring这个框架做得太好了,功能太强大了,以至于很多开发者都只知Spring,不知什么是

工厂、什么是单例、什么是代理(我面试别人的真实体会)。这种功能强大的框架内部一定

是很复杂的实现,这就导致一旦你的程序使用Spring,出了问题,可能是Error、可能是Ex

ception、可能是程序运行结果不是你的预期的,出现诸如此类问题的时候,将会让你感到困

惑,除了上网查资料或者问别人似乎没有更好的解决办法。大讲台,混合式自适应IT职业

教育开创者。

研读Spring的源代码不失为一种很好的学习方法,我个人认为这有很多好处:

1、理解框架内部的实现之后,可以主动去解决问题,而不需要依赖别人

2、Spring框架内部实现用到了很多设计模式,很好的代码设计思路,这将会对你写代码、

对你理解设计模式有很大的提高

3、研究Spring框架将会大大增强你读代码的能力,我相信只要你能研究清楚Spring内部是

如何实现的,其他任何一个框架的源代码都难不倒你

总而言之,我认为读代码的能力是一个普通的程序员和一个好的程序员之间最大的差别之一,

前者只会把别人写好的东西拿来用,后者不仅能用好,还清楚知道别人写好的东西底层是如

何实现的,在出现问题的时候可以轻松解决。

Spring源代码,个人推荐《Spring源码深度解析》一书,真要研究透并且写清楚Spring源代

码,恐怕三四本书都不够,作者在近400页的篇幅中尽量去讲解Spring源代码是如何实现

的,殊为不易,尽管无法讲得完全,但是相信作者的讲解配合上读者自己的研究,一定可以

对Spring的实现有更深度的理解。



献花(0)
+1
(本文系zhensg2008首藏)