Java实战pdf txt mobi下载及读书笔记

Java实战pdf txt mobi读书笔记

现代Java应用充分利用了微服务、反应式架构以及流式数据等创新设计。现代Java特性,譬如Lambda、流以及大家期待已久的Java模块系统让这些设计的实现极其便利。是时候更新技能工具箱了,只有这样,你才能从容应对迎面而来的种种挑战!

作者:[英] 拉乌尔-加布里埃尔 • 乌尔玛 / [意] 马里奥 • 富斯科 / [英] 艾伦 • 米克罗夫特

Java实战pdf txt mobi下载

http://www.txtepub.com/40135.html

Java实战pdf txt mobi阅读感悟

通过透彻的示例和通俗的语言讲解了Java语言这些最激动人心的特性,作者注重细节,努力降低了学习难度,节省你宝贵的时间。依照本书边学边练,你可以很快掌握流应用程序接口、Java模块系统等现代Java新特性,再进一步去探寻实现并发的新方法,了解函数式编程如何帮你编写可读性好又容易维护的代码。潜心修炼,你的编程实力必能提高到新的层次。

本书特色:

●对上一版(《Java 8实战》)做了全新改版

●Java 8、9、10及后续版本新特性介绍

●流数据处理以及反应式编程

●Java模块系统

1998年,八岁的我拿起了我此生第一本计算机书,那本书讲的是JavaScript和HTML。我当时怎么也想不到,打开那本书会让我见识到编程语言和它们能够创造的神奇世界,并彻底改变我的生活。我被它深深地吸引了。如今,编程语言的某个新特性还会时不时地让我感到兴奋,因为它让我花更少的时间就能够写出更清晰、更简洁的代码。我希望本书探讨的Java 8、9以及10中那些来自函数式编程的新思想,同样能够给你启迪。

那么,你可能会问,这本书以及它的上一版是由何而来的呢?

2011年,Oracle公司的Java语言架构师Brian Goetz分享了一些在Java中添加Lambda表达式的提议,以期获得业界的参与。这重新燃起了我的兴趣,于是我开始传播这些想法,在各种开发者会议上组织Java 8讨论班,并为剑桥大学的学生开设讲座。

到了2013年4月,消息不胫而走,Manning出版社的编辑给我发了封邮件,问我是否有兴趣写一本关于Java 8中Lambda的书。当时我只是个“不起眼”的二年级博士研究生,写书似乎并不是一个好主意,因为它会耽误我提交论文。另一方面,所谓“只争朝夕”,我想写一本小书不会有太多工作量,对吧?(后来我才意识到自己大错特错了!)于是我咨询我的博士生导师米克罗夫特教授,结果他十分支持我写书(甚至愿意为这种与博士学位无关的工作提供帮助,我永远感谢他)。几天后,我们见到了Java 8的布道者富斯科,他有着非常丰富的专业经验,并且因在重大开发者会议上所做的函数式编程演讲而享有盛名。

我们很快就认识到,如果将大家的能量和背景融合起来,就不仅仅可以写出一本关于Java 8 Lambda的小书,而是可以写出(我们希望)一本五年或十年后,在Java领域仍然有人愿意阅读的书。我们有了一个非常难得的机会来深入讨论许多话题,它们不但有益于Java程序员,还打开了通往一扇通往新世界的大门:函数式编程。

现在是2018年,截至今天,本书的上一版已在全世界售出两万本,Java 9已经发布,Java 10也即将发布。经历了无数个漫漫长夜的辛苦工作、无数次的编辑和永生难忘的体验后,我们这本全新修订的包含Java 8、9以及10的《Java实战(第2版)》终于送到了你的手上。希望你会喜欢它!

简单地说,Java 8中的新增功能以及Java 9引入的变化(虽然并不显著)是自Java 1.0发布21年以来,Java发生的最大变化。这一演进没有去掉任何东西,因此你原有的Java代码都能工作,但新功能提供了更强大的新习语和新设计模式,能帮助你编写更清晰、更简洁的代码。就像遇到所有新功能时那样,你一开始可能会想:“为什么又要去改我的语言呢?”但稍加练习之后,你就会发觉自己只用预期的一半时间,就用新功能写出了更短、更清晰的代码,这时你会意识到自己永远无法返回到“旧Java”了。

