java 1.8新增功能

自Java 8推出以来,最有趣的功能是什么?

Java 8最近庆祝了它的第一个生日,其主要版本已经在一年多以前了。 这当然值得庆祝。

自从最初的Java 8版本问世以来,已经发布了六个更新。 这些更新中的某些元素是次要的,但是如果您不注意的话,您可能会漏掉一些有趣的附加内容。 这里有五个您应该检查的:

新帖:睡觉时:新增的Java 8热门文章http://t.co/4bGHVwzo7q pic.twitter.com/lZz2Aq2XTA

— Takipi(@takipid) 2015年3月30日

1. Nashorn性能增强

Java 8带来的附加功能之一是Nashorn。 如果您不熟悉,“ Nashorn的目标是通过Java与本地JVM一起实现轻量级高性能JavaScript运行时。” 在8u40版本中,Oracle发布了对Nashorn脚本引擎的增强,以改善Java和JavaScript之间的工作关系。 尽管是完全不同的语言,但给定他们的名字,让他们两个都能很好地工作会带来一种满足感。 就像双体船上的猫一样。

通过此更新,Nashorn已被改写为一种乐观类型系统,以更好地应对在Java环境中实现JavaScript的一些挑战(即围绕将动态语言(如JavaScript)输出为Java字节码)。 通过乐观类型,Nashorn对不能静态推断的局部变量和表达式类型做出乐观假设。 它假定任何类型都是int,并在运行时发现错误时立即调整这些假设。

这项增强功能可以使执行代码更加快捷,尽管由于调整而导致的预热时间略有降低。 正如Nashorn团队所报告的那样 ,预热时间问题是Java 9的重点之一,因此,如果这对您来说是一个大问题,那么好消息可能即将到来。 显然,您必须在这里确定预热成本是否物有所值,但是Oracle为这些Nashorn增强功能运行的基准测试非常令人鼓舞。 与V8相比,在某些情况下,他们报告了数量级的改进和接近本机的性能。

这些增强功能的另一个潜在的令人敬畏的好处是,Nashorn可以扩展到JavaScript以外的其他动态语言。 在这方面仍然需要做一些工作,但是现在有了乐观打字系统的基础。

Oracle目前尚未将这些增强功能设置为Nashorn的默认功能,因此,如果要以这种方式运行Nashorn,请使用参数–optimistic-types = true。 如果您想了解更多有关此增强功能的详细信息,请在此处查看Oracle博客。

  • 从以下版本开始可用: Java 8 Update 40

2.合作记忆管理(商业功能)

Oracle对Java 8的另一项补充是协作内存管理。 此功能引入了“内存压力”的概念,并且全部用于解决内存使用量接近最大水平的情况。 内存压力是系统可用总内存的代表。 内存压力测量值越高,系统越接近内存不足。

当系统快要用完内存时,JDK将跟踪总内存使用量并采取措施减少总内存使用量。 通常,这些步骤将包括减少Java堆大小,这可能会对性能产生一些影响。 在这种情况下,有意进行性能折衷是值得的。

//边响警报

要注意的重要一点是,这是一项商业功能。 如果您是HotSpot或OpenJDK开发人员,则将无法使用该功能。 您无疑知道Oracle和Java在商业和开源方面之间的某些紧张关系,这是另一个例子。 协作内存管理本身可能是一项商业功能,但它会驱动和/或影响属于开源阵营的其他增强功能(例如,我正在谈论的清单中的下一个功能)。 无论您是将这些其他更改视为对商业工作的主要有益结果,还是作为尝试将开源用户吸引到商业方面的钩子,无疑都涉及一些不透明性问题。

Oracle(可以理解)没有共享其商业功能的内部测试和基准。 但是,当这些功能溢出到开源方面进行的更改时,“为什么要进行这些更改”的答案实质上是“因为我们告诉您更好,即使我们不会告诉您如何做”,您可以看到为什么有些人会不高兴。 并不是说Oracle在弯腰曲折,或者某种程度上,这仅仅是因为缺乏透明度并不能与开源世界息息相关,并阻碍了开发人员真正做出明智决定的能力。 无论如何,足够了。

