推荐给初级Java程序员的3本进阶书

在这篇文章中介绍3本不错的技术书籍。作者认为这些书籍对新手或者学生而言尤其有帮助。通过一些基础性的教程入门后,我们可以使用Java做基础性的编程。然而,当我们需要从初级提升更高的一个层次时,大多数的人却不知道从何入手。一些好的书籍在这个阶段可以很好地帮助初级开发人员。

Head First设计模式

这本书介绍 GoF 常用设计模式的方式引人入胜。如果只看封面很难看出来这是一本技术书籍,更不用说这本技术书籍介绍的还是面向对象编程的一些很有用的技巧。这本书采用 Kathy Sierra 式编写风格:虽然她的博客已经关了,但是还是能从前面这个链接看到一些她的文章,建议读一读。如果你周围有人认为设计模式没有什么用处,这本书倒是能够让他们改变看法。个人而言,我认为经典的 GoF 手册是一个很好的参考,但它并不是专为新手准备的。因此强烈推荐在校生(包括那些不清楚组合模式是什么的程序员们)阅读此书。

书中介绍的设计模式是程序开发中比较基本的编程模式,也是面向对象编程的程序员应该了解和掌握的。接下来要介绍的这本书则更偏向于Java语言本身,这也是我日常使用的编程语言。

Effective Java中文版》第二版

每个Java程序员的书桌上都应该放有这本书。让我们先了解下作者:

Joshua Bloch是Google公司的首席Java设计师,并且也是一位Jolt 奖获得者。他之前是Sun的一位杰出工程师(distinguished engineer),也是Transarc公司的一个资深系统设计师。Bloch主导了众多基于Java平台的软件系统的设计和实现,包括JDK5.0的功能加强以及获得过奖项的Java集合框架的设计实现。他同时也参与编写了《Java解惑 | Java Puzzlers》 和《Java并发编程实战 | Java Concurrency in Practice》这两本技术书。

就凭“Java集合框架开发者”这个称号,我们就应该认真听取这位值得尊敬的程序员的建议。这些建议在这本书中组织成78个点:读者可以按照自己的速度进行阅读。

  • 在复写equals和hashcode方法时,我们应该遵循什么规则?
  • 不可变类(immutable class)是什么?
  • 在特定的情况下,应当选用哪种最相关的异常类型?运行时异常(Runtime exception)还是可捕获异常(checked exception)?
  • 对于一个托管语言(managed language,详细请参考 wiki介绍),如何在混淆编译时保留(preserve)类的成员?

上面所有的问题(也包括其他74个)都有实用主义者Joshua Bloch的详细解释。读完这本书,程序员应该能意识到使用FindbugsCheckstyle这些工具的必要性了。

Java并发编程实战

一年前我正努力在做 UI 开发工作时(在Eclipse 插件中使用SWT/JFace,其他一些项目则使用Swing ),就看了这本书。那时,我想了解如何实现一个快速响应的UI,从而能给用户更好的使用体验。我知道自己写线程安全的代码是非常复杂的,尽管运行时间长的操作通常是一个独立的线程。UI开发和多核系统应用开发是学习如何开发线程安全的软件系统的一个很好的理由。

这本书的作者如下:Brian Goetz,Joshua Bloch(又出现这位大牛了,我们刚提到过,还记得吗?), Doug Lea(java.util.concurrent包的开发者), David Holmes,Tim Peierls 和Joseph Bowbeer

这本书的风格非常直接,有的代码在非线程安全的环境下表现不错,可一旦到了线程安全的环境下就变得十分的危险。接着,这本书介绍了基本的保证线程安全的机制:同步机制,volatile关键字等。本书还有对java.util.concurrent接口的介绍,你可以根据自己的需要来选择适合的并发集合类。这本书也介绍了程序运行时的错误管理,以及如何测试代码是否是线程安全的。而且书中还提供了说明性的注释(Annotation)(下载),这些注释通过了FindBugs的检查!

还有其它推荐吗?

其实还有不少书值得推荐,不过现在我优先讨论这三本。如果你一本都还从没读过,那么我建议你按照本文介绍顺序进行阅读。好啦,你喜欢的技术书籍有哪些呢?

原文发布于微信公众号 - java一日一条(mjx_java)

原文发表时间:2016-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏纯洁的微笑

我来告诉你,一个草根程序员如何进入BAT

1875
来自专栏PPV课数据科学社区

Eric Raymond 对于几大开发语言的评价

来源:孟岩 英文:Eric Raymond 链接:blog.csdn.net/myan/article/details/1923 【译注】:Eric Raym...

3606
来自专栏我是攻城师

4个理由告诉你Java为何排行第一

2915
来自专栏数据科学与人工智能

【数据】数据科学家喜欢Jupyter Notebook的10个原因

在过去的二十年中,Python越来越多地用于科学计算和数据分析。 今天,Python的主要优势以及它如此受欢迎的主要原因之一是它将科学计算功能带给了许多研究领域...

3387
来自专栏CDA数据分析师

帮你提升 Python 的 27 种编程语言

27 种语言 过程型编程语言: C, Rust, Cython 面向对象数据建模语言: Java, C#, Eiffel C 的面向对象衍生语言: C++, D...

2528
来自专栏编程心路

技术趣味史-Java语言的身世

时间回到 1990 年 12 月,一个叫做 帕特里克·诺顿 的大佬被他公司 Sun 开发的 C++ 和 C语言编译器搞得头大,主要是因为当时 C语言 对一些硬件...

995
来自专栏Python中文社区

Why Not Python?

Python是一款简单强大又好用的动态语言,但我不解的是,为何这样一个好用的语言,在国外已经流行了十几年,但在国内不要说流行,问很多人的答案都是...

2928
来自专栏企鹅号快讯

C加加是否到了生死存亡的时刻?不,C加加仍然在编程界任是不可替代的

C++是否逐步被取代 C++最能考察一个人对计算机知识掌握的能力。windows使用C、C++写的,现在又有qt、codeblocks等跨平台开发工具。可以这样...

2379
来自专栏java工会

一位10年Java工作经验的架构师聊Java和工作经验

时光飞逝,我事业中第一个十年已然结束了。在这十年里,让我收获了很多,跟大家分享一下我在 IT 职场方面的一些个人经验,不一定对每个人都实用,请大家仅作参考吧。

1383
来自专栏java工会

一位10年Java工作经验的架构师聊Java和工作经验

1806

扫码关注云+社区

领取腾讯云代金券