java 必读书单推荐

如果你完全没有 Java 编程基础,也可以考虑其他的参考书,例如 《Java 核心技术》
关于夯实 Java 编程基础,我推荐 Bruce Eckel 的《Java 编程思想》(Thinking in Java)
目前很少会需要学习 Java 桌面图形类库等,较新的语法和 API 当然也没有包含,我的建议是尽管忽略过时内容,适当补充 Java 新技术的学习。
提到经典,自然也少不了 《Effective Java》,涵盖了 Java 7 到 Java 9 的各种新特性。
《Head First 设计模式》 这本书就不用我再费笔墨去介绍了吧,能把设计模式用这种轻松的形式展现本身已经十分不易了,章节之间的联系让你可以反复加深印象,加上生动的表达方式和丰富的习题更容易沉浸其中。
关于设计模式,我推荐一本书《设计模式之蝉》

《Java 并发编程实战》,作者全是响当当的人物,比如 Brian Goetz,我多次在专栏里引用他的观点,众多强力作者也保证了书的质量。

关于 JVM 的学习,不用我多说了吧,看过专栏的同学肯定都知道,我经常推荐周志明的《深入理解 Java 虚拟机》,可以说是国内最好的 JVM 书籍之一。

关于性能优化,我推荐Charlie Hunt 和 Binu John 所著的《Java 性能优化权威指南》(Java Performance)

还有一些如开源软件和互联网架构相关的图书可以作为扩展阅读,你可以参考下面这几本。

《Spring 实战》
《Netty 实战》
《Cloud Native Java》
《深入分布式缓存:从原理到实践》
《大型分布式网站架构设计与实践》

学习路线

下面介绍,从开始学 Java 到能够找到工作,再到工作两三年,再到后续的职业规划:

入门阶段,最重要的就是掌握 Java 基础(主要包括基本的语法,各种集合、文件读写、多线程等方面知识),此阶段一般通过视频来学习,然后自己动手多练习。

有了一定基础之后,要掌握 Linux 命令、数据库、版本管理、构建工具和 Web 服务器相关技术,这些都是工作必备的技能。

掌握好上述技术之后,想找 Java 相关工作,必然要掌握 Spring 、 Spring Boot 和 MyBatis,这是很多互联网公司的 “标配”。

一般来说掌握到第 3 个阶段基本可以开始考虑找工作了,此时如果能掌握部分第 4 阶段的内容,找工作会有些优势


下面简单介绍第 4 部分的主要技术:

如果访问量较大,单机的承载量有限,就需要通过多台机器去分担请求,此时就需要负载均衡服务将请求分发到不同的机器上。

现在微服务比较流行,公司内不同服务之间通常会采用 RPC 实现跨机器的调用,因此要掌握 RPC 相关原理和技术(其中就包括注册中心)。

随着数据量和访问量越来越大,尤其是数据量达到千万级以后,查询的性能就会存在问题。因此可以利用化整为零的思想,将数据分摊到多台数据服务器来提高性能,因此就出现了分库分表中间件

为了提升用户体验,提高响应时间,普遍会通过缓存的方式来加快查询速度。因为通常读缓存比直接查数据库更快,而且读缓存可以减少对数据库的压力。

消息队列是为了实现削峰、解耦和异步。稍微大一些的公司就会有多个二方服务,服务之间除了直接调用之外,通常会采用消息队列进行解耦。同一个服务内部也可以通过消息队列通过多实例加快处理速度,也可以通过消息队列处理耗时或者不需要同步的操作,来提高用户体验。

由于数据库搜索能力有限,有些场景下需要更强大的数据搜索能力,此时就要用到了搜索引擎

随着并发越来越高,业务场景也来越复杂,传统的关系型数据库局限就暴露出来,有时候需要引入非关系型数据库来解决问题。

上述技术都是电商类网站比较常用的技术(且不限于此)。

第 4 阶段的技术,有条件的话可以购买视频看效果更好,其次可以阅读后面推荐的相关图书,对找工作帮助也很大。


除了前面讲到的技术之外如果想进一步进阶,还要推荐掌握下面的知识,如 UML 作图、设计模式、领域驱动设计,还需要巩固好专业基础,还需要提供沟通表达能力。

图书推荐

初学者建议看视频为主,不建议看书。

下面推荐大家在阶段 3 时,在找工作前可以读读下面几本书。

  • 《Java 8 实践》(基础)
  • 《Java 编程的逻辑》(基础)
  • 《阿里巴巴 Java 开发手册》(基础)
  • 《码出高效》(基础)
  • 《深入理解 JVM》(进阶,面试必问)
  • 《Java 多线程编程核心技术》(重要)
  • 《Java 并发编程的艺术》(重要)
  • 《设计模式之禅》(重要)
  • 《剑指 Offer》(重要)
  • 《MySQL 技术内幕》(选读)

上面推荐的图书,标注为 “基础” 的图书相对来说比较容易,有助于巩固基础。现在 Java 面试,虚拟机几乎是必须问的问题,一般都不出《深入理解 JVM》这本书,建议反复阅读。找工作如果出算法题,一般都在《剑指 Offer》或者 LeetCode 里。MySQL 也是面试的重点,可以读读《MySQL 技术内幕》或者购买相关专栏重点学习(尤其是聚簇索引,最左前缀原则,B+ 树,SQL 优化等)。

如果有条件,推荐求职前读读下面几本书。尤其是《Redis 深度历险》面试时问 Redis 相关问题一般不会超过这本书的范畴。

  • 《Redis 深度历险》(必读)
  • 《Elasticsearch 实践》(选读)
  • 《Hbase 不睡觉书》(选读)

一般说来,前 3 个阶段的知识都能熟练掌握,上面的图书都读地不错,本身又热爱技术,面试问题不大。


找到工作以后,建议大家要重视编码风格,提高代码可读性、可维护性。这有助于帮助你写一手优雅的代码:

  • 《阿里巴巴 Java 开发手册》
  • 《重构 - 改善既有代码的设计》
  • 《代码整洁之道》
  • 《编写可读代码的艺术》
  • 《修改代码的艺术》

找到工作之后,建议大家重视 Java 官方文档并且可以读读 Java 领域非常知名和经典的图书:

  • 《Java 语言规范基于 JavaSE8》
  • 《Java 虚拟机规范》(Java SE 8 版)
  • 《Java 编程思想》
  • 《Java 核心技术》
  • 《Effective Java》

工作两年左右就要从更宏观的角度思考问题、设计方案,此时可以考虑学学架构。可以读读下面几本架构相关的书:

  • 《微服务架构与实践》
  • 《微服务设计》
  • 《聊聊架构》
  • 《架构整洁之道》
  • 《演进式架构》
  • 《微服务架构设计模式》

再往后进阶架构师或管理岗。架构和管理方面的书非常多,大家可以在豆瓣、京东或当当上查看排行榜,有选择性购买。

下面推荐几本书:

  • 架构:《架构师修炼之道》、《一线架构师实践指南》、《架构真经》
  • 思想:《高效能人士的七个习惯》、《第 3 选择》
  • 管理:《可复制的领导力》、《领导梯队》
  • 产品:《产品方法论》

在读各种经典的设计理念和架构基础上要形成自己的方法论,还要学习沟通和团队管理方面的知识,不断进阶。

你可能感兴趣的:(java 必读书单推荐)