我的新书,《第一行代码 Android 第 3 版》已出版!

3,372

《第一行代码——Android》这本书自 2014 年出版以来,已经过去了 6 个年头。期间 Android 系统版本经历了 4.0 到 10.0 系统的巨大升级,开发技术也发生了翻天覆地的变化。在 2016 年的时候,我曾对书中的内容进行了大幅度的更新,出版了这本书的第 2 版,也就是所谓的《第二行代码》。而如今,再隔 4 年之久之后,《第三行代码》终于要以全新的面貌跟大家见面了。

创作

不得不说,《第一行代码 第 3 版》这本书,在出版的过程中经历了太多坎坷,以至于到今天才能跟大家见面。这里先跟所有的读者朋友们说声:对不起,让你们久等了!

早在 2017 年,Google 在 I/O 大会上宣布 Kotlin 将成为 Android 系统的一级开发语言,从此与 Java 平起平坐。那时我就猜想到,在 Android 应用层的开发语言将掀起一场大淘汰式的替换。当时图灵出版社也看到了这个新闻,图灵的编辑很快就联系我,问我准不准备写一本 Kotlin 方面的书?

我认为掌握一门语言是需要时间沉淀的,学语法可能两周就能搞定,但要想体会到精髓,则需要不断通过写代码去磨练和提升。那个时候我不认为我具有写好这样一本书的能力,所以也就没有答应。

长期关注我的朋友应该知道,在这之后的一年多时间里,我把时间基本都放在了 GifFun 这个开源项目上面。这个项目一开始是使用 Java 来写的,中途被我切换成了 Kotlin。因为我知道,要想熟练掌握一门语言,最好的方式就是不断用它来写代码。我也就借此机会,对 Kotlin 有了更加深刻的理解。

到了 2019 年,我和出版社又重新进行了商讨,准备对《第一行代码》再度更新,推出第 3 版,这次会将全书的代码都改用 Kotlin 来实现。但问题在于,Kotlin 作为一门新兴语言,程序员基数远不可能有 Java 那样庞大。如果换了语言之后导致大量读者看不懂怎么办?

当时出版社提出了一个方案,让我单独再写一本专门讲解 Kotlin 语言的书,和《第一行代码》配套使用。不过我认为这个方案会提升《第一行代码 第 3 版》的阅读门槛,就没有答应。

几经思考之后,我认为想出了一个最佳的写作方案:在一本书里面同时讲解 Android 和 Kotlin 这两门技术。这也将会是《第一行代码》中首次引入编程语言的讲解。

但如何安排这两门技术之间的内容顺序是一件非常有挑战的事情。因为 Kotlin 是 Android 程序的开发语言,很显然需要先掌握语言才能开发 Android 程序。可是如果先花小半本书的篇幅讲解 Kotlin,然后再开始学习 Android 开发,这种学习方式一定非常枯燥,因为学编程语言最怕的就是光学不练。

为此,我决定采用一种或许别人从未尝试过的方式,将 Kotlin 和 Android 穿插在一起讲解。首先使用一个快速入门章节介绍 Kotlin 的基础知识,然后利用已掌握的知识开始学习 Android 开发,这样可以做到立刻上手实践。之后的每一章当中,都会结合相当章节的 Android 内容再学习一些 Kotlin 的进阶知识,等学完整本书之后,你就能同时熟练地掌握 Android 和 Kotlin 这两门技术了。

这种穿插讲解的方式非常考验我的内容设计能力,因为每章的 Android 开发中用到的 Kotlin 知识不能过于超前,不然读者会出现看不懂的情况。同时每章讲解的 Kotlin 知识又要结合着相应章节的 Android 知识,这样才能更好地理解该知识点的用法与场景。它们之间的内容是相辅相成的。

为此,在前期制订目录上面我就花了将近一个月的时间,之后编写 Kotlin 快速入门这一章又花了两个多月的时间。因为我以前从来没有写过编程语言类的书,为了把 Kotlin 重要的基础知识在这一章里面都体现出来,我花费了很多心思。在编写这一章的过程中,Google I/O 2019 大会上正式宣布了 Kotlin First 的口号,Kotlin 已经不再和 Java 是平起平坐,而是变成一等公民了。虽然这是我意料之中的事情,但是比我预期来得要早,也让我更加坚定了写好这本书的信心。

《第一行代码 第 2 版》是 2016 年 3 月份开始动笔的,同年 9 月份完稿,12 月份出版。《第一行代码 第 3 版》是 2019 年 3 月份开始动笔的,但是 9 月份却远远无法完稿,因为改动内容和新增内容要远比第 2 版时大得多。我几乎把所有的业余时间都放在了上面,最终在 11 月底才勉强全书完稿。

