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

jdk 1.8 jdk8_JDK 8功能的可疑方面相关推荐

  1. JDK 8功能的可疑方面

    我们大多数使用Java进行开发的人通常都热衷于JDK 8附带的功能和改进. 但是,最近有几篇文章指出了某些功能可能会被滥用和滥用,并可能在将来导致其他问题. 这些功能使我想起了J2SE 5中引入的自动 ...

  2. jdk 9和jdk8_JDK 9 –给圣诞老人的信?

    jdk 9和jdk8 众所周知,冬天(尤其是圣诞节前的时间)是做梦的合适时机,希望有一个梦想似乎可以触及的时刻. 当孩子们和大人在纸上或在他们对圣诞老人的虚构或真实信件中写下自己的梦想时,希望他们的梦 ...

  3. Java平台,标准版Oracle JDK 9中的新功能

    Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...

  4. jdk 9和jdk8_JDK 9已完成功能!

    jdk 9和jdk8 今天的Mark Reinhold消息JDK 9已完成功能完善-现在该降级了 , 它宣布JDK 9的"总体功能集已冻结". OracleJava平台小组的首席架 ...

  5. jdk 9和jdk8_JDK 9是某些功能的终结

    jdk 9和jdk8 几天前宣布JDK 9是Feature Complete! 进行切割的许多"功能"是附加功能,但有些是移除功能. 这篇文章介绍了一些从OpenJDK和/或Ora ...

  6. Java 14:JDK 14进入GA时的所有新功能

    是的,六个月过去了这么快,现在到了,Java 14的发布即将到来. 我们一直在跟踪新JDK在过去半年中的进展,您可以在此处找到摘要的所有功能. 但是,如果您想直接进入,可以在此处找到JDK 14二进制 ...

  7. Java 13 –深入了解JDK的新功能

    由于Java的版本号已经增加了两个,因此您可以快速判断今年的情况! 同时,我们的Java开发人员应该已经习惯了较短的发布周期. 毕竟,我们现在可以定期尝试新功能,并且不会每隔几年就被大量新功能所杀死. ...

  8. Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

    class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中.这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码.JVM虚拟机读取字节码文件,取出 ...

  9. 给Arm生态添把火,腾讯Kona JDK Arm架构优化实践

    前言 Arm架构以其兼具性能与功耗的特点,在智能终端以及嵌入式领域得到了广泛的使用,不断扩大其影响力.而在PC端以及数据中心,之前往往是x86架构在其中发挥着主要的作用.最近,随着人工智能.云计算等技 ...

最新文章

  1. 如何监听WebView完成加载URL?
  2. 如何使用PHP自动备份数据库
  3. 一次Task.Run异常问题的排查
  4. python写tcp服务器_用Python实现一个简单的多线程TCP服务器的教程
  5. 耦合式是什么意思_定向耦合器是如何工作的?能怎样应用?看完就全明白了
  6. 非对称加密(1)非对称加密原理
  7. MyEclipse—如何在MyEclipse中创建servlet3.0
  8. C++与Python混合编程
  9. can通道采样频率_CAN波特率计算
  10. 中国姓氏大全(常见508个,罕见740个)
  11. Wherehows项目部署文档
  12. Win10系统中蓝牙串口功能启动方法
  13. 解决BT5不能上网的问题
  14. 家庭购药新指南:2020-2021年中国家庭常备药上榜品牌榜单公布
  15. activiti 获取审批人员_activiti,根据任务id获取该任务节点配置的获选人或者获选组...
  16. RT-Thread Studio网络应用MQTT笔记
  17. 上线啦,PP.io!
  18. 大型3d射击类游戏源码【突击风暴】,中文版本,可私服
  19. 计算机视觉软件安装全教程(python opencv VSCodeUserSetup)
  20. python rgb转换为gray

热门文章

  1. POJ - 3415 Common Substrings(长度不小于K的公共子串个数)
  2. 【图论】【Kosaraju】刻录光盘(ssl 2344)
  3. 2017西安交大ACM小学期 敏感词汇[AC自动机]
  4. JavaFX UI控件教程(八)之Choice Box
  5. 给你一份超详细 Spring Boot 知识清单
  6. 用eclipse创建动态web项目手动生成web.xml方法
  7. jstack命令:教你如何排查多线程问题
  8. Shell入门(八)之布尔运算
  9. 新闻发布项目——数据库脚本(直接导入即可)
  10. python常见内置函数