jdk 1.8 jdk8_JDK 8功能的可疑方面

jdk 1.8 jdk8

我们大多数使用Java进行开发的人通常都热衷于JDK 8附带的功能和改进。 但是,最近有几篇文章指出了某些功能可能会被滥用和滥用,并可能在将来导致一些其他问题。 这些功能使我想起了J2SE 5中引入的自动装箱功能,虽然有其有用的情况,但是如果未正确理解和应用,也会导致问题。 在这篇文章中,我引用了其他人关于这些可疑功能的文章。 请注意,本文并非与任何发行版相关的“正常” 已知问题 。

Lambda表达式似乎是JDK 8的最大新功能 ,但Tal Weiss撰写了一篇名为Java 8中Lambda表达式的黑暗面的文章。 在那篇文章中,Weiss写出了lambda表达式和Nashorn JavaScript引擎的“阴暗面”(他认为这是JDK 8的第二大功能)。 他谈到“代码与运行时之间的距离”,并指出“我们为更短,更简明的代码,更复杂的调试和更长的合成调用栈付出了代价”。

在Java 8的“爱与恨”中 , Andrew C. Oliver和Michael Brush提供了有关JDK 8的一些主要新功能的很好的介绍。他们认为接口上的默认方法 “允许多种继承”,并且“可能” [成为Java 8中大多数人关心的细节。“ 他在评估时总结了这篇文章:“危险的功能是功能接口。 如果使用不当,可能会引起很多头痛。”

Peter Verhas在Java 8默认方法一文中对接口上默认方法的潜在问题进行了详细的分析:什么可以做和不能做? 以及如何不使用Java 8默认方法 。 他在一篇文章中指出:“向接口添加默认方法可能会使某些类无法使用。” 在另一篇文章中,他补充说:“默认方法是技术错误”,并引用了以下事实:默认方法已添加到Java接口中,以支持现有实现的向后兼容性,而这些方法需要添加到接口中以支持新的JDK 8。特征。

Lukas Eder 在Java 8的黑暗面中表达了对默认方法的不同关注:无法使默认方法最终或同步,以及引入了“ default”关键字。 这篇文章中指出的另一个有趣的“ caveat”是lambda表达式对重载的影响。

Tal Weiss的另一篇文章《 Java 8中的新并行API》:The Glitz and Glamour背后 ,着眼于魏斯在测量“新Java 8并行操作API”在负载下的性能时观察到的一些问题。 Weiss观察到,“在已经是多线程环境的环境中添加线程并不能帮助您”,并提醒我们,“尽管这些都是非常强大且易于使用的API,但它们并不是灵丹妙药 。 我们仍然需要对何时雇用他们做出判断。”

Lukas Krecan警告使用Java 8并行流之前请三思,并写道:“问题是所有并行流都使用公共的fork-join线程池 ,如果您提交了长时间运行的任务,则会有效地阻塞池中的所有线程。” 为了解决这个问题,Krecan建议“(确保)提交到公共fork-join池的所有任务都不会卡住,并会在合理的时间内完成”或“不要使用并行流并等到Oracle允许我们指定用于并行流的线程池。”

Edwin Dalorzo的文章“ Java 8中为什么会有接口污染”着眼于类型擦除 , 检查的异常以及缺少值类型 ( JEP 169 )如何导致JDK 8中的设计决策“污染了” Java接口。 这篇文章将Brian Goetz关于JDK 8设计决策的引文与作者自己的评论混合在一起,以指出“对于黑暗面的存在有很好的解释”。

当然,新发布的JDK 8和基于Java的工具之间存在问题。 例如,在《 Hello Java 8》(以及如何使GlassFish变得无语……)一文中 , Cay Horstmann记录了GlassFish 4在“用错误的Java版本编译了WAR”时没有编写任何堆栈跟踪信息。

尽管引用的帖子指出了与JDK 8最令人期待的功能有关的合理问题,例如lambda表达式,流,接口默认方法和Nashorn JavaScript引擎,但我仍然对使用JDK开发Java的勇敢新世界感到兴奋8 。 这篇文章中突出显示的帖子是提醒您谨慎谨慎地使用这些新功能,以便我们在享受它们带来的优势的同时,尽可能地减少因不明智使用而带来的新危险和成本。

翻译自: https://www.javacodegeeks.com/2014/04/dubious-aspects-of-features-of-jdk-8.html

jdk 1.8 jdk8

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

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

相关文章

Java注解参数类型枚举值_EffectiveJava-5-枚举和注解

用enum代替int常量1. int枚举:引入枚举前,一般是声明一组具名的int常量,每个常量代表一个类型成员,这种方法叫做int枚举模式。int枚举模式是类型不安全的,例如下面两组常量:性别和动物种类,二者…

【渝粤教育】国家开放大学2018年春季 0149-21T现代汉语 参考试题

试卷编号:0149 座位号 2017——2018学年度第二学期期末考试 现代汉语试题 2018年7月 1.合口呼韵母2.合成词 3.同义词4.非成词语素 5.派生义 1.有两种趋势促进了现代汉民族共同语的发展,一是 …

JDK 12 – JEP 325开关表达式

JDK 12于2019年3月19 日上线GA,继续致力于缩短发布周期和频繁发布。 该版本的功能部分可以在这里找到。 对于开发人员来说,有趣的功能之一是“ JEP 325开关表达式 ”,它可以作为预览功能使用。 此处定义的预览功能是: 预览语言或…

【渝粤教育】国家开放大学2018年春季 0222-22T模拟电子电路 参考试题

编号:0222 b 2017-2018年度第二学期期末考试 模拟电子电路(开卷) 试 题 2018年 7 月 一 、概念解释(每小题6分,共30分)1、电流放大倍数2、自激振荡3、负反馈4、通频带5、滤波二、放大电路的计算&#xff0…

工业交换机:如果出现了物理性故障该怎么判断?

一般工业交换机出现故障大致可以分为:软性能故障和物理性故障。软性能故障一般是指工业交换机在研发设计方面出现的问题。今天就由飞畅科技的小编来给大家聊聊工业交换机物理性故障该怎么判断?一起来看看吧! 物理层故障主要是指交换机本身的…

java example cat_java maven hello example

Maven插件开发From:Maven 插件开发—-让maven使用更加灵活对于习惯于使用maven构建、管理项目的人来说,maven就是项目开发、测试、部署的一把利器:对类库的集中管理;依赖传递、继承、重用性高;对整个项目开发生命周期的完整支持&a…

【渝粤教育】国家开放大学2018年春季 0283-21T广告创意与表现(二) 参考试题

试卷代号:0283 2017-2018年度第2学期期末考试 广告创意与表现(二)试题(闭卷) 2018年5月 请指出下列作品采用的基本广告创意思路,并结合作品对此创意思路的定义、广告效果、思路进行阐述。字数不低于400。&…

工业交换机常用术语及常见知识点汇总

工业交换机作为现在最流行也最高效率的数据通信设备,它本身就是一款高科技产品。是产品就有很多的参数和指标,很多采购的朋友,可能只是按照公司的要求来进行筛选对应的产品,对工业交换机的了解不是很深入,甚至对交换机…

java lambda 调用函数_Java lambda函数将如何编译?

VM决定如何实现lambda,而不是编译器。请参阅Lambda表达式的翻译中的for部分。我们没有描述生成用于实现lambda表达式的对象的字节码(例如,调用内部类的构造函数),而是描述了构造lambda的方法,并将实际构造委托给语言运行时。 该配…

【渝粤教育】国家开放大学2018年春季 0632-22T老年保健按摩 参考试题

科目编号:0632 座位号 2017-2018学年度第二学期期末考试 老年保健按摩试题 2018年7月 一、名词解释(本大题共5小题,每小题4分,共计20分) 1.老年病: 2.耳穴疗法: 3.拔罐疗法: 4.刮…

q7goodies事例_Java 8 Friday Goodies:精益并发

q7goodies事例在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一个…

【渝粤教育】国家开放大学2018年春季 0700-22T中级会计实务(一) 参考试题

科目编号:0700 座位号 2017-2018学年度第二学期期末考试 中级会计实务(一) 试题 2018年 7 月 一、单选题(本大题共10小题,每小题3分,共计30分) (★请考生务必将答案填入到下面对应序…

工业交换机的外壳设计重要吗?

工业交换机一般使用在环境比较恶劣的地方,例如工厂等,为了让工业交换机更好的使用,工业交换机的外壳设计起到至关重要的作用,工业交换机的外壳可以更好的保护工业交换机的使用,那么如何才能选到实用的工业交换机外壳呢…

java 邮件 超链接_将Excel范围中的超链接传输到Outlook电子邮件

我正在尝试从excel范围(rng 1到6)创建一个电子邮件,其中包含A列和D列中每个单元格的超链接 . 以下是为这些范围创建超链接的代码示例 . 一切正常 .ActiveSheet.Hyperlinks.Add Anchor:ActiveWorkbook.Sheets("Overdue").Range("A" & D2), _…

【渝粤教育】国家开放大学2018年春季 3818-22T燃气工程施工 参考试题

科目编号:3818 座位号 2017-2018学年度第二学期期末考试 燃气工程施工 试题 2018年 7 月 一、填空题(本大题共10空,每空3分,共计30分) 1.常用沟槽断面有___________________、、、联合槽四种形式。 2&…

【渝粤教育】国家开放大学2018年春季 7140-22T危急重症护理学(本) 参考试题

编号:7140 座位号 2017~2018学年度第二学期期末考试 危急重症护理学试题 2018年07月 一、名词解释(每题5分,共20分) 甲状腺危象 中毒 心肺脑复苏 惊厥 二、填空 (每空3分,共30分&#xff…

工业交换机和工业4G路由器的区分

工业交换机也称作工业以太网交换机,即应用于工业控制领域的以太网交换机设备,由于采用的网络标准,其开放性好、应用广泛以及价格低廉、使用的是透明而统一的TCP/IP协议,以太网已经成为工业控制领域的主要通信标准。工业交换机具有…

java 包装类方法总结_【源码】java包装类总结

1.包装类除了Void和Character,其他六个全部都继承自Number。Number是一个抽象类。如下:public abstract class Number implements java.io.Serializable {public abstract int intValue();public abstract long longValue();public abstract float float…

扩展枚举功能的两种方法

前言 在上一篇文章中,我解释了如何以及为什么在Java代码中使用enums而不是switch/case控制结构。 在这里,我将展示如何扩展现有enums功能。 介绍 Java enum是一种编译器魔术。 在字节码中,任何enum都表示为扩展抽象类java.lang.Enum并具有几…

【渝粤教育】国家开放大学2018年春季 7403-21T素质与思想政治教育 参考试题

编码:7403 座位号: 2017-2018学年度第二学期期末考试 素质与思想政治教育试题(开卷) 2018年7月 一、单项选择题(每题3分,共30分) 考生注意:请将答案填写在下面的方框内,…