有效的Java第三版有哪些新功能?

自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能,的确如此。 但是,第三版Java开发人员经典版也有一些其他更改。 在本文中,我提供了有关在第三版中添加,更改或删除的主题的高级概述。

在列出我所观察到的似乎是《 有效Java第三版》中的新内容之前,我需要做出免责声明,说我很可能会错过本书中的几处更改,共有12章,涵盖90个项目,涵盖350页以上。 这篇文章并不是要详细介绍第三版中的变更,而只是作为变更的高级样本,鼓励读者借阅或购买此有效Java第三版的副本来访问本书。低级细节。

不出所料, Effective Java第三版中有许多重要的新内容,它们与Java 7 , Java 8甚至Java 9的新功能有关。

Java 7

Java 7推动的一个显而易见的新项目是Item 9 (“ 首选try-with-resources而不是try-finally ”),因为try-with-resources是Java 7引入的。 第32项 (“ 明智地组合泛型和可变参数 ”)是第三版的新增内容,并讨论了Java 7引入的 @SafeVarargs批注(该批注对Java 9进行了一些增强 )。

第8项 (“ 避免使用终结器和清理器 ”)已更新,以讨论如何使用Java 7引入的AutoCloseable接口在某些最常用的用法中替换终结器和清理器。 项目49 (“ 有效性检查参数 ”)已更新为引用Java 7引入的Objects.requireNonNull方法。

项目80(“ 首选执行人,任务和线程流 “)已经‘流’,因为有效的Java第二版加入到它的标题,包括讨论关于加叉/加入到执行人框架在Java 7中第59项 (“ 了解和使用库 ”)讨论了Java 7中引入的ThreadLocalRandom 。

项目56 (“ 为所有公开的API元素编写文档注释 ”)讨论了使用JDK 7添加到javadoc命令行的-Xdoclint开关。

Java 8

项目21 (“ 后代的设计接口 ”)介绍了与在Java接口中使用默认方法有关的最佳实践。 正如其标题所描述的那样,整个第7章 (“ Lambda和流 ”)与Java 8引入的lambda和流有关,由关于这些功能编程概念的七个项目( 项目42项目48 )组成。 项目55 (“ 明智地返回可选参数 ”)讨论了Java 8引入的Optional的正确使用。

第1项 (“ 考虑使用静态工厂方法而不是构造函数 ”)在第三版中不是一个新项目,但现在讨论Java 8中支持并在Java 9中得到增强的接口中的静态方法。 第19项 (“ 用于以下内容的设计和文档”继承还是禁止继承 ”), 也不是新鲜事物,但现在提到了Javadoc @implSpec标记 ,该标记 “已在Java 8中添加并在Java 9中大量使用”。 毫不奇怪, 第56项 (“ 为所有公开的API元素编写文档注释 ”)还讨论了@implSpec用法。

项目50 (“ 在需要时制作防御性副本 ”)没有太多关注(日期和时间不是该项目的重点),但是引用了从Java 8开始使用Instant而不是Date的内容。

Java 9

有效的Java的第三版提供了比我预期的更少的有关模块化 ( Java平台模块系统 )的指导,这可以说是我们许多人与Java 9关联的第一件事。 项目15 (“ 最小化类和成员的可访问性 ”)讨论“作为模块系统的一部分引入的两个附加的隐式访问级别。”

在第二版中,第8项 (“ 避免使用终结剂和清洁剂 ”)的标题仅为“避免使用终结 ”。 在该项目的标题上添加“和清洁器”,表明Java 9 不赞成使用finalizer (由于我非常熟悉的原因),并用Cleaner类代替了它。

项目56 (“ 为所有公开的API元素编写文档注释 ”)讨论了Java 9引入的Javadoc标签{@index}项目59 (“ 了解和使用库 ”)讨论了在Java 9中为什么重要的是知道标准库中的可用内容时使用Java 9将方法TransferTo(OutputStream)添加到InputStream的方法。

项目6 (“ 避免创建不必要的对象 ”)提到Java 9中对布尔型构造函数的弃用,该构造函数接受单个String参数,作为对该项目中要点的说明。 顺便说一句,Java 9中也不推荐使用其他唯一的布尔构造函数[ Boolean(boolean) ]。

《有效的Java第三版》解决了Java 9对接口中的static方法( 第1项 )和Optional第55项 )的改进。 第19项还引用了Java 9对@implSpec的大量使用。 这三个项目中的每一个都在本文前面的“ Java 8”部分中进行了突出显示。

版本无关的新通用Java项目

有效Java的第三版中 ,有一些新项目与第二版所涵盖的Java新版本缺乏明显的联系。 其中包括第5项 (“ 首选依赖项注入而不是硬连接资源 ”), 第25项 (“ 将源文件限制为单个顶级类 ”)和第85项 (“ 首选Java序列化的替代方案 ”)。 我在我的博客文章“ 将Google的协议缓冲区与Java结合使用 ”中写了更多关于Item 85(“ Java序列化的替代品”) 的内容 。

