学Java,Java书籍的最佳阅读顺序

学Java,Java书籍的最佳阅读顺序

疫情以来,好久没出差了,今天出差去趟上海,早上 4 点多就起床了,到机场天都没亮。到登机口离起飞还一小时,趁着等飞机的时间,抓紧码字,把这篇文章收个尾。

今天和大家说说学 Java 的读书路线。路线中的书籍我自己都看过,希望整理的这份读书路线,能帮大家少走弯路,对大家学 Java 有个参考。

初学乍练

入门 Java,推荐《Java核心技术》第 11 版,这其实是一套书,分为两本:

  • 卷1 基础知识(豆瓣 9.2 分)
  • 卷2 高级特性(豆瓣 8.4 分)

我估计 70% 的 Java 程序员入门看的是这本书,写的经典、全面,对 Java 各种特性,都会有对应的代码示例。

不过,这里的内容,有不少是没必要学的。我在以前的文章提起过,大家可以参考。

同时,光看这本书作为入门有个问题,就是只能知其然,却不知所以然。而不知所以然,必然会导致咱们的基础会不够牢靠。

所以再推荐一本书配合《Java核心技术》一起看,书的名字叫《Java编程的逻辑》(豆瓣 9.1 分),作者马俊昌。

这本书讲解 Java 基础知识的基础上还会告诉你底层的原理,比如,Java 的枚举本质是什么,还会告诉你 Java 为什么这样设计 API。

总之,《Java核心技术》和《Java编程的逻辑》联合学习,算是珠联璧合,对入门 Java 是再合适不过的了。

这里多说几句,入门打基础十分重要,对于编程这种实践类的学习,想打好基础,光靠读书,是远远不够的。一定要经过大量的代码练习。所以,在这个时期一定要多作代码练习。这里,我给出一些可以自己尝试的练习:

  • 排序算法的小练习
  • 字符串查找的小练习
  • 对系统文件做下增删查改
  • 递归的小练习
  • 使用 Java 集合的小练习
  • 写个小游戏、小东西能综合训练下学到的所有技能

得窥门径

做程序员,大部分的时候,咱们都需要通过写各种各样的 SQL 操作数据库。咱们是 CRUD Boy 嘛。

所以,SQL 咱们要学,学 SQL 我推荐《SQL必知必会(第5版)》(豆瓣 9.5 分)。

这本书的组织结构非常好,哪怕是你对 SQL 一窍不通,也能通过这本书的引导,由浅入深的把 SQL 语言学个七七八八。

更重要的是,这本书叫必知必会,也就是说,它的内容都是精挑细选,必须学的内容。里面半分冗余的知识点都没有,内容全是干货。一定要好好读这本书。

略有所成

学会了 Java 基础,知道了怎么用 SQL 之后,如果往下走,想继续提升自己该学什么?

我的答案是去深入掌握多线程编程。因为只有懂了多线程编程,咱们才能处理各种稍微困难的需求。比如,快速处理大量用户对系统的访问;又比如,想同时访问多个第三方接口。

多线程编程又叫并发编程,其实是很复杂的事情,看一本书就想掌握它是不太现实的。我这里会推荐三本书,配合起来,一步步从多线程的原理到多线程的实战全部贯穿起来。

对于多线程的理解,我推荐的第一本书是《Java并发编程实战》(豆瓣 9.0 分)。

这本书是一本非常经典的关于多线程编程的书。里面对Java的多线程方方面面的细节都讲的非常到位。只是由于多线程确实太复杂,涉及到的知识也太广了,导致这本书出现了两个问题:

  1. 理论过多:《Java并发编程实战 》里会花费很大篇幅,去阐述一些多线程涉及到的理念和思想,但是代码例子却给的极少,这就导致咱们看的很吃力、很累。
  2. 某些点讲的不够透:多线程涉及到的知识非常广,《Java并发编程实战 》是尽量全涉及了。这就造成很多知识点讲的很浅,没有讲透。这就会让人很困惑,导致有些知识点连不起来,影响对整本书的理解。

所以,我这里推荐第二本书《Java多线程编程实战指南(核心篇)》(豆瓣 9.0 分)。