//旁听。

  • 从以下版本开始可用: Java 8 Update 40

3.使MinHeapFreeRatio和MaxHeapFreeRatio标志易于管理

合作记忆管理的增加也是其他变化的催化剂。 其中之一是通过能够在运行时调整其值来使MaxHeapFreeRatio和MinHeapFreeRatio标志易于管理。 通过此更新,您可以控制这些标志的值,这些标志的默认值分别从70/40更改为100/0,以使JVM更好地增长和收缩Java堆。 与协作内存管理不同,管理这些标志不是商业性的,可以单独使用。 商业的合作内存管理功能确实使跨多个JVM实例的管理变得更加容易,但这不是必需的。 无论如何,对这些标志的更改应该改善在需要动态堆或更改堆的情况下管理Java堆大小的经验。

现在,与所有可管理的事物一样,存在严格管理默认设置会导致管理不善而导致性能下降的风险。 获得更多控制权并不是一件好事。 这里的权衡是,能够管理这些标志可以帮助您在减少使用次数时减少内存占用,或在增加使用次数时更轻松地扩展内存。 即使您是一个倾向于质疑这种由商业驱动的变革所带来的广泛好处的人,它本身也确实提供了实实在在的好处(如果您属于这个阵营,我当然不会为此怪罪您)。 如果这些标志出现问题导致代码中出现错误或异常, Takipi会在这里为您找到它们!

  • 从以下版本开始可用: Java 8 Update 20

4.新的JAXP处理限制属性– maxElementDepth

maxElementDepth属性已添加到JAXP(用于XML处理的Java API)中,以解决资源使用问题。 它使应用程序能够限制其解析的xml文件的最大元素深度。 设置限制时,所有JDK和JRE调用都会遵守该限制。

如果您偶尔处理巨大的xml文件并且不想花费大量资源来解析周围的特大文件,则此属性会派上用场。 它也可以用作安全性或性能检查,以防止您的应用程序被怪物文件占用。

  • 从以下版本开始可用: Java 8 Update 11

5. Java依赖性分析工具(jdeps)

Java依赖性分析工具(jdeps)是一个新的命令行工具,开发人员可以使用它来显示其应用程序和Java库的静态依赖性。 它提供了一定程度的自定义,因此您可以从中获得相当广泛的信息。 默认情况下运行它时,它将在软件包级别向您显示应用程序的静态依赖关系。

jdeps来自joda-time

您也可以在更细粒度或更详细的级别上运行jdeps。 例如,您可以使用指定的特定类运行它,以便查看该类的所有静态依赖关系。 或者,如果您感到烦躁,可以使用-v或-verbose选项来打印所有类级别的依赖项。 这自然会导致大量文本,因此jdeps还提供了-dotoutput选项,可将所有内容写入文件。

还需要注意的是-jdkinternals选项,该选项向您显示JDK内部API中的任何类级别的依赖关系。

有关更多信息,请参见jdeps页面。

  • 从以下版本开始可用: Java 8 Update 11

结论

现在,Oracle当然已经发布了六个更新,其中不仅仅包含这五个附加内容,而且根据您所使用的Java的不同,我可能还为您遗漏了一些重要的内容(例如JavaFX的性能增强),但是这些是五个非常值得关注的很棒的东西。 我不能说将来的发行版中会出现什么,但是这里是希望有更多有趣的东西。 如果我错过了您发现超级有用的任何补充,请告诉我。

翻译自: https://www.javacodegeeks.com/2015/03/while-you-were-sleeping-the-top-new-java-8-additions.html

java 1.8新增功能