本书会帮助你跨过“原理听起来不错,但还是有点儿新,不太适应”的门槛,从而熟练地编程。

“也许吧,”你可能会想,“可是Lambda、函数式编程,这些不是那些留着胡子、穿着凉鞋的学究们在象牙塔里面琢磨的东西吗?”或许是的,但Java 8中加入的新想法的分量刚刚好,它们带来的好处也可以被普通的Java程序员所理解。本书会从普通程序员的角度来叙述,偶尔谈谈“这是怎么来的”。

“Lambda,听起来跟天书一样!”是的,也许是这样,但它是一个很好的想法,让你可以编写简明的Java程序。许多人都熟悉事件处理器和回调函数,即注册一个对象,它包含会在事件发生时使用的一个方法。Lambda使人更容易在Java中广泛应用这种思想。简单来说,Lambda和它的朋友“方法引用”让你在做其他事情的过程中,可以简明地将代码或方法作为参数传递进去执行。在本书中,你会看到这种思想出现得比预想的还要频繁:从加入做比较的代码来简单地参数化一个排序方法,到利用新的Stream API在一组数据上表达复杂的查询指令。

“流(stream)是什么?”这是Java 8的一个新功能。它的特点和集合(collection)差不多,但有几个明显的优点,让我们可以使用新的编程风格。首先,如果你使用过SQL等数据库查询语言,就会发现用几行代码写出的查询语句要是换成Java要写好长。Java 8的流支持这种简明的数据库查询式编程——但用的是Java语法,而无须了解数据库!其次,流被设计成无须同时将所有的数据调入内存(甚至根本无须计算),这样就可以处理无法装入计算机内存的流数据了。但Java 8可以对流做一些集合所不能的优化操作,例如,它可以将对同一个流的若干操作组合起来,从而只遍历一次数据,而不是花很大成本去多次遍历它。更妙的是,Java可以自动将流操作并行化(集合可不行)。

“还有函数式编程,这又是什么?”就像面向对象编程一样,它是另一种编程风格,其核心是把函数作为值,前面在讨论Lambda的时候提到过。

Java 8的好处在于,它把函数式编程中一些最好的想法融入到了大家熟悉的Java语法中。有了这个优秀的设计选择,你可以把函数式编程看作Java 8中一个额外的设计模式和习语,让你可以用更少的时间,编写更清晰、更简洁的代码。想想你的编程兵器库中的利器又多了一样。

当然,除了这些在概念上对Java有很大扩充的功能,我们也会解释很多其他有用的Java 8功能和更新,如默认方法、新的Optional类、CompletableFuture,以及新的日期和时间API。

Java 9的更新包括一个支持通过Flow API进行反应式编程的模块系统,以及其他各种增强功能。

别急,这只是一个概览,现在该让你自己去看看本书了。

本书结构

本书分为六个部分,分别是:“基础知识”“使用流进行函数式数据处理”“使用流和Lambda进行高效编程”“无所不在的Java”“提升Java的并发性”和“函数式编程以及Java未来的演进”。我们强烈建议你按顺序阅读前两部分的内容,因为很多概念都需要前面的章节作为基础,后面四个部分的内容你可以按照任意顺序阅读。大多数章节都附有几个测验,可以帮助你学习和掌握这些内容。

第一部分旨在帮助你初步使用Java 8。学完这一部分,你将会对Lambda表达式有充分的了解,并可以编写简洁而灵活的代码,能够轻松适应不断变化的需求。

 第1章总结Java的主要变化(Lambda表达式、方法引用、流和默认方法),为学习后面的内容做准备。 

 第2章介绍行为参数化,这是Java 8非常依赖的一种软件开发模式,也是引入Lambda表达式的主要原因。 

 第3章对Lambda表达式和方法引用进行全面介绍,每一步都提供了代码示例和测验。 