这本书代码例子多,《Java并发编程实战 》有些讲不透的知识点,这本书会有所弥补。所以,当看《Java并发编程实战 》的时候,不管是需要练习代码,还是想去搞清楚知识点,《Java多线程编程实战指南 》这本书都极为合适。

多线程我再强调一下,这是 Java 很高级的特性,也是很难的部分,很多哪怕是工作了 3、4 年的程序员,对此也掌握的不到位。

上面说的两本书,有原理,有代码示例,如果是换成别的知识,那可能足够了。可是对于多线程这么复杂的东西,我们还需要把学过的所有零碎知识点去综合贯穿起来,形成关于多线程的知识体系才算是真正掌握到位。

所以,这就得推荐第三本书《图解Java多线程设计模式》(豆瓣 8.6 分)。

跟着这本书的讲解,把咱们所有的知识点通过练习书中介绍的所有模式,去串起来,才最终算是多线程的学习告了一个段落。

登堂入室

学会了多线程编程,咱们此时要知道一件事,大部分时候,多线程编程,其实就是网络编程的最重要的一种手段。而网络编程,虽然有了 Netty 框架等很优质的网络框架了,但是理解背后的原理,对咱们定位项目的 bug,优化代码的性能,帮助非常大。

《Java TCP/IP Socket编程》(豆瓣 8.0 分)

这本书,我们既可以去学到必要的网络基础,也能学会怎么用 Java 去网络编程,非常推荐。

对于网络编程,大家都知道,这是易学难精的技能。学懂原理,了解网络编程,看看我上面推荐的书就够了。但是,要精通网络编程,写好网络相关的程序,那是相当不容易的。

所以,在 Java 圈,一旦遇到网络编程相关的事情,大家都会采用 Netty 框架去做。Netty 框架让我们能不需要成为网络编程大师,就能写出非常优秀的网络应用。

了解 Netty 框架对咱们也是非常重要的一件事,学习 Netty 框架,推荐《Netty实战》(豆瓣 7.5 分)。

这本书,把 Netty 的方方面面讲的很全,Netty 的设计思想也覆盖了大部分,对于熟练使用 Netty 完全够用了。

融汇贯通

作为 Java 后端工程师,几乎都要用到 Spring 框架的。哦不对,Spring 已经不能叫框架了,得叫体系、生态了。学好 Spring,对咱们找工作,做项目,甚至设计架构,都是极其重要的。

但是,学好 Spring 也没那么容易。Spring 发展到现在,它已经成为了一套完整的体系了,而且 Spring 迭代非常快,几乎每年都会出现大的变化。所以,市面上的书籍,单独靠那么一两本书,是不太可能学好的,建议把一些经典的 Spring 的书联合起来读,才有希望深入掌握Spring。

对于 Spring 这套体系,它现在是又多又繁杂,就算要入门,都不知道从何处下手。这里,我想谈谈我的经验。

虽然 Spring 变化确实很快,但是,它有几个地方,是这么多年几乎没发生过什么变化的。

没有什么变化的第一部分,就是 Spring 的设计思路。Spring 的设计思路,永远都是作为 Bean 的容器,去管理好 Bean ,这是它永恒不变的地方。

没有什么变化的第二部分,就是 Spring 的内核。Spring 的 ApplicationContext 等核心 API 是没有什么大的变化的。

所以,咱们就应该先从 Spring 这些不变的核心先入手。掌握住 Spring 的思想,Spring 的内核,哪怕 Spring 本身再变化,对咱们来说,也只是一种外在的 API 变化而已。

要达到这个目的,我会推荐大家看一本很老的书《Spring揭秘》(豆瓣 9.1分)。

虽然这本书主要是以 Spring3 的讲解为基础,但是,这本书对于 Spring 的编程思想讲的极为透彻,是有关 Spring 的书中,难得一见的好书。入门 Spring,这是我推荐的第一本书。

理解了 Spring 的编程思想不够,我们需要利用这些思想,去实践演练,加强我们对 Spring 的理解。

这时候,就得有本书,能真正的带我们实战下Spring的各个组件——《精通Spring 4.x》(豆瓣 8.5 分)。

