零、简介

智能手机和平板电脑如今风靡一时。它们的受欢迎程度很大程度上是由于它们运行应用的能力。尽管拥有越来越多基于 Objective-C 的应用的 iPhone 和 iPad 占据了先机,但事实证明,拥有越来越多基于 Java 的应用的基于 Android 的智能手机和平板电脑是一个强有力的竞争对手。

不仅许多 iPhone/iPad 应用开发人员通过销售他们的应用赚钱,许多 Android 应用开发人员也通过销售类似的应用赚钱。据科技网站如 The Register(【www.theregister.co.uk/】)报道,一些安卓应用开发者正在赚大钱(【www.theregister.co.uk/2010/03/02/android_app_profit/】)。

在当今充满挑战的经济环境下,也许你想尝试开发 Android 应用并赚些钱。如果你有好的想法、毅力和一些艺术天赋(或者可能认识一些有天赋的人),你已经是实现这个目标的一部分了。

提示相比 iPhone/iPad 应用开发,考虑 Android 应用开发的一个很好的理由是使用 Android 会产生更低的启动成本。比如,你不需要购买 Mac 来开发 Android 应用(开发 iPhone/iPad 应用需要 Mac);您现有的 Windows、Linux 或 Unix 机器会做得很好。

最重要的是,在进入 Android 之前,您需要对 Java 语言和基础应用编程接口(API)有一个坚实的理解。毕竟,Android 应用是用 Java 编写的,并且与许多标准的 Java APIs(例如,线程和输入/输出 API)交互。

我写了Learn Java for Android Development来给你一个坚实的 Java 基础,你以后可以用 Android 架构、API 和工具细节的知识来扩展它。这本书将让你对 Java 语言和许多重要的 API 有很强的掌握,这些 API 是 Android 应用和其他 Java 应用的基础。它还将向您介绍关键的开发工具。

图书组织

这本书的第一版分为十章和一个附录。第二版由 14 章和三个附录组成。每一版的每一章都提供了一组练习,你应该完成这些练习才能从内容中获得最大的益处。他们的解决方案在附录中给出。

在第 1 章中,我首先通过关注 Java 的双重性(语言和平台)来介绍 Java。然后我简单介绍一下 Oracle 的 Java SE、Java EE、Java ME 版的 Java 开发软件,以及 Google 的 Android 版。接下来,您将学习如何下载和安装 Java SE 开发工具包(JDK ),并通过开发和使用两个简单的 Java 应用来学习一些 Java 基础知识。在简要介绍了 Eclipse IDE 之后,您将对本书中涉及的各种 API 有一个概述。

在第 2 章中,我将重点介绍语言基础,让你开始一次深入的 Java 语言之旅。您将了解注释、标识符(和保留字)、类型、变量、表达式(和文字)以及语句。

在第三章中,我继续关注类和对象。您将学习如何声明一个类并从该类中实例化对象,如何在该类中声明字段并访问这些字段,如何在该类中声明方法并调用它们,如何初始化类和对象,以及如何在不再需要对象时将其删除。你还会学到更多关于数组的知识,数组在第 2 章中首次介绍。

第 4 章中,我通过向你介绍带你从基于对象的应用到面向对象的应用的语言特性,增加了第 3 章的基于对象的知识库。具体来说,您将了解与继承、多态性和接口相关的特性。在探索继承的过程中,您了解了 Java 的终极超类。此外,在探索接口时,您会发现为什么它们包含在 Java 语言中;接口不仅仅是 Java 缺乏对多实现继承支持的一种变通方法,它还有更高的目的。

在第五章中,我向你介绍了四类高级语言特性:嵌套类型、包、静态导入和异常。

在第 6 章中,我向你介绍了四个额外的高级语言特性类别:断言、注释、泛型和枚举。

在第 7 章中,我开始关注 API 多于语言特性的趋势。在本章中,我首先向您介绍 Java 的许多面向数学的类型(例如, Math、StrictMath、BigDecimal 和 BigInteger ),然后向您介绍它的面向字符串的类型(例如, String、StringBuffer 和 StringBuilder )。最后,您将探索用于获取包信息的包类。

在第 8 章中,我继续通过关注基本类型包装类、线程和面向系统的 API 来探索 Java 的基本 API。

在第 9 章中,我专门关注 Java 的集合框架,它为你提供了一个在列表、集合、队列和映射中组织对象的解决方案。您还将了解面向集合的工具类,并回顾 Java 的遗留工具类型。

第 10 章中,我继续探索 Java 的工具 API,向您介绍并发工具、日期类(用于表示时间)、格式化程序类(用于格式化数据项)、随机类(用于生成随机数)、定时器和定时器任务类(用于偶尔或重复执行任务),以及用于处理 ZIP 和 JAR 文件的 API。

第 11 章是关于传统的输入/输出(I/O)的,主要是从文件的角度来看。在这一章中,您将从文件类、随机访问文件类、各种流类和各种写/读类的角度探索经典的 I/O。我对流 I/O 的讨论包括 Java 的对象序列化和反序列化机制。