第二部分详细讨论新的Stream API。通过Stream API,你将能够写出功能强大的代码,以声明性方式处理数据。学完这一部分,你将充分理解流是什么,以及如何在Java应用程序中使用它们来简洁而高效地处理数据集。

 第4章介绍流的概念,并解释它们与集合有何异同。 

 第5章详细讨论为了表达复杂的数据处理查询可以使用的流操作。其间会谈到很多模式,如筛选、切片、查找、匹配、映射和归约。 

 第6章介绍收集器——Stream API的一个功能,可以让你表达更为复杂的数据处理查询。 

 第7章探讨流如何得以自动并行执行,并利用多核架构的优势。此外,你还会学到为正确而高效地使用并行流,要避免的若干陷阱。 

第三部分探索Java 8和Java 9的多个主题,这些主题中的技巧能让你的Java代码更高效,并能帮助你利用现代的编程习语改进代码库。这一部分的出发点是介绍高级编程思想,本书后续内容并不依赖于此。

 第8章是这一版新增的,探讨Java 8和Java 9对Collection API的增强。内容涵盖如何使用集合工厂,如何使用新的惯用模式处理List和Set,以及使用Map的惯用模式。

 第9章探讨如何利用Java 8的新功能和一些秘诀来改善你现有的代码。此外,该章还探讨了一些重要的软件开发技术,如设计模式、重构、测试和调试。 

 第10章也是这一版新增的,介绍依据领域特定语言(domain-specific language, DSL)实现API的思想。这不仅是一种强大的API设计方法,而且正变得越来越流行。Java中已经有API采用这种模式实现,譬如Comparator、Stream以及Collector接口。

第四部分介绍Java 8和Java 9中新增的多个特性,这些特性能帮助程序员事半功倍地编写代码,让程序更加稳定可靠。我们首先从Java 8新增的两个API入手。

 第11章介绍java.util.Optional类,它能让你设计出更好的API,并减少空指针异常。

 第12章探讨新的日期和时间API,这相对于以前涉及日期和时间时容易出错的API是一大改进。

 第13章讨论默认方法是什么,如何利用它们来以兼容的方式演变API,一些实际的应用模式,以及有效使用默认方法的规则。 

 第14章是这一版新增的,探讨Java的模块系统——它是Java 9的主要改进,使大型系统能够以文档化和可执行的方式进行模块化,而不是简单地将一堆包杂乱无章地堆在一起。

第五部分探讨如何使用Java的高级特性构建并发程序——注意,我们要讨论的不是第6章和第7章中介绍的流的并发处理。

 第15章是这一版新增的,从宏观的角度介绍异步API的思想,包括Future、反应式编程背后的“发布–订阅”协议(封装在Java 9的Flow API中)。

 第16章探讨CompletableFuture,它可以让你用声明性方式表达复杂的异步计算,从而让Stream API的设计并行化。

 第17章也是这一版新增的,详细介绍Java 9的Flow API,并提供反应式编程的实战代码解析。

第六部分是本书最后一部分,我们会谈谈怎么用Java编写高效的函数式程序,还会将Java的功能和Scala做比较。

 第18章是一个完整的函数式编程教程,会介绍一些术语,并解释如何在Java 8中编写函数式风格的程序。 

 第19章涵盖更高级的函数式编程技巧,包括高阶函数、柯里化、持久化数据结构、延迟列表和模式匹配。这一章既提供了可以用在代码库中的实际技术,也提供了能让你成为更渊博的程序员的学术知识。 

 第20章将对比Java与Scala的功能。Scala和Java一样,是一种在JVM上实现的语言,近年来发展迅速,在编程语言生态系统中已经威胁到了Java的一些方面。 

 第21章会回顾这段学习Java 8并慢慢走向函数式编程的历程。此外,我们还会猜测,在Java 8、9以及10中添加的小功能之后,未来可能会有哪些增强和新功能出现。 

最后,本书有四个附录,涵盖了与Java 8相关的其他一些话题。附录A总结了本书未讨论的一些Java 8的小特性。附录B概述了Java库的其他主要扩展,可能对你有用。附录C是第二部分的延续,介绍了流的高级用法。附录D探讨了Java编译器在幕后是如何实现Lambda表达式的。

关于代码

所有代码清单和正文中的源代码都采用等宽字体(如fixed-widthfontlikethis),以与普通文字区分开来。许多代码清单中都有注释,突出了重要的概念。

书中示例的源代码请至图灵社区本书主页

你可能感兴趣的:(Java实战pdf txt mobi下载及读书笔记)