Skip to content

Latest commit

 

History

History
120 lines (78 loc) · 7.53 KB

File metadata and controls

120 lines (78 loc) · 7.53 KB

零、前言

随着 Java8 的引入,Java 发生了巨大的变化,这个变化随着新版本 Java8 以及 Java8 和 11 被提升到了一个全新的水平。Java 有着悠久的历史,已经有 20 多年的历史了,但同时,它是新的、函数式的、反应式的和性感的。这是一种开发人员喜爱的语言,同时也是许多企业项目开发人员语言的首选。

从 Java11 开始,现在学习 Java 可能比以前更有利可图。我们鼓励您通过学习 Java 开始您的专业开发生涯,在本书中我们已经尽了最大的努力来帮助您沿着这条道路前进。我们把这本书的主题组合起来,这样就很容易开始,而且你可以感觉到事情进展得很快。同时,我们也尝试着走得更远,为专业开发人员指明了前进的道路。

时间的沙子不停地移动,我发现了函数式编程。

我很清楚为什么写副作用免费代码有效!我被迷住了,开始和 Skara、克鲁和埃尔朗一起玩。不可变性是这里的标准,但是,我想知道传统算法是如何在函数环境中看到的,并开始学习它。

数据结构永远不会原地突变。相反,将创建数据结构的新版本。最大化共享的复制和写作策略是一个有趣的策略!所有这些小心的同步根本不需要!这些语言配备了垃圾收集。因此,如果不再需要某个版本,运行时将负责回收内存。不过,一切都来得正是时候!阅读这本书将帮助你看到,我们不需要牺牲算法性能,同时避免原地变异!

这本书是给谁的

这本书是给任何想学习 Java 编程语言的人准备的。无需编程经验。如果你有先例,它将帮助你更容易地读完这本书。

这本书的内容

第 1 章“Java11 入门”,为您提供 Java 入门,帮助您在计算机上安装 Java,并使用新的 JShell 运行第一个交互式程序。

第 2 章、“第一个真正的 Java 程序-排序名称”,教您如何创建开发项目。我们将创建程序文件并编译代码。

第 3 章、“优化专业排序代码”,进一步开发代码,使代码可重用,不仅是玩具。

第 4 章、“策划者——创造一个游戏*”,就是乐趣开始的时候。我们开发了一个有趣的游戏应用,并不像最初看起来那么简单,但我们会做到的。

第 5 章、“扩展游戏——跑得并行,跑得更快”,展示如何利用现代架构的多处理器功能。这是一个非常重要的章节,详细介绍了只有少数开发人员真正了解的技术。

第 6 章、“让我们的游戏专业化——做一个 Web 应用*”,将用户界面从命令行转变为基于 Web 浏览器,提供更好的用户体验。

第 7 章“使用 REST 构建一个商业 Web 应用”,带领您完成一个具有许多商业应用特性的应用的开发。我们将使用标准的 REST 协议,它已经在企业计算领域取得了进展。

第 8 章“扩展我们的电子商务应用”,利用脚本和 Lambda 表达式等现代语言特性,帮助您进一步开发应用。

第 9 章“使用反应式编程构建会计应用”,教您如何使用反应式编程解决一些问题。

第 10 章“将 Java 知识提升到专业水平”,对 Java 开发人员生活中起重要作用的开发人员话题进行了鸟瞰,这将指导您进一步成为专业开发人员。

充分利用这本书

为了让自己沉浸在这本书的内容中并吸收技能和知识,我们假设您已经有了一些编程经验。我们不做太多假设,但希望您已经知道什么是变量,计算机有内存、磁盘、网络接口,以及它们通常是什么。 除了这些基本技能外,还有一些技术要求你需要尝试一下书中的代码和例子。你需要一台今天可以使用的电脑,可以运行 Windows、Linux 或 OSX。你需要一个操作系统,也许,这就是你需要支付的全部费用。您需要的所有其他工具和服务都是开源的,并且是免费的。其中一些还可以作为带有扩展特性集的商业产品提供,但是在本书的范围内,开始学习 Java9 编程时,这些特性是不需要的。Java、开发环境、构建工具以及我们使用的所有其他软件组件都是开源的。

下载示例代码文件

您可以从您的帐户下载本书的示例代码文件 www.packtpub.com。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件直接通过电子邮件发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册 www.packtpub.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

下载文件后,请确保使用最新版本的解压缩或解压缩文件夹:

  • 用于 Windows 的 WinRAR/7-Zip
  • Mac 的 Zipeg/iZip/UnRarX
  • 用于 Linux 的 7-Zip/PeaZip

这本书的代码包也托管在 GitHub 上。如果代码有更新,它将在现有 GitHub 存储库中更新。

我们的丰富书籍和视频目录中还有其他代码包,可在这个页面上找到。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载

使用的约定

这本书中使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄。下面是一个例子:“最简单的方法是启动new Thread(),然后在线程上调用start()方法。”

代码块设置如下:

 private boolean isNotUnique(Color[] guess) {
        final var alreadyPresent = new HashSet<Color>();
        for (final var color : guess) {
            if (alreadyPresent.contains(color)) {
                return true;
            }
            alreadyPresent.add(color);
        }
        return false;
    }

当我们希望提请您注意代码块的特定部分时,相关行或项以粗体显示:

@Override 
 public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 
     MyObjectJava7 that = (MyObjectJava7) o; 
     return Objects.equals(field1, that.field1) && 
             Objects.equals(field2, that.field2) && 
             Objects.equals(field3, that.field3); 
 }

任何命令行输入或输出的编写方式如下:

Benchmark     (nrThreads)  (queueSize)  Score   Error 
playParallel            1           -1 15,636  ± 1,905 
playParallel            1            1 15,316  ± 1,237 
playParallel            1           10 15,425  ± 1,673 
playParallel            1          100 16,580  ± 1,133 
playParallel            1      1000000 15,035  ± 1,148 
playParallel            4           -1 25,945  ± 0,939 

粗体:表示一个新术语、一个重要单词或屏幕上显示的单词。例如,菜单或对话框中的单词会像这样出现在文本中。下面是一个例子:“如果您启动了 VisualVM,您可以选择任何 JVM 进程的 Threads 选项卡,并查看 JVM 中的实际线程

警告或重要提示如下所示。

提示和窍门是这样出现的。