写点什么

书评:Java 核心编程卷 1——基础

  • 2013-11-04
  • 本文字数:1901 字

    阅读完需:约 6 分钟

现在已经步入了 21 世纪,我们很难想象曾经 Java 相关的图书是那样的稀少,但这就是 Java 刚出现时的情况。那时所有与 Java 相关的图书基本上都是由 Sun 公司的几个工程师们所发布的,比如说 Arthur Van Hoff et.al 所写的“Hooked on Java”以及 Patrick Naughton 所写的“The Java Handbook”。

当然了,这些图书填补了 Java 的空白,不过每本书都有 3、400 页,这些图书都假设读者了解程序,特别是面向对象程序设计。

1996 年 Cay Horstmann 与 Gary Cornell 出版了名为“Java 核心编程”的图书,这本书有 600 多页,它没有做任何假定,从头开始教授读者 Java,这本书的风格清晰且可读性强,不禁让我们回想起早期 Brian Kernighan 与 Patrick Henry Winston 的编程课程。

17 年转瞬即逝,Horstmann 与 Cornell 又出版了 Java 核心编程第 9 版。该版共分为两卷,卷 1(基础)有 974 页,卷 2(高级特性)甚至达到了 1128 页。你可以在书中找到有关 Java 7(最新的 JDK 版本)的一切内容,包括集合、泛型、并发以及从 JDK 的首个版本发布以来 Java 的所有特性。

新版的编写风格依然清晰且具有很强的可读性,并且提供了大量的示例,这些示例虽然基本但却很重要。显然,作者在创建这些示例时经过了大量的思考,示例非常详尽,为读者提供了很有价值的参考。书中充斥了大量的“C++ 注释”,旨在以 Java 的方式来指导 C++ 程序员。

(单击下图以放大查看)

卷1 首先介绍了Java 的历史以及语言设计者的最高诉求(健壮、可移植、多线程等等)。然后是一个简洁的上手指南,包括下载与安装Java 语言环境(包括JDK 与Eclipse IDE)的说明。这部分提供了一些可靠的代码示例,你可以通过一些可视化的Applets 来测试安装环境。

接下来介绍了最基本的数据类型以及语法、程序结构和控制流,详细解释了BigNumber、BigDecimal 与BigInteger。

介绍完基础内容后,本书又开始详细介绍面向对象编程(OOP)。拥有C 语言等过程式背景的程序员一般都会觉得向OO 转变是个比较困难的过程。Java 核心编程这本书在这方面做得非常棒。讨论首先从一些基本的UML、直观的示例以及Java 中的类与对象开始。接下来继续深入到Java 风格的OO 中,包括类文件与构造方法。本章最后给出了一些“类设计提示”,这是用于创建良好、可读且可重用代码的最佳实践。

OO 讨论之后的几章会开始介绍继承、接口与内部类,并给出了相应的 Java 实现。

接下来的 4 章有 300 页,是关于图形编程开发的,包括主要的 Swing 组件、字体、使用颜色、处理鼠标与键盘事件、布局管理器、Applets 以及部署策略,如浏览器、Java Web Start 与 JAR 文件。我比较失望的是书中并未提及 JavaFX,因为 JavaFX 现在已经成为 Java 核心库的一部分了,并且作为 Swing 的扩展使用。

再往下的一章介绍了异常处理,显然这里会介绍调试技巧、日志以及如何使用调试器。后面的一章介绍了泛型编程。即便是有经验的 Java 程序员在这个主题上也会遇到问题,不过介绍的过程却是非常清晰的。本书还介绍了 Java 7“Project Coin”中所引入的新的钻石表示法。然后开始介绍 Java Collections 与 Maps,包括一些算法,并且简要介绍了老式的 Collections 与 Maps,如 Hashtable、Vector 与 Enumeration。

本书最后通过 108 页的篇幅从头开始介绍多线程。该章以“什么是线程”开始,然后介绍“线程状态”,给出一个漂亮的状态图,介绍了通过“同步”进行的转换并讨论了竞态条件。接下来介绍了 Java 5 中引入的 java.util.concurrent 组件。然后介绍了 Executors 与线程池,“同步”组件,通过使用线程来确保 Swing UI 的响应性讨论了 SwingWorker 的概念。

我认为加入多线程一章是个很好的决定,而在之前的版本中这一章被放到了卷 2 中。并发对于所有重要的 Java 代码来说都是很必要的,并不应该被当作高级特性。然而,我很遗憾地看到关于 Streams 与 Readers 的章节被放到了卷 2 中,因为他们也是基础的主题,卷 2 在今年 3 月出版。

自从 1995 年首次发布以来 Java 得到了长足的发展,这不仅体现在表达性方面,周边的生态系统亦是如此。Java 核心编程内容很多但却十分详尽,读起来没有压力,对于程序员新手、来自其他语言的程序员、甚至是高级 Java 开发者(想要在手边放一本能够清晰展现 Java 核心的各个主题的图书)来说都是一本非常不错的图书。

关于本书作者

Cay S. Horstmann 是“Scala for the Impatient”(Addison-Wesley,2012) 的作者,也是“Core JavaServer Faces”第 3 版(Prentice Hall,2010)的合著者。他是圣何塞州立大学计算机科学系的教授,Java Champion,也经常在各种开发者会议上进行演讲。

查看英文原文: Book Review: Core Java Volume 1 - Fundamentals

2013-11-04 09:115084
用户头像

发布了 88 篇内容, 共 273.1 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

持续集成工具篇:Jenkins与流水线管理

自动化 持续集成 jenkins 持续交付 构架

【建议收藏】Kafka 面试连环炮, 看看你能撑到哪一步?(上)

王江华

大数据 kafka 面试 中间件 消息队列

建设领先的AI原生云,百度智能云落地新一代高性能AI计算集群

百度大脑

微博评论的高性能高可用计算架构

AragornYang

架构训练营 架构实战营

做一个小程序到底要多少钱?都有哪些费用?

源字节1号

开源 前端开发 后端开发 开发小程序

对称加密与非对称加密总结

暖蓝笔记

3月月更

图灵奖得主Yann LeCun走进百度,与世界研究工作者展开交流

百度大脑

架构训练营毕业总结

Geek_e6f7f6

架构实战营

尤达DDD领域驱动设计思想 第一章作业(理解单纯的面向对象设计思想的缺陷)

代廉洁

尤达DDD领域驱动设计思想

尤达 DDD 领域驱动设计思想 第二章作业(重新划分SmartRM的子域和限界上下文)

代廉洁

尤达DDD领域驱动设计思想

vim 常用操作键tips

刁架构

xcode vim 快捷键

Flutter 图文并茂列表完整实现

岛上码农

flutter ios 安卓 移动端 3月月更

报名啦!中小企业如何借力AI逆势突围?飞桨中国行定档3月23日!

百度大脑

Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器

汪子熙

eclipse ide 开发者 abap 3月月更

AI语音识别-我给浏览器加了个语音搜索功能

DS小龙哥

语音识别 3月月更

免费机器资源、硬核导师、丰厚奖励|飞桨黑客马拉松第二期开始啦!

百度大脑

吉利控股集团与百度深化战略合作

百度大脑

[算法练习]2 二进制中1的个数

暖蓝笔记

3月月更

面向智能合约、区块链、Web3、以太坊开发工具指南

devpoint

Ethereum infura Solidity Web3.0 3月月更

优秀的测试开发应该具备的六大能力

老张

软件测试 测试开发

模块化编程及LCD1602调试工具

謓泽

3月月更

实用机器学习笔记二十六:NAS

打工人!

学习笔记 NAS 机器学习算法 3月月更 神经网络架构搜索

百度连续四年亮相全球量子信息处理顶会QIP 宣布量子战略规划升级

百度大脑

一文彻底搞懂原型链

CRMEB

RENO: Netflix的快速事件通知系统

俞凡

架构 netflix 大厂实践 3月月更

LeetCode刷题笔记:数组中重复的数据

OpenHacker

JavaScript 算法 LeetCode

有温度的人工智能,零门槛助力企业“鲤跃”智能化“龙门”

百度大脑

纯CSS 神奇的边框特效

德育处主任

css3 纯CSS 前端可视化 css动画

威胁驱动的网络安全方法论

喀拉峻

网络安全

拿下10+OFFER总结的HR常问问题

暖蓝笔记

3月月更

使用关键点检测打造小工具Padoodle,让涂鸦小人跟随真人学跳舞

百度大脑

书评:Java核心编程卷1——基础_Java_Victor Grazi_InfoQ精选文章