自从1995年问世以来,Java已经发展成了全世界使用范围最广的语言之一,每天都有30亿台运行Java的设备活跃在这个世界上的各个角落里。世界上大多数网站的后台使用Spring开发,而Spring开发者必须掌握Java;世界上很多大数据应用使用Hadoop开发,而Hadoop开发者必须掌握Java;世界上第一大操作系统是Android,而Android开发者也必须掌握Java
百万畅销书“Thinking in”系列作者Bruce Eckel专注于编程语言和软件系统设计方面的研究多年,具有丰富的开发经验、扎实的编程基础、独特的观点以及开放深度研讨的创作方式,他的巨著《Thinking in Java》被翻译成十几种语言,在世界范围内产生了广泛影响,而且在1999年还被评为Java领域“最受读者欢迎图书”,中文版更是成为了国内各大高等院校讲授面向对象程序设计语言及Java语言的绝佳教材,然而遗憾的是,这本巨著在2007年出版了第4版后就连续多年没有更新。在读者的呼声中,iTuring公司投入了大量资源翻译并出版了包含从Java 9到Java 17的新语言特性的《On Java中文版》
丰富详尽的内容让本书不得不分为基础卷和进阶卷厚重的两册,封面材质摸起来也很舒服
查漏宝典
本书涵盖所有Java关键特性的设计原理和应用方法,无论是关键字还是操作符,无论是泛型还是反射,无论是字符串还是数据结构。介绍每一类知识点,都循序渐进、由浅入深、没有遗漏,并且延伸出和这个知识点有关的扩展知识,甚至还会介绍到当前知识点的历史版本和多年来的发展历程。譬如基础卷的《12 集合》和进阶卷的《03 集合主题》,不但全面介绍了几大类常见的集合接口——List、Map、Set和Queue,还对LinkedList和PriorityQueue等特殊的子类进行了详尽的分析;并且在《12.13 Collection和Iterator的对比》中将话题自然引申到迭代器模式;最后《3.15 Java 1.0/1.1的集合类》介绍了Hashtable和Vector等只在祖传代码里出现的集合类,方便了年轻的程序员重构“屎山代码”,为本书的集合相关内容画上一个完美的句号。
避坑指南
每一门语言都存在设计缺陷,Java也不可避免。本书作者认为理解语言的设计缺陷是很有必要的,因为很多非常有吸引力的特性常常在程序员毫无防备的时候卡住开发进度,所以作者在本书中很多章节都指明Java开发者不可不知的设计陷阱。众所周知,多态是面向对象三大特征之一,但使用不当会造成严重后果。本书基础卷《9.2.4 陷阱:“重写”private方法》指出了private关键字自带final属性,并提供了避免“重写”private方法的两个解决方案:父子类的private方法不同名,或者利用@Override产生编译器警告;而《9.2.5 陷阱:字段与静态方法》则提示了开发者在子类中调用父类的成员变量要是用super关键字。
经典普适
如果你是一个熟练掌握Java的应届生,那么你找工作可能会容易一些;另外如果你是开了一家公司并决定采用Java作为工作语言,招聘也会容易一些。Java具备无可争辩的普适性,而本书也值得不同层次的Java开发者反复翻阅,初级开发者可以靠基础卷中浅显易懂的示例打下坚实的开发基础;中级开发者也可以从进阶卷里细致入微的原理分析中学到Java语言的高级特性;除此以外,本书只介绍JavaSE本身的使用方法和简单的内部原理,并不引导用户的从业方向,无论是Spring开发者还是Hadoop开发者都可以利用本书;就连Android取代JavaME、前后端分离架构取代了JavaFX和Swing一样的历史变局,也不会导致本书的读者的技能成为屠龙之术。
大醇小疵
本书重理论而轻实践,重技术而轻业务,重长期成长而轻短期结果,传授高效Java编程的时候没有紧密结合应用场景。想要对Java的各个应用方向学以致用,只阅读本书是不够的,想要学好Java然后成为后端工程师,建议补充阅读iTuring的《学透Spring:从入门到项目实战》;想成为大数据工程师,那么阅读过本书之后再阅读《Hadoop 3实战指南》是一个正确的选择。
本书对设计模式的讨论也是不成体系的,尽管本书的进阶卷《08 设计模式》介绍了抽象工厂模式和命令模式等多种设计模式,但对于GoF 23种设计模式是远远不够的,而且关于原型模式的介绍分散在基础卷的《2.3 控制可克隆性》(我其实不建议翻译Cloneable这个接口名的),而动态代理模式的知识则在基础卷的《19 反射》中才得以体现。对设计模式有较强学习需求的读者,建议阅读iTuring的《图解设计模式》进行学习。