java 1.8新增功能_睡觉时:新增的Java 8新增功能相关推荐

  1. 空指针异常是什么原因_睡觉时,突然抖了一下,脚踏空,是什么原因?

    睡觉是我们每天都要做的事情,吃喝拉撒,是身体的生理现象,只有保持正常运行,身体才能减少产生问题. 不要觉得睡觉是个很平常的事情,就不去注重,有时候睡觉出现的异常,也可能是身体的警示.若想要身体健康,就 ...

  2. 柠檬网络电视_睡觉时旁边放柠檬,真能促进长高提升记忆力?权威解答来了

    专家建议 2-4岁的儿童每天睡12小时: 4-7岁的儿童每天睡11小时: 7 -15岁的儿童每天睡9-10小时. 执笔:胡蝶 编辑:胡蝶 定稿:欧阳比文 对于孩子的身高问题,家长们可谓是操碎了心,谁不 ...

  3. java实现计算器的退格功能_帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q...

    已结贴√ 问题点数:5 回复次数:1 帮忙看下这个java做的计算器为什么实现不了退格和清零功能,3q import java.awt.*; import java.awt.event.*; publ ...

  4. java调用打印预览_急求一个用Java实现的打印及打印预览功能的Demo

    展开全部 package com.szallcom.tools; import java.awt.BorderLayout; import java.awt.Color; import java.aw ...

  5. java切换账号功能_使用AccessibilityService实现微信自动切换账号功能

    对AccessibilityService的学习已经有一个多月了,发现其使用方法其实也都蛮简单的,只是在不同项目中试错比较复杂. 使用AccessibilityService实现了微信自动切换账号的功 ...

  6. java中execution的作用_一文初步了解Java虚拟机

    大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 什么是JVM? JVM(Java Virtual Machin ...

  7. java webservice报文过长_工作1-5年的Java程序猿到底需要怎样的一个技术栈?

    工作1-5年的Java程序猿到底需要怎样的一个技术栈? 前言: 具有1-5年开发经验的程序员 需要学习的内容其实还有很多很多. 今天跟大家交流一下希望分享出来的对大家能够有帮助,这是我这些年总结出的一 ...

  8. java 哈希一致算法_一致哈希算法Java实现

    一致哈希算法(Consistent Hashing Algorithms)是一个分布式系统中常用的算法.传统的Hash算法当槽位(Slot)增减时,面临所有数据重新部署的问题,而一致哈希算法确可以保证 ...

  9. java实现次方的运算_【技术干货】Java 面试宝典:Java 基础部分(1)

    海牛学院的 | 第 616 期 本文预计阅读 |18 分钟 Java 基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法, ...

最新文章

  1. 小程序二次贝塞尔曲线,购物车商品曲线飞入效果
  2. 计算机操作系统开启审计功能,深入浅出理解操作系统安全
  3. new housing price at shanghai
  4. sh: react-scripts: command not found after running npm start
  5. 人民日报“权威认证”吃鸡装备哪家强,不服来辩!
  6. 如何获得github的oauth access token
  7. 如何评价周志华深度森林模型
  8. useEffect和useLayoutEffect区别
  9. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能...
  10. ubuntu 上的python不能解析jpeg,png?
  11. Android水平仪实训报告,测量实训报告【三篇】
  12. FOXIT PDF EDITOR工具分割PDF
  13. 论文参考文献生成以及标注方法说明
  14. DM、PQ、PM、diskgen分区工具介绍比较
  15. excel表格公式出现#REF是什么意思
  16. vsCode使vue中的代码高亮
  17. TCP三次握手的相关问题及解答
  18. 软考高级信息系统项目管理师系列之九:项目范围管理
  19. 16-Seed_expand_and_constrain Three_principles_for_weakly-supervised_image_segmentation
  20. FileUploadException: Header section has more than 10240 bytes (maybe it is not properly terminated)]

热门文章

  1. P4755-Beautiful Pair【笛卡尔树,线段树】
  2. P3620-[APIO/CTSC2007]数据备份【贪心,堆,链表】
  3. jzoj3914-人品问题【树形dp】
  4. P3369-[模板]普通平衡树【Splay】
  5. AtCoder Beginner Contest 177总结
  6. 【LCT】大融合(luogu 4219)
  7. 【数学期望】【LCA】【树形DP】树
  8. 【结论】单元格(jzoj 1509)
  9. codeforces 932E Team Work 高等数学求导、dp
  10. 动态规划训练8 [E - Multiplication Puzzle POJ1651]