删除的项目和附录

有效Java第二版中的一项似乎已被完全删除。 第三版的有用“附录”标题为“第二版对应的项目”,它表示第二版的单页项目73 (“ 避免线程组 ”)已在第三版中“停用”。 该附录的结构也很容易识别,第二版的第21项(“使用功能对象代表策略”)在第三版中由第42项 (“ 首选lambda优先于匿名类 ”)代替。 顺便说一句,本书各版本中的错别字似乎都很少,但是在第三版中确实突出的错别字是附录中与第二版中的第69项和第三版中的第81项相关的行。版。

小文本更新

有效Java的第三版中,有几项进行了较小的文本更新,其中一些在更改中具有重要意义。 这些是最难调用的,但是我在这里提供一个示例。 在第二版,布洛赫在括号传球写道, StringBuffer的是“过时的主要”相比, StringBuilder的 ,但在第三个版本,这是更强烈的措辞,状态StringBuffer是的“过时的前身” StringBuilder 。 我完全同意案文的这种改变。

介绍

有效Java,第三版》的 11章涵盖了构成“ Java平台最佳实践”的90个项目。 但是,第1章(“简介”)很有价值,因为它将Java 7,Java 8和Java 9中的“关键功能”与讨论这些关键功能的一个或多个项目以及引入了这些关键功能的Java版本相关联。 我希望我早些注意它,但是直到我大部分完成这篇文章之后,才在第1页上看到这个方便的表格。 该表将为我节省大量时间来确定涉及Java 7,Java 8和Java 9新功能的项目!

“简介”也值得一读,因为它列出了“本书中的大多数规则”所依据的“一些基本原理”。 我喜欢Bloch在简介中明确指出的:“这本书不适合初学者:它假定您已经熟悉Java。” 在线上有无数的论坛和主题,人们要求为Java新手准备一本好书。 虽然我强烈建议有效的Java的各种版本的中级和高级Java开发人员,我一直认为,开始Java开发人员与学习Java,然后写了一本书最好应该来有效的Java时,他们知道核心概念和想知道如何尽可能清楚,简单地应用这些概念。

结论

这篇文章重点介绍了第三版中对有效Java的一些最重要的添加和更改。 但是,我只提到了Java 7,Java 8和Java 9的一些快速参考,并且无疑在摘要中错过了一些新的和更改的文本。 为了反映Java的较新版本而对项目进行的一些较小更改,旨在说明如何将Java新功能编织到乍看似乎不一定与Java的新版本相关的多个项目中。

有效的Java是我购买过三本书的唯一一本书,但是多年来,我现在已经购买了每个版本的一本书,对此并不感到遗憾。 高效Java的第三版不仅涵盖Java 7,Java 8和Java 9的新功能,还添加了项目并更新了先前存在的项目,以反映Josh Bloch对使用Java编程语言的最佳实践的最新想法。

翻译自: https://www.javacodegeeks.com/2018/01/whats-new-effective-javas-third-edition.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

综合知识计算机类编制,天津事业编综合知识是什么