本来是想着好事多磨,好书也不怕晚出版几个月,过完年应该就可以跟大家见面了。没想到,我们恰好碰上了一场从未遇到过的疫情灾难,包括 17 年前的 SARS 也没有今天的新冠疫情严重。

这场疫情导致中国各方面都受到了极大的创伤,学校停课,企业停工,大家都只能呆在家里,不出门就是最安全的。而受疫情的影响,出版社、印刷厂都延迟上班,无法复工。我每天在公众号中都会被读者追问,新书到底什么时候可以出版?这个问题我当时真的无法回答,疫情所带来的影响要持续到何时真的没人知道。

后来到了三月份,国内的疫情已经逐渐控制住,多数企业也在慢慢复工复产了,这本书才终于能够得以出版印刷。但是,虽然国内的疫情已经缓和,海外疫情却紧接着爆发了起来,截至到我写本篇文章时也没有任何缓和的迹象。现在仍然不知道这场疫情给全球带来的影响要持续到何时,我真心希望你在阅读这篇文章时,新冠已经成为了过去式,每个人都恢复到了正常的生活当中。

经过了如此多磨难才诞生的这本书,希望能给大家送去更多的知识吧。

变化

我相信一定会有很多读者朋友都想问一个问题:《第一行代码 第 3 版》相比于《第一行代码 第 2 版》具体有哪些变化呢?在这里我就向大家详细地介绍一下主要的变化部分。

首先是编程语言上的改变,本书前两版都是使用 Java 作为应用程序的编程语言,而第 3 版使用了 Kotlin,这也是目前 Google 最推荐我们使用的编程语言。

本书的前两版中也没有涉及过语言方面的讲解,默认读者是有 Java 语言基础的。而第 3 版中对 Kotlin 语言进行了非常全面的讲解,不需要读者有任何 Kotlin 语言的基础。

另外你需要知道,《第一行代码 第 3 版》是一本升级版的书,而不是一本全新的书,因此书中整体的知识架构仍然和《第一行代码 第 2 版》是保持一致的。

虽然整体知识架构不变,但还是涉及了一些章节上的变动。

第 3 版中移除了之前第 2 版中的 11、15 两章内容。这两章内容分别讲解的是 LBS 开发、以及 App 上架。

LBS 开发其实主要讲解的都是百度地图 SDK 的用法,但是百度地图 SDK 很可能会频繁更新,而书中的内容却是不能随意改变的,所以我认为这部分内容更应该去百度地图的开发者官网进行学习。

至于 App 上架主要讲解的是 360 应用商店的上架过程,由于现在国内的 App 上架已经变得非常复杂,个人开发者都需要专门去申请软件著作权才能将自己开发的 App 上架到应用商店,书中的内容已经不再适用,所以也进行了移除。

而第 3 版中新增了三章内容,分别是第 2 章、第 13 章和第 16 章。

第 2 章就是之前提到的 Kotlin 快速入门章节,这一章将会带你迅速上手 Kotlin 编程,讲解了如变量、函数、逻辑控制、面向对象编程、Lambda 编程、空指针检查等 Kotlin 中最基础、同时也是最核心的知识点。学完了这一章内容之后,你就可以使用 Kotlin 来编写一些 Android 程序了。

第 13 章是专门讲解 Jetpack 的一个章节。Jetpack 是 Google 于近年推出的一个开发组件工具集,旨在帮助我们编写出更加符合高质量代码规范、更加具有架构设计的应用程序。是的,现在我们已经不能停留在实现功能就万事大吉的层面了,而是要在实现功能的同时,追求更高的代码质量和架构设计。第 13 章中讲解了 ViewModel、Lifecycles、LiveData、Room、WorkManager 等内容,基本涵盖了 Jetpack 架构模块当中最主要的一些组件。

第 16 章是第 3 版中新补充的一个实战章节。本书的前两版中都只有一个实战章节,而第 3 版中会有两个实战章节。不同于过去的 App 开发实战,第 16 章会带你一起编写并发布一个开源库。因为我之前也写过几个比较知名的开源项目,并且我在公司的主要工作就是 SDK 方面的研发,所以其实我很擅长写这部分内容。还有什么事情是比在别人的项目中看到引用了自己的开源库更让人激动的呢?

介绍完了整体章节上的变动,我们再来看一些具体内容上的变化。

为了响应 Google 的 Kotlin First 号召,第 3 版中将全书所有的代码都改成了使用 Kotlin 语言来进行实现,Android 的持续 Kotlin 化也是未来长期发展的必然趋势。不过,由于新增的第 2 章只是讲解了一些 Kotlin 的基础内容,为了能够让你更加全面地掌握 Kotlin 方方面面的知识,第 3 版几乎在每一章的最后都加入了一个 Kotlin 课堂的环节。全书一共有 12 节 Kotlin 课堂,全面涵盖了诸如常用技巧、高阶函数、泛型、协程、DSL 等等语言层面的知识,绝对足以让你熟练掌握 Kotlin 这门语言了。

