jdk发布已经有一段时间了,使用了一下,总结了一下新特性。
1.JDK10允许编译器推断局部变量的类型,但是局部变量类型推断能力仅适用于局部变量。它不能用于定义实例或者类
变量也不能用于方法的参数和返回类型,但是可以在增强型for循环或者迭代器中使用它,使用局部变量类型组主要的优点是
减少了代码的冗长,在申明变量时不用指定类型,只要在初始化时,即new的时候写出就可以了。
2.1中的特性也有缺点,比如你无法直到返回值是什么类型,这样代码是难以维护的;
而且var不能与lambda使用,因为当两者一起使用时,类型推断效果不佳,主要是编译器缺少类型信息,所以lambda表达式是不会被编译的;
var不会与菱形操作符混在一起,这和lambda情况相似,编译器对类型的处理停留在了Object,它无法知道到底是什么类型;
3.JDK10弃用了一些API,比如FileOutPutStream 中的finalize()
4.允许在不执行全局VM安全点的情况下执行线程回调,这使得停止单个线程既可行又便宜,而不是要求你停止所有的线程或不需要任何线程;
5.提高容器意识,如果你部署到像 Docker 这样的容器,那么这个功能特别适合你。 现在 JVM 意识到它正在容器中运行,并查询容器中可用处理器的数量,而不是查询主机操作系统。 也可以从外部附加到在容器中运行的 Java 进程,这使监视 JVM 进程变得更加容易。
以前,JVM 不知道它的容器,并会向主机操作系统询问活动 CPU 的数量。 在某些情况下,这会导致 JVM过度报告资源,导致多个容器在同一操作系统上运行时出现问题。 |
|