学习Java的过程中也看了不少书,也看过别人的推荐。相对于博客教程来说,出版出来的书籍更严谨,而有的好书在圈内早已盛名在外,下面推荐我觉得很厉害的几本书,有很多值得一读再读。
Head First Java
Head First系列早就盛名在外,这本书是一本真正的入门书,一周就能叫你怎么写Java程序,内容浅显易懂,很有趣,真的为初学者设计,但是它也是一本真正的入门书,并没有覆盖所有Java的点。如果你是从0基础几步,这本书是个好的选择,以免你看了下面的书直接放弃学习Java。
Java编程思想
这本大部头很容易让人望而却步,记得大一时候就买了它,却一直放在书架上睡觉。后来工作了,才慢慢啃了好几遍。真的后悔看得太晚了。不得不说,这本书无愧经典二字,内容覆盖了Java SE的方方面面,同时作者Bruce Eckel确实是大牛中的大牛,很多例子不知不觉得用上了各种设计模式,后来再读设计模式时,还会拿起这本书看例子,又有恍然大悟的感觉。有很多人对这本书有误解,一是觉得中文版不好,实际上我觉得相比于其它的书翻译得水平可以了,2是不适合新手,其实只要你有一点基本语句的基础,那么通读是没问题的。永远不要为自己的怯懦寻找借口,这是修炼Java内功必备的一本书。
另外我建议一是按知识点读,而不是从头到尾读,知识点主要以章节区分,Java基础知识按类别分其实可以分为好几块的,面向对象的部分,集合,多线程,泛型,枚举,网络,UI等等。最好当成工具书,项目上遇到不熟悉的,常常翻翻书,当你结合项目时,会产生对这个知识点的渴求,所以记忆更牢固。
总觉得还得读个10遍8遍的。
Java核心编程
这本书一般国内版本都分上下两侧,作为与上面的Java编程思想齐名的大全式图书,这本书的内容更加细致,偏重与讲解Java计数,举例说明了大量API,所以相比于Java编程思想,更注重于实用性。而且由于书籍分了上下两侧,文字排版舒服一点,没有上面那本书的文字那么密集,阅读压力小点。但是两本书加起来真的贵啊,所以当初没有买它入门,工作两年了才入手的,书的内容确实对得起书名Java核心,也是非常建议Java程序员看的。
Effectice java
这本书属于进阶一点的内容,如果你是初学者,读这本书可能没有什么深刻体会,很多内容可能读完就忘。但是当你有那么一两个项目的经验,再读这本书,就会发现书中提到的某个规则就是你在很多次工作经验后总结出来的最准确的描述方式。书中介绍了在Java编程中78条最具有实用价值的经验。每一条都以一篇文章给出,类似的系列还有C++的Effective C++。同时你也会发现,里面提到的很多知识点也是面试常客。
Java并发编程实战
并发编程时Java里一个很重要的点。如果看完上面基本大部头里面的多线程部分觉得不过瘾,那么这本书绝对是你的第一选择,相比于国内的图书重实践的风格,这本书可能在一开始阅读时会很慢。本书分4个部分,但是第一个部分就很难读,这一部分阐述了线程安全性,线程对象彼此间的共享,线程对象安全,如何设计足够安全的线程。后面的部分说一些线程工具使用的时候反而轻松点。外国人喜欢理论的东西,所以这本书更多地给你灌输一种并发的思维。反正是需要一些耐心看的,当然看下来觉得受益匪浅。
Java并发编程的艺术
这本书是阿里的大牛方腾飞出品,他的并发编程网是我十分喜爱的网站。这本书从JDK源码,JVM和CPU多角度介绍了并发编程的许多原理性的东西。个人感觉前3章写的比较好,比较深入,后面的章节就有点流水账的意思了。适合有一定JVM基础的人看。
深入理解Java虚拟机
JVM是深入Java不得不过的一个坎,而这本书是国内市场难得的一本关于JVM的好书。这本书从Java虚拟机的内存管理(内存区域划分、垃圾收集的算法和实现、性能监控和调优实战)讲起,接着介绍虚拟机如何执行(类文件的结构、类加载机制、字节码执行引擎介绍),最后还介绍了编译优化和高效并发部分。我看这本书还产生了一些博客。所以想对虚拟机进行深入学习,这本书当属首选。
Java性能权威指南
市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,使程序如虎添翼。另外本书关于G1收集器的部分解释的比较详细,弥补了中文图书这方面的空白。
Java程序员修炼之道
《Java程序员修炼之道》分为四部分,第一部分全面介绍Java7的新特性,第二部分探讨Java关键编程知识和技术,第三部分讨论JVM上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。这本书打开了通向其它基于JVM的语言的大门,书中含有大量代码示例,可以翻阅增长见识。
上面推荐的图书基本都是关于Java语言本身的学习资料,当然作为一个Java程序员需要研究的方向太多了。各类框架、数据库、分布式、大数据都能成为延伸方向,路漫漫,好好看书才是王道。