本书的目的是让读者对 Java 基础有一个坚实的理解,并引导他们完成一系列从基础到实际编程的实际步骤。讨论和示例旨在通过使用经验证的编程原理和实践来刺激读者专业直觉的增长。这本书从基础知识开始,把读者带到最新的编程技术,从专业的角度考虑。
读完这本书后,你将能够做到以下几点:
- 安装并配置 Java 开发环境
- 安装并配置您的集成开发环境(IDE)——本质上就是您的编辑器
- 编写、编译和执行 Java 程序和测试
- 了解并使用 Java 语言基础
- 理解并应用面向对象的设计原则
- 掌握最常用的 Java 构造
- 了解如何从 Java 应用访问和管理数据库中的数据
- 增强您对网络编程的理解
- 了解如何添加图形用户界面,以便更好地与应用交互
- 熟悉函数式编程
- 了解最先进的数据处理技术流,包括并行和反应流
- 学习并练习创建微服务和构建反应式系统
- 学习最佳设计和编程实践
- 展望 Java 的未来,学习如何成为它的一部分
这本书是为那些想在现代 Java 编程专业中开始一个新的职业生涯的人,以及那些已经从事这项工作并且想更新他们对最新 Java 和相关技术和思想的知识的人准备的。
第 1 章“Java12 入门”从基础开始,首先解释什么是“Java”并定义其主要术语,然后继续介绍如何安装编写和运行(执行)程序所需的工具。本章还描述了基本的 Java 语言构造,并用可以立即执行的示例来说明它们。
第 2 章“面向对象编程(OOP)”介绍了面向对象编程的概念及其在 Java 中的实现。每一个概念都用具体的代码示例来演示。详细讨论了类和接口的 Java 语言结构,以及重载、覆盖、隐藏和使用final
关键字,最后一节介绍了多态的威力。
第 3 章“Java 基础”向读者展示了 Java 作为一种语言的更详细的观点。它从包中的代码组织开始,描述类(接口)及其方法和属性(字段)的可访问性级别。本文详细介绍了 Java 面向对象特性的主要类型引用类型,然后列出了保留关键字和限制关键字,并讨论了它们的用法。本章最后介绍了原始类型之间的转换方法,以及从原始类型到相应引用类型的转换方法。
第 4 章“处理”向读者介绍了与异常处理相关的 Java 构造的语法以及处理(处理)异常的最佳实践。本章以可用于在生产中调试应用代码的断言语句的相关主题结束。
第 5 章、“字符串、输入/输出和文件”,讨论字符串类方法,以及来自标准库和 ApacheCommons 项目的流行字符串工具。下面概述了 Java 输入/输出流和java.io
包的相关类以及org.apache.commons.io
包的一些类。文件管理类及其方法在专门的一节中进行了描述。
第 6 章、“数据结构、泛型和流行工具”介绍了 Java 集合框架及其三个主要接口List
、Set
和Map
,包括泛型的讨论和演示。equals()
和hashCode()
方法也在 Java 集合的上下文中讨论。用于管理数组、对象和时间/日期值的工具类也有相应的专用部分。
第 7 章、“Java 标准和外部库”概述了 Java 类库(JCL)最流行的包的功能:java.lang
、java.util
、java.time
、java.io
和java.nio
、java.sql
和javax.sql
、java.net java.lang.math
、java.math
、java.awt
、javax.swing
和javafx
。最流行的外部库是以org.junit
、org.mockito
、org.apache.log4j
、org.slf4j
和org.apache.commons
包为代表的。本章帮助读者避免在已经存在此类功能并且可以直接导入和删除的情况下编写自定义代码开箱即用。
第 8 章、“多线程和并发处理”介绍了通过使用并发处理数据的 worker(线程)来提高 Java 应用性能的方法。它解释了 Java 线程的概念并演示了它们的用法。文中还讨论了并行处理和并发处理的区别,以及如何避免由于并发修改共享资源而导致的不可预知的结果。
第 9 章、“JVM 结构和垃圾收集”为读者提供了 JVM 结构和行为的概述,这些比我们通常预期的要复杂。其中一个服务线程被称为垃圾收集,它执行的一项重要任务是从未使用的对象中释放内存。阅读本章后,读者将更好地了解什么是 Java 应用执行、JVM 中的 Java 进程、垃圾收集以及 JVM 的总体工作原理。
第 10 章“管理数据库中的数据”,说明并演示如何管理,即从 Java 应用插入、读取、更新和删除数据库中的数据。本文还简要介绍了 SQL 语言和基本的数据库操作:如何连接到数据库,如何创建数据库结构,如何使用 SQL 编写数据库表达式,以及如何执行它们。
第 11 章、“网络编程”,描述和讨论了最流行的网络协议用户数据报协议(UDP)、传输控制协议(TCP)、超文本传输协议(HTTP)和 WebSocket 及其对 JCL 的支持。它演示了如何使用这些协议,以及如何在 Java 代码中实现客户端服务器通信。所审查的 API 包括基于 URL 的通信和最新的 JavaHTTPClient API。
第 12 章“Java GUI 编程”,概述 Java GUI 技术,并演示如何使用 JavaFX 工具包创建 GUI 应用。JavaFX 的最新版本不仅提供了许多有用的特性,还允许保留和嵌入遗留的实现和样式。
第 13 章、“函数式编程”,解释了什么是函数式接口,概述了 JDK 附带的函数式接口,定义并演示了 Lambda 表达式以及如何与函数式接口一起使用,包括使用方法引用。
第 14 章、“Java 标准流”讲述了数据流的处理,不同于第 5 章、“字符串、输入/输出、文件”中回顾的 I/O 流。它定义了什么是数据流,如何使用java.util.stream.Stream
对象的方法(操作)处理它们的元素,以及如何在管道中链接(连接)流操作。本文还讨论了流的初始化以及如何并行处理流。
第 15 章“反应式编程”,介绍了反应式宣言和反应式编程的世界。首先定义和讨论了主要的相关概念-“异步”、“非阻塞”、“响应”等。然后使用它们定义并讨论了反应式编程、主要的反应式框架,并更详细地讨论了 RxJava。
第 16 章“微服务”解释了如何构建微服务——创建反应式系统的基础组件。它讨论了什么是微服务,它们可以有多大或多小,以及现有的微服务框架如何支持消息驱动的架构。讨论通过使用 Vert.x 工具箱构建的小型反应式系统的详细代码演示进行了说明。
第 17 章“Java 微基准线束”,介绍了“Java 微基准线束”(JMH)项目,该项目允许我们测量各种代码性能特征。它定义了什么是 JMH,如何创建和运行基准,基准参数是什么,并概述了支持的 IDE 插件。本章最后给出了一些实际的演示示例和建议。
第 18 章“编写高质量代码的最佳实践”,介绍了 Java 习惯用法以及设计和编写应用代码的最流行和最有用的实践。
第 19 章“Java 新特性”,讲述当前最重要的项目,这些项目将为 Java 添加新特性并在其他方面增强 Java。在阅读了本章之后,读者将了解如何遵循 Java 开发,并能够预见未来 Java 发行版的路线图。如果需要,读者也可以成为 JDK 源代码贡献者。
系统地阅读各章,并在每章末尾回答测验问题。克隆或只是下载源代码存储库(请参阅以下部分),然后运行演示所讨论主题的所有代码示例。为了加快编程速度,没有什么比执行提供的示例、修改它们和尝试自己的想法更好的了。密码就是真理。
您可以从您的帐户下载本书的示例代码文件 www.packt.com。如果您在其他地方购买了本书,您可以访问www.packt.com/support并注册,将文件直接通过电子邮件发送给您。
您可以通过以下步骤下载代码文件:
- 在登录或注册 www.packt.com
- 选择“支持”选项卡
- 点击代码下载和勘误表
- 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作
下载文件后,请确保使用最新版本的解压缩或解压缩文件夹:
- 用于 Windows 的 WinRAR/7-Zip
- Mac 的 Zipeg/iZip/UnRarX
- 用于 Linux 的 7-Zip/PeaZip
这本书的代码包也托管在 GitHub 上。如果代码有更新,它将在现有 GitHub 存储库中更新。
我们的丰富书籍和视频目录中还有其他代码包,可在这个页面上找到。看看他们!
我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载。
这本书中使用了许多文本约定。
CodeInText
:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:“当在一个try
块中抛出异常时,它将控制流重定向到第一个catch
子句。”
代码块设置如下:
void someMethod(String s){
try {
method(s);
} catch (NullPointerException ex){
//do something
} catch (Exception ex){
//do something else
}
}
当我们希望提请您注意代码块的特定部分时,相关行或项以粗体显示:
class TheParentClass {
private int prop;
public TheParentClass(int prop){
this.prop = prop;
}
// methods follow
}
任何命令行输入或输出的编写方式如下:
--module-path /path/JavaFX/lib \
:-add-modules=javafx.controls,javafx.fxml
粗体:表示一个新术语、一个重要单词或屏幕上显示的单词。例如,菜单或对话框中的单词会像这样出现在文本中。下面是一个示例:“为项目 SDK(Java 版本 12,如果您已经安装了 JDK12)选择一个值,然后单击‘下一步’。”
警告或重要提示如下所示。
提示和窍门是这样出现的。