天津事业编综合知识有三类,分别是文字综合类、财会类、计算机类,考试时根据岗位考试要求进行一类综合知识的考核,均为主客观性试题,考试时限为150分钟,满分为100分。综合知识(文字综合类)简介(一)测试内容综合知识(文字…

哥大计算机科学学费,哥大计算机科学专业成功案例解析!!!

学生背景:学生:刘同学本科背景:北京大学 生物工程专业GPA: 3.5/4.0雅思7.5 GRE320录取院校:哥伦比亚大学—MS in Computer Science计算机科学硕士规划分析:1、背景分析L同学本科读的是生物工程专业,因为同学…

moxy json介绍_MOXy是GlassFish 4中新的默认JSON绑定提供程序

moxy json介绍GlassFish 4现在可以提供完整的Java EE 7(JSR-342)平台。 EclipseLink为该发行版做出了一些重大贡献。 首先是提供JPA 2.1(JSR-338)实现。 我将在本文中介绍的第二个内容是EclipseLink MOXy,它现在是JAX-…

大学计算机科技论文格式,《中国科技论文在线》稿件格式

《中国科技论文在线》期刊以中国科技论文在线网站http://www.paper.edu.cn/ 为基础,对在线发表论文进行评审,将评选的优秀论文作为期刊的主要稿源。稿件格式如下:中文标题(20字以内)作者11,作者22,……(1. 学校 院系,城…

使用Spring Boot和React进行Bootiful开发

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 在过去的几年中,React受到了很多积极的报导,使其成为Java开发…

计算机图形学结课论文,计算机图形学结课论文精要.doc

计算机图形学结课论文精要2017届结课论文《计算机图形学基础教程》—小球的弹跳运动学生姓名学 号所属学院专 业 计算机科学与技术班 级塔里木大学教务处制目录摘 要11.背景11.1计算机图形学概述11.2计算机图形画面的分类22.OpenGL概述22.1程序的基本结构32.2状态机制43.方案论…

word计算机基础考试题及答案,计算机基础习题及答案题库(期末考试)-word资料(精).doc...

文档介绍:1. 计算机的诞生: 第一台电子计算机是 1946 年在美国诞生的,该机的英文缩写是。答案(A)ENIAC 2. 计算机的诞生: 第一台电子计算机诞生于______ 。答案(C) 美国 3. 计算机的诞生: 第一台电子计算机诞生于______ 。答案(C)1946 年 4. 计算机的诞生: 世界上公…

编译hotspot_从Hotspot JIT编译器打印生成的汇编代码

编译hotspot有时,在对Java应用程序进行性能分析时,有必要了解Hotspot JIT编译器生成的汇编代码。 这对于确定已做出的优化决策以及我们的代码更改如何影响生成的汇编代码非常有用。 在调试并发算法以确保已按预期应用可见性规则时,知道何时发…

计算机硬盘按不同接口,硬盘接口不同 速度差别竟然这么大

硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的类型以及好坏都会直接影响程序运行快慢。说到硬盘接口我们常见的有SATA、PCI-E、M…

计算机导论设计实验,基于抽象知识点的《计算机导论》实验软件设计

Development of Experiment Software for《Computing Essentials》based on the Abstract Knowledge Points1、 College of Computer and Information Science, Southwest University, Chongqing, 400715Abstract:This paper develops an experiment software for 《…

使用Java的@Deprecated前瞻

我偶尔遇到一种情况,我需要引入新的API或构造以供其他人试用,但是我知道在使用某些API后,它可能会根据其他人的反馈而改变。 在这种情况下,我想以某种方式注释该构造,以警告其他开发人员此新添加的构造的暂定性。 在这…

计算机组成原理setb,计算机组成原理与汇编语言4

第四章指令系统指令系统概述指令系统是指某一种计算机所有指令的集合。对计算机而言,这是一组二进制数的输入,实际上是一组电平的输入。这些输入能在一个指令周期内产生人们预先规定的动作。显然这不是一组随机的二进制数据输入。指令系统是联系硬件和软…

计算机通信系统分哪两类,通信系统的组成(数字通信系统由哪几部分组成)

基本系统一般由信源(始发设备)、信宿(接收设备)和信道(传输介质)方式来自源的信息(语言、字符、图像或数据)由终端设备(如电话、电传打字机、传真机或数据终端设备等)转换成电信号。)在发送方,然后由始发设备编码、调制、放大或发送,然后基带信号被转换成…

nosql非关系型数据库_从Datomic出发,革命性的非NoSQL数据库

nosql非关系型数据库我终于设法了解了当今最不寻常的数据库之一,Datomic,并希望与您分享。 感谢Stuart Halloway和他的工作室! 为什么?!? 我们很快就会看到,Datomic与传统的RDBMS数据库以及各种…

你活在一个计算机模拟中吗,一麻省理工教授认为,我们更有可能生活在计算机模拟宇宙中...

一位麻省理工学院的教授表示,我们“更有可能”生活在某种模拟宇宙中,因为我们自己离能够创造超现实的模拟也不远了。(参见在接受解释性网站Vox采访时,计算机科学家Rizwan Virk认为,如果我们生活在信息世界而不是物质世界中&#x…

尽早查看针对Java 11的功能

随着JDK 10即将进入其发布候选阶段 ,有趣的是,开始通过JDK 11观察之后会发生什么。 在撰写本文时,四个JEP ( JDK增强建议 )已正式成为JDK 11的目标(可能会出现)。 这篇文章总结了当前针对JDK 11…

如何在命令行情重启计算机,如何应对“命令式”行情

如果说十月维稳行情,是以劝说,号召并佐以缓发新股为主要行政手段,那么十一月行情的主要特征就是“命令式”的。实践证明,十月行情并不咋地,虎头蛇尾,说明主力并不十分听话,也不卖力,…

服务器系统开机提示0xc000007b,0xc000007b蓝屏解决方法

0xc000007b是一种常见的蓝屏代码,导致出现此蓝屏代码的原因有很多,BIOS设置问题,驱动问题,硬件问题等等。硬件问题对于我们小白来说解决起来有点困难。我给大家带来了解决0xc000007b蓝屏软件问题的方法,赶紧来瞧瞧吧0x…

tms tck_记录合规性–关于TCK,规格和测试

tms tck使用软件规格非常困难。 不论在哪个地方提出; 您最终遇到了一个大问题:是否已实现所有指定的内容并对其进行了测试? 在瀑布驱动的方法学时代,这一直是一个问题,即使在撰写本文的今天,敏捷性和用户故…

3D环动画css3实现,CSS3 3D酷炫立方体变换动画的实现

我爱撸码,撸码使我感到快乐!大家好,我是Counter,本章微博主要利用了CSS3的一些新特性,主要用到关键帧来使3D图形运动起来,涉及到了一些抽象的思想,立体的想象。先给大家看看完成的效果&#xff…