除了在编程语言方面存在大量的变动之外,Android 开发方面当然也不会一成不变。自《第一行代码 第 2 版》出版之后,Android 又经历了 8 9 10 系统的快速迭代。每个新系统版本中都会增加一些崭新的特性,也都需要进行一些开发方面的适配,第 3 版将这些内容全部涵盖了进去。

另外,近些年来追求架构设计的开发者越来越多,类似 MVP、MVVM 等架构的使用也越来越广泛,传统的 MVC 架构逐渐在被抛弃。第 3 版的第 15 章中对 MVVM 架构进行了非常详细的讲解,并且配合着 Google 提供的 Jetpack 组件,最终完成了一个 MVVM 架构的天气预报程序。虽然这个天气预报程序我已经写了 3 版了,但是这次将会是最具架构性,也最符合高质量编码规范的版本。相信会对你未来开发公司的实际项目带来很大的帮助。

除了上述主要变化之外,还有许多小细节方面的变动这里就不一一列举了,等待你自己阅读的时候发现吧。

设计

虽说这是一本升级版的书,可我花费在上面的时间和精力丝毫不亚于写一本新书。所以,不管是在内容方面还是在设计方面,我都希望它和第 2 版能够有着更加明显的区别。因此,图灵的设计师们这次也辛苦了。

首先是封面的设计,和第 2 版时一样,这次第 3 版的封面也是由图灵的设计师做出了几个版本,然后我在公众号上发起了一个投票,让广大读者朋友们共同选出最满意封面,投票结果如下:

最后蓝色封面以压倒性的优势当选,《第一行代码》也终于把红绿蓝这三元色全部凑齐了。第 3 版的封面正式确定:

然后是书签,第 2 版中首次在书里附赠了书签,那么第 3 版当然会把这个好传统继续坚持下去了。书签的设计应该尽可能地展现出一本书的特点,而我认为《第一行代码 第 3 版》最大的特点就是两部分:Android 10 和 Kotlin。所以我也让设计师专门为这两个主题设计了两种书签,我们来一起欣赏一下吧:

     

每本书中都会赠送这两个书签,虽然一本书送两个书签可能有点多余,但我觉得这会给人一种更加完整的感觉。

除此之外,第 3 版中还首次提供了全书知识架构的思维导图。这是我根据书中主要知识点进行整理,并由本书编辑张霞绘制出来的,共分为 Android 和 Kotlin 两张图。

思维导图可以方便你纵览本书 Android 和 Kotlin 的宏观图景,帮助你梳理各章的知识要点。

Android 的思维导图如下:

Kotlin 的思维导图如下:

这两张思维导图都会以彩页的形式装订在书中,方便你随时查看。

最后是给高校老师们的福音,由于本书前两版被大量高校当作教材使用,这次为了便于高校老师和培训机构教学,第 3 版中专门配备了相应的 PPT 课件。在书中的前言部分附有所有随书资源的下载地址。

定价

我之前发现有部分读者朋友对书的定价方式是有误解的,所以这里先来科普一下。

任何一本书,都是要以成本为依据来定价的,而不是内容。成本指的主要是这本书印刷所需花费的费用,所以页数多的书一定比页数少的书贵,彩色页的书一定比黑白页的书贵。

在我之前的一篇文章中,有些读者留言,认为一本书应该是根据内容的好坏来定价,其实这是不可能的。也许会存在一些好书因为口碑特别好而提高定价,但一定不会存在一本差书因为自我感觉内容比较差而主动降低定价。

由于《第一行代码 第 3 版》新增了许多 Kotlin 方面的知识讲解,书的总页数也从第 2 版时的 500 多页变成了现在的 700 多页,所以涨价是在所难免的事情。

一开始本书编辑张霞建议将第 3 版售价定为 99 元,我觉得相比于第 2 版的 79 元涨幅有点高,问她可不可以降低到 89 元。她告诉我,700 多页的书定价 89 元有很大概率会被出版社打回,但她仍然以这个价格上报了试试。果不其然,最终这个定价审核没有通过,因为市面上 700 多页的书定价都至少在 100 元以上。

最终我也做出了让步,同意将第 3 版定价为 99 元,至少控制在了百元以内。不过这仅仅只是书的定价,而通常我们在网上买书都是有折扣的。具体折扣的多少由各网店自己决定,我参与不了,但一般也就是七八十块钱就能买到了。

购买

了解了这么多,不知道你有没有决定要买一本呢?目前《第一行代码 第 3 版》已经在京东、当当等网上书店开启预售了,限量签名版先到先得,有需要的小伙伴们请点击下面的链接。另外全书的完整目录,也可以到下面的链接页面进行查看。

京东购买地址

当当购买地址

天猫购买地址