![]() ![]() |
Kotlin Android编程 本书的主要内容有:了解Kotlin基础知识和Kotlin集合框架。探索Android基础:操作系统和应用容器及其组件。了解线程安全以及如何处理并发。编写低开销顺序异步工作。使用协程检查结构化并发性,并了解通道如何支持协程通信。了解如何使用流完成异步数据处理。使用Android性能分析工具了解性能问题。使用性能优化减少资源消耗。 为Android移动操作系统开发应用似乎很令人生畏,尤其是如果还需要学习一种新的编程语言:Kotlin,这是目前Android的官方开发语言。利用这本实用的书,Android开发人员将学习如何从Java过渡到Kotlin,包括Kotlin如何为获得异步计算控制提供真正的优势。 前言JetBrains 创建Kotlin 有两个原因:没有一种语言可以填补Android 开发中使用(遗留)Java 库的所有空白,另外一种新的语言将允许Android 开发引领趋势,而不只是追随潮流。2015 年2 月,Kotlin 10 正式发布。Kotlin 简洁、安全、实用,并且强调与Java代码的互操作性。当今使用Java 的任何地方都可以使用Kotlin:服务器端开发、Android 应用、桌面或移动客户端、物联网设备编程等。Kotlin 在Android 开发人员中迅速流行起来,Google 决定采用Kotlin 作为Android 开发的官方语言,这使得人们对这个语言的兴趣暴涨。根据Android 开发者网站(https://developerandroidcom/kotlin),目前有超过60% 的专业Android 开发人员使用Kotlin。Android 的学习曲线相当陡峭:不可否认,它很难学习,更难掌握。对很多人来说,Android 开发人员成长的一部分,就是随着时间的推移,要不断处理Android操作系统与应用之间意想不到的交互。本书通过研究Android 中的这些问题,旨在向读者深入详尽地介绍这些情况。我们不仅会讨论Kotlin 和Java,还将讨论使用Android 时出现的并发问题,以及Kotlin 如何解决这些问题。有时我们会将Kotlin 与Java 进行比较,因为我们认为这样做能更好地理解(特别是大部分读者都可能有Java 背景)。我们可以利用实用示例演示如何弥补二者的差距,并展示大多数Kotlin 操作的底层概念都与Java 的相应概念很类似。我们将按主题组织这些任务,对涉及的大量信息进行结构化分解,以便软件工程师掌握,并展示如何使应用健壮并且可维护。另外,熟悉Java 的用户(包括Android 开发人员)会发现,我们同时在Java 和Kotlin 中介绍各个常见任务时,它们的学习曲线会大大变平。在适当的情况下,我们会讨论其中一个语言或两个语言的区别和缺陷,不过我们希望提供简单易懂的任务示例,使读者能够掌握和适应现代范式,并立即本能地意识到更新代码的重要性。尽管Kotlin 与Java 可完全互操作,但其他Java 应用开发(服务器端编程、桌面客户端、中间件等)还没有赶上Android 的程度。这很大程度上是由于Android的维护者(Google)强烈鼓励其用户做出改变。用户逐步迁移到Kotlin,但更多的用户仍然使用Java 来完成关键任务。我们希望这本书能成为Android 开发人员的生命线,让他们能够放心地利用Kotlin 提供的优势和简单性。本书面向的读者这本书面向超过600 万Android 工程师中的每一个人。我们相信几乎每个Android 工程师都能从这本书中受益。可能有一小部分人能流利地使用Kotlin,即使如此,他们也能从我们介绍的信息中有所收获。但事实上,我们面向的是绝大多数还没有过渡到Kotlin 的人。这本书也适合那些在以Java 为中心的Android开发中已经接触过Kotlin,但还没有完全熟悉Kotlin 的人:场景1读者精通Java,听说过这种新的Kotlin 语言,并想尝试一下。所以他们读了一些在线教程,开始使用,效果很好。很快他们就意识到这不仅仅是一种新的语法。习惯用法不一样了(例如,函数式编程,协程),现在可以采用一种全新的开发方式。不过他们缺乏指导。对他们来说,这本书将非常适合。场景2读者是一个Java 开发小团队的一员。他们对是否应该在项目中包含Kotlin 进行了讨论。尽管据说Kotlin 与Java 100% 可互操作,但一些同事认为引入另一种语言会增加项目的复杂性。还有一些人认为,由于需要掌握两种语言,这可能会限制能够参与该项目的同事人数。如果能证明利大于弊,这些读者可以用这本书来说服他们的同事。场景3有经验的Android 开发人员可能使用过Kotlin 或用Kotlin 写过一个功能,但需要完成具体工作时,还是会使用Java。我们发现现在就是这种情况,这本书会让我们的生活更轻松。这也是我们周围最常见的状态,很多Android 开发人员接触过Kotlin,认为他们足够了解这个语言,能够在必要时编写Kotlin代码,但他们要么没有意识到要么根本不相信数据类、不可变属性和结构化并发的重要性。我们认为这本书能让一个好奇的人成为一个尽心尽力的布道者。为什么写这本书有大量的书介绍Android 如何工作,Kotlin 如何工作,或者并发如何工作。Kotlin因其易用性和更简洁的语法在Android 开发中广受欢迎,但Kotlin 为Android 提供的远不止这些:它提供了解决Android 并发问题的新方法。我们写这本书是为了深入地探讨这些主题之间特定的关系。不论单独来看还是合在一起,Android和Kotlin 都在快速变化。想要跟上所有这些变化可能很困难。我们把这本书看作是一个有意义的检查点:它介绍了Android 的起源,当前的位置,以及随着Kotlin 语言的成熟,将如何继续与Kotlin 一起发展。本书内容组织有时我们会加入代码片段的截图,而不是常规的atlas 代码格式。这对于协程和流特别有用,因为在截图中可以清楚地看到挂起点,还可以获得IDE 的类型提示。第1 章Kotlin 基础和第2 章Kotlin 集合框架介绍了Kotlin 中实现Android编程的重大转变。虽然这几章中的信息足以为你奠定一个很好的Kotlin 基础,不过后面的章节将更深入地探讨更复杂/ 更高级的特性。熟悉Java 或类似语法结构的用户会发现这种转换非常自然。第3 章Android 基础和第4 章Android 并发将提供与内存和线程相关的Android 系统基础知识。与其他操作系统一样,并发很难实现。第5 章线程安全到第11 章用Android 性能分析工具检查性能问题将研究围绕内存和线程的常见问题,同时指出Android 框架如何随着时间的推移逐步演化,从而赋予开发人员更多的控制。同时,这些章节还展示了Kotlin 的扩展和语言特性如何帮助开发人员更快地编写更好的应用。第12 章利用性能优化减少资源消耗将探讨使用强大的Android 开发工具来检查底层性能和与内存相关的分析,从而能发现你从未真正了解的问题。这本书将为工程师提供原生Android 开发中常见任务的专业开发和管理实现。很多任务包括一个现实问题,然后是用Java 和Kotlin 实现的相应解决方案。需要进一步的解释时,在解决方案后面会做一个简单的比较,并强调Kotlin 语言的简洁与自然。排版约定本书使用了下述排版约定:斜体(Italic)表示新术语、URL、电子邮件地址、文件名和扩展名。等宽字体(Constant Width)表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。加粗等宽字体(constant width bold)表示应该由用户输入的命令或其他文本。等宽斜体(constant width italic)表示应该由用户输入的值或根据上下文确定的值替换的文本。使用代码示例这本书的补充材料( 代码示例、练习等) 可以从https://githubcom/ProgrammingAndroidWithKotlin 下载。如果使用代码示例时有技术问题或遇到其他问题,请通过以下email 联系我们:bookquestions@oreillycom。这本书的目的就是要帮助你完成工作。一般来讲,你可以在你的程序和文档中使用这些代码,不需要联系我们来得到许可,除非你直接复制了大部分的代码。例如,如果你在编写一个程序,使用了本书中的多段代码,这并不需要得到许可。但是出售或发行OReilly 书示例代码则需要得到许可。回答问题时如果引用了这本书的文字和示例代码,这不需要得到许可。但是如果你的产品的文档借用了本书中的大量示例代码,则需要得到许可。我们希望但不严格要求标明引用出处。引用信息通常包括书名、作者、出版商和ISBN。例如Programming Androidwith Kotlin by Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, G BlakeMeike, and Mike Dunn (OReilly) Copyright 2022 Pierre-Olivier Laurence andAmanda Hinchman-Dominguez, 978-1-492-06300-1。如果你认为你在使用代码示例时超出了合理使用范围或者上述许可范围,可以随时联系我们:permissions@oreillycom。OReilly 在线学习平台(OReilly Online Learning)近40 年来,OReilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。公司独有的专家和改革创新者网络通过OReilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。OReilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自OReilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://wwworeillycom/。联系我们任何有关本书的意见或疑问,请按照以下地址联系出版社。美国:OReilly Media, Inc1005 Gravenstein Highway NorthSebastopol, CA 95472中国:北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)奥莱利技术咨询(北京)有限公司针对这本书,我们还建有一个网页,列出了有关勘误、示例和其他信息。可以通过以下地址访问这个页面:https://oreilly/pak。如果对这本书有什么意见,或者询问技术上的问题,请发送电子邮件至errata@oreillycomcn。有关我们的图书和课程,更多新闻和信息请访问我们的网站:http://wwworeillycom。我们的Facebook:http://facebookcom/oreilly。我们的Twitter:http://twittercom/oreillymedia。我们的YouTube:http://youtubecom/oreillymedia。致谢感谢我们的技术审校Adnan Sozuan 和Andrew Gibel,经他们之手,这本书得到了极大的增强和改进。还要感谢OReilly 的人员,他们帮助我们团结在一起,给予了我们所需的全部支持,终于将这本书变成现实,尤其是Jeff Bleiel 和Zan McQuade。感谢Roman Elizarov 和Jake Wharton 抽出时间与我们讨论Kotlin 并发的发展方向和Android 的底层问题。感谢朋友、家人和同事们的支持。感谢Kotlin 社区,以及花时间阅读早期草稿并提供反馈的所有人。最后,这本书谨献给Mike Dunn:合著者、同事、朋友和父亲。我们非常想念他,希望这本书能让他感到骄傲。 Pierre-Olivier Laurence是法国巴黎附近Safran Aircraft Engines公司的首席软件工程师。Amanda Hinchman-Dominguez是Kotlin方面的Google Developer Expert,也是Groupon的Android工程师,活跃在全球Kotlin社区。G Blake Meike是Couchbase的高级软件工程师,著有多本书,包括《Programming Android》。Mike Dunn是Oreilly Media的首席移动工程师,也是Oreilly 《Native mobile Development》一书的作者。 目录
你还可能感兴趣
我要评论
|