在第 12 章中,我继续通过关注网络来探索传统的 I/O。您将了解到 Socket、ServerSocket、DatagramSocket 和 MulticastSocket 类以及相关类型。您还将了解到用于在更高层次上实现网络 I/O 的 URL 类。在了解了底层的 NetworkInterface 和 InterfaceAddress 类之后,您将根据 CookieHandler 和 CookieManager 类以及 CookiePolicy 和 CookieStore 接口来探索 cookie 管理。

在第 13 章中,我向你介绍了新的 I/O。你将在这一章中学习缓冲区、通道和正则表达式。我也很想介绍选择器和字符集,但是由于空间不足,我无法这样做。为了讨论选择器,我还必须讨论套接字通道,但是我只能讨论文件通道。然而,第 11 章确实给了你一点儿字符集的味道。

在第 14 章中,我通过关注数据库来总结这本书的章节部分。您将首先了解 Java DB 和 SQLite 数据库产品,然后探索与通过这些产品创建的数据库进行通信的 JDBC。

附录 A 中,我给出了第 1 章第 14 章中所有练习的答案。

附录 B 中,我将向您介绍在四张牌背景下的应用开发,这是一款基于控制台的纸牌游戏。

在附录 C 中,这本书的代码附带了一个单独的 PDF 文件,我向您介绍了高级 API(如反射和引用)以及在 Android 应用环境中可能不太有用的 API(如首选项——Android 提供了自己的解决方案)。)

注意你可以下载这本书的源代码,方法是将你的网络浏览器指向【www.apress.com/book/view/1430257226】,点击源代码标签,然后点击立即下载链接。

第一版对第二版

这本书的第一版于 2010 年 9 月出版。总的来说,我对第一版很满意,我感谢所有购买它的人。然而,正如有人多次向我指出的那样,第一版是有缺陷的。除了一些小的技术错误,在这本书的开发过程中,我还遇到了一些组织和其他方面的问题。

首先,我不应该在《T2》第一章中介绍四张同类型的纸牌游戏。对于许多读者来说,这一点太复杂了。因此,我把游戏移到了附录 B ,以免让 Java 初学者不知所措。

此外,我试图在同一章中用类和对象的基础知识来涵盖语言基础知识(例如,语句和表达式)。虽然有些人欣赏这种方法,但它对初学者来说太令人困惑了;我向有这种感觉的读者道歉。在第二版中,我将 Java 语言的这些方面分开来(希望)解决这个问题。在第 2 章中,我关注于语句、表达式和其他非类/非对象的基础知识;在第三章中,我关注类和对象。

另一个问题是包含了复杂的 API,这些 API 要么在开发 Android 应用时很少使用,要么与 Android 开发者无关。示例包括引用、反射、首选项和国际化。我把这些 API 移到了附录 C,这样我就可以涵盖更简单(也可能更有用)的 API,比如 ZIP 和 Timer。(我还在附录 c 中增加了新内容。)

在编写第一版时,我计划更进一步,介绍 Java 对网络和数据库访问(通过 JDBC)、安全性、XML、新 I/O 等的支持。我愚蠢地提出了一个写六个免费章节的计划,但是只完成了三个章节的一部分。

不幸的是,我最初的六个免费章节的计划是有缺陷的。例如,我计划在关于新 I/O 的免费章节之后写一个关于网络的免费章节。这不是一个好的组织,因为新 I/O 包括套接字通道,所以网络章节应该在新 I/O 章节之前。

此外,我还了解到(通过各种关于 Android 和安全的博客)Java 的安全特性在 Android 环境中并不必要。因为这本书在一定程度上侧重于展示最有用的 Java APIs,以供随后在 Android 环境中使用,所以对 Java 安全 API 的介绍可能并不重要(尽管我可能是错的)。

注意第二版没有免费章节补充。然而,附录 C 是免费的。此外,我可能最终会在我的网站上提供一些额外的材料(也许是关于套接字通道、选择器和字符集的内容)。

接下来是什么?

在你完成这本书之后,我建议你去买一本格兰特·艾伦(2012 年出版)的《Android 4 入门》,开始学习如何开发 Android 应用。在那本书里,你学习了 Android 基础知识,以及如何为 Android 4 移动设备创建创新的、可扩展的应用。没有给出 Android 开发的一些肤浅的细节,而是专注于教你 Java 语言和 API,比如你将需要在你的应用中使用的集合。如果不先了解 Java,怎么着手了解 Android 呢?

我还推荐你去看看第二版的安卓食谱(见【www.apress.com/9781430246145】)。虽然那本书的内容很大程度上包含了学习 Android 各种东西的独立食谱,第 1 章包含了对 Android 应用开发的总结和快速介绍。通过阅读那一章,你会学到很多关于 Android 的基础知识。

感谢您购买我的书。我希望你会发现这是一个有益的准备,我希望你能成功地成为一名令人满意且利润丰厚的 Android 应用开发人员。