Java最高

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程

1.介绍

JDK 10它是Java SE 10的一个实现,于2018年3月20日发布。

在本文中,我们将介绍和探索JDK 10中引入的新特性和更改。

2.局部变量型推理

以下链接将为您提供一篇关于该功能的深入文章:

Java 10局部变量类型推断

3.无法改变的集合

在Java 10中有一些与不可修改集合相关的更改。

3.1。copyOf ()

并不知道,java.util.Mapjava.util.Set每个都有一个新的静态方法copyOf(集合)

它返回给定的不可修改的副本集合:

@Test(expected = UnsupportedOperationException.class) public void whenModifyCopyOfList_thenThrowsException() {List copyList = List. copyof (someIntList);copyList.add (4);}

任何修改此类集合的尝试都会导致java.lang.UnsupportedOperationException运行时异常。

3.2。toUnmodifiable * ()

java.util.stream.Collectors获取收集a的附加方法为无法改变的列表,地图:

@Test(expected = UnsupportedOperationException.class) public void whenmodifytoounmodifiablelist_thenthrowsexception () {List evenList = someIntList.stream() .filter(i -> i % 2 == 0) .collect(collections . toounmodifiablelist ());evenList.add (4);}

任何修改此类集合的尝试都会导致java.lang.UnsupportedOperationException运行时异常。

4.可选* .orElseThrow ()

java.util.Optional,java.util.OptionalDouble,java.util.OptionalIntjava.util.OptionalLong每个人都有一个新方法orElseThrow ()哪个不带任何参数并抛出NoSuchElementException如果没有值:

@Test public void whenlistcontainsinteger_orelsethrowturnnsinteger () {Integer firstEven = someIntList.stream() .filter(i -> i % 2 == 0) .findFirst() .orElseThrow();(firstEven) .equals (Integer.valueOf (2));}

它是同义词,现在是现有的首选替代方案get ()方法。

5.性能改进

以下链接将为您提供一篇关于该功能的深入文章:

Java 10性能改进

6.容器的意识

jvm现在知道是在Docker容器中运行的并提取特定于容器的配置,而不是查询操作系统本身——它适用于分配给容器的cpu数量和总内存等数据。

然而,这种支持仅适用于基于linux的平台。这种新支持在默认情况下是启用的,可以在命令行中使用JVM选项禁用:

- xx: -UseContainerSupport

此外,这个更改增加了一个JVM选项,可以指定JVM将使用的cpu数量:

- xx: ActiveProcessorCount =计数

此外,增加了三个新的JVM选项,允许Docker容器用户获得更细粒度的控制系统内存量,将用于Java堆:

- xx: InitialRAMPercentage - xx: MaxRAMPercentage - xx: MinRAMPercentage

7.根证书

到目前为止,cacerts keystore最初是空的,目的是包含一组根证书,这些证书可用于在各种安全协议使用的证书链中建立信任。

因此,像TLS这样的关键安全组件在OpenJDK构建下默认情况下无法工作。

在Java 10中,Oracle开放了根证书的源代码为了使OpenJDK的构建对开发人员更具吸引力,并减少这些构建与Oracle JDK构建之间的差异。

8.不支持和删除

8.1。命令行选项和工具

工具javah已经从Java 10中删除,Java 10生成了实现本地方法所需的C头文件和源文件——现在,javac - h可以用来代替。

policytool是用于策略文件创建和管理的基于UI的工具。现在已经删除了。用户可以使用简单的文本编辑器来执行此操作。

删除java -Xprof选择。该选项用于对正在运行的程序进行概要分析,并将概要分析数据发送到标准输出。用户现在应该使用jmap工具来代替。

8.2。api

已弃用的Java .security.acl包已经被标记为forremove =true,在Java SE的未来版本中可能会被删除。它被取代了java.security.Policy和相关的类。

同样,java.security。{Certificate,Identity,IdentityScope,Signer} api被标记forRemoval = true

9.基于时间的发布版本

从Java 10开始,Oracle已经转向基于时间的Java发行版。这有以下含义:

  1. 每六个月发布一个新的Java版本。2018年3月的版本是JDK 10, 2018年9月的版本是JDK 11,等等。这些被称为特性发布,预计至少包含一到两个重要特性
  2. 对新特性的支持只会持续6个月也就是说,直到下一个特性发布
  3. 长期支持发布将被标记为lt。对这种释放的支持将持续三年
  4. Java 11将会是一个LTS版本

java - version现在将包含GA日期吗,更容易确定发布的时间:

$ java -version openjdk version "10" 2018-03-20 openjdk运行时环境18.3 (build 10+46)

10.结论

在本文中,我们看到了Java 10带来的新特性和变化。

像往常一样,可以找到代码片段在GitHub

Java底部

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程
1评论
最古老的
最新的
内联反馈
查看所有评论
本文评论关闭!