我知道现在 Spring 5 在逐渐进入主流,但是,Spring 5 也只是在 Spring 4 的基础上增加了一些新特性。而 Spring 5 的书,我至今没看到有《精通Spring 4.x》这本讲的这么全的,所以,写代码做练习,还是推荐用《精通Spring 4.x》。

理解了 Spring 的理念,用很多代码练习练习实践之后,我们就只需要知道 Spring 5 的一些特性就能跟上 Spring 发展的步伐了。

可以看下《Spring 5 开发大全》(豆瓣 8.3 分),这本书对 Spring 5 的新特性介绍很全。我们只需要翻翻,熟悉新特性、新 API 即可。

另外,Spring 5 有个变化最大的地方:它用了很多响应式编程的东西。这方面,大家相对比较陌生,有闲有钱的话,可以看看《Spring响应式编程》。

关于 SpringBoot,由于它的易用性,它已经迈入主流。不过 SpringBoot 也只是以 Spring 为内核的一套应用框架而已。找本书,学习它是如何通过添加一些模块和功能,去降低大家使用 Spring 的门槛的,也就够了。

同样,有闲有钱的话,可以读下《Spring Boot 2实战之旅》。

返璞归真

前面大家跟着我推荐的书学习完了,基本就可以是一位非常合格的程序员了。但是,注意,你只是合格,但是还不算优秀。

如果我们想更加优秀,让自己职业道路能走的更远,还需要一些非开发的知识学习。只有通过叠加这些 Buff,我们才能在众多的技术同事中,脱颖而出,锥出于囊。

在实际开发里,代码可读是我们评价同事好不好合作的一个重要标准。一位同事,写的代码乱七八糟,你不管是接手维护还是想只是用一些对方的代码,都非常别扭难受。

所以,咱们的代码一定要写的干净整洁可读,给别人非常好的印象。这样,对咱们的团队合作和职场发展,才会有更大的帮助。

把代码写的干净可读,我推荐看《代码整洁之道》(豆瓣 8.7 分)。

这本书,讲解了什么才是好的代码,跟着这本书学,你写的代码会更让人赞赏,也更让人愿意和你合作。

除了代码可读,咱们还得让咱们写的代码好维护,易扩展。因为需求是千变万化的,如果你写的代码可维护性,可扩展性不够,那后续你会陷入无休止的改代码海洋里,你所有的精力都会被这些不停变换的需求吃干抹净,直接让你寸步难行。

而写易扩展,易维护的代码,就必须知道设计模式。有了设计模式,你闭眼都能写出不错的代码来。学习设计模式,推荐《Java设计模式》(豆瓣 9.1 分)。

这本书,对设计模式的来历发展,概念思想,讲解的淋漓尽致,推荐阅读。

Java 这套读书的学习路线,是我一本一本全部读过,才推荐给大家的,希望大家最终能坚持读完,学透。

最后再总结一下这个书单:

  • 《Java核心技术》卷1、2
  • 《Java编程的逻辑》
  • 《SQL必知必会》
  • 《Java并发编程实战》
  • 《Java多线程编程实战指南(核心篇)》
  • 《图解Java多线程设计模式》
  • 《Java TCP/IP Socket编程》
  • 《Netty实战》
  • 《Spring揭秘》
  • 《精通Spring 4.x》
  • 《Spring 5 开发大全》
  • 《Spring响应式编程》
  • 《Spring Boot 2实战之旅》
  • 《代码整洁之道》
  • 《Java设计模式》

以上书单都是我推荐的,其他没列的书籍,比如《Java编程思想》、《重构》等等,也都是好书,大家自己酌情补充。


你好,我是四猿外。

一家上市公司的技术总监,管理的技术团队一百余人。

我从一名非计算机专业的毕业生,转行到程序员,一路打拼,一路成长。

我会把自己的成长故事写成文章,把枯燥的技术文章写成故事。

不知不觉,我原创了不少文章,最近把其中的一些精华文章做了个汇总整理,优中选优,整了一份文档——《爬坡》。

《爬坡》里包括了 15 篇技术文章(包括学习编程技巧、架构师、MQ、分布式)和 13 篇非技术文章(主要是程序员职场),一共十万多字。

这个文档的获取方式戳这里