写点什么

书评: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:114901
用户头像

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

关注

评论

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

2021年,BAT接连入局!“低代码”为何能备受资本追捧?

优秀

低代码

接任务时一定要锁定需求啊!(转自小明同学)

BinTools图尔兹

数据库 dba 国产数据库 运维开发

免费分享JDBC与MyBatis的优秀图书

Java入门到架构

Java

一周信创舆情观察(6.28~7.4)

统小信uos

32岁的我裸辞了,八年Java老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里Offer,定级P7!

Java架构师迁哥

一图读懂DataPipeline实时数据融合平台V3.0

DataPipeline数见科技

大数据 数据融合 数据管理

图的应用——拓扑排序

若尘

数据结构 拓扑排序

MindSpore教程免费学,还有入门奖品

Geek_6cdeb6

人工智能 机器学习 深度学习 自我提升 羊毛

越学越有趣:『手把手带你学NLP』系列项目07 ——机器翻译的那些事儿

百度大脑

机器学习 nlp

北鲲云超算平台——让科技更好地服务于用户

北鲲云

Hightopo可视化入局“智慧工厂”,助力企业改革创新

一只数据鲸鱼

数据可视化 绿色工业 3D数据可视化 高炉炼铁 智慧工业

再获权威认可!DataPipeline实时数据融合平台通过信通院大数据产品能力评测

DataPipeline数见科技

大数据 数据融合 数据管理

爆款阿里P5到P7晋升之路,九大源码文档助我超神果然努力幸运并存

Java BAT

构筑智能制造时代“四重护城河”,联想中国开创产业新格局

科技大数据

我是如何从设计师转到软件行业的? | 可怜巴巴的程序猿

Python研究所

随笔 话题讨论

Mobileye智慧出行再加码,中国市场生态建设取得新进展

E科讯

Redis学习之Redis概述及原理、基本操作及持久化

Linux服务器开发

redis 分布式 后端 中间件 Linux服务器开发

2021百度云智峰会|DataPipeline携手百度赋能实时数据资产构建与应用

DataPipeline数见科技

大数据 数据融合 数据管理

阿里P8手抄本惨遭泄露,并出现病毒式传播,致28人斩获大厂offer

Java架构师迁哥

聊聊事务与分布式系统-从零讲到通透

刘绍

sql 分布式 事务 2PC XA

DataPipeline实时数据融合平台V3.0里程碑版发布!澎湃新动能

DataPipeline数见科技

大数据 数据融合 数据管理

TDengine JDBC整合Druid

山石道人

涛思数据 tdengine Druid Spring MVC taos-jdbc

半年摸爬滚打,我是如何从小白进阶渗透测试工程师

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

正式发布!中国首个LF Edge捐赠项目Baetyl 2.2发布

百度开发者中心

物联网 开源技术

技术干货 | 录屏采集实现教程 —— Android端

ZEGO即构

大前端 音视频 录屏采集 Android端

“用友 • 华为云杯”第三届企业云服务开发者大赛

ToB行业头条

开发者 低代码 用友

5分钟学会本地Pypi源搭建

Python研究所

Python

用好“实时数据管理”助推器,旭辉集团加快数字化转型步伐

DataPipeline数见科技

大数据 数据融合 数据管理

云南智慧公安研判分析系统搭建,重点人员研判分析平台

“京东商城”亿级高并发秒杀系统到底是怎么设计的?自己做该如何下手?

Java架构师迁哥

【架构实战营】第 7 模块作业

swordman

架构实战营

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