在博客文章“ JDK 10 Release Candidate Phase ”中,我研究了JDK 10可能包含的十二个新功能。 在本文中,我介绍了一些可能会在JDK 10中删除的API,并探讨了一些在JDK 10中建议弃用的API。本文中的信息基于当前版本(2018/1 / “ Java SE 10(18.3)(JSR 383)建议的最终草案规范 – DRAFT

JDK 9 增强的弃用功能( JEP 277 )允许使用@Deprecated的新可选的forRemoval()元素设置为true来注释多个JDK API,这表明“注释的API”已指定在将来的版本中删除。 ” 下列API已应用此已弃用的增强功能,并在JDK 9中标记为“在将来的版本中删除”,现在JDK 10似乎是将其删除的版本。

  • “删除最终不赞成使用的方法Runtime.getLocalized {Input,Output} Stream”( JDK-8193162 )
  • java.lang.Runtime.getLocalizedInputStream(java.io.InputStream) (从JDK 1.1开始不推荐使用)
  • “删除不建议使用的1.2之前的SecurityManager方法和字段”( JDK-8189750 )
  • java.lang.SecurityManager.classDepth(java.lang.String) (从JDK 1.2开始不推荐使用)

按照当前的建议,JDK 10将为可选的注释元素forRemoval=true到一些以前不推荐使用的[ @Deprecated ] API元素,而这些API元素以前没有设置forRemoval 。 其中包括与安全性相关的接口,类和异常,这些接口,类和异常已被其他与安全性相关的构造所替代(许多早在JDK 1.2中就已被替代)。 几种“ finalize” @Deprecated方法还增强了@Deprecated注释,以指示从JDK 10开始,它们“已指定在将来的版本中删除”。 例如, JDK 9中已弃用 FileInputStream.finalize() ,但自JDK 10起 ,它将用forRemoval=true 标记 。

很长时间以来(自JDK 1.2或更早版本开始),不推荐使用JDK 10中要删除的大多数JDK API构造,因此有足够的时间来替换这些构造。 在JDK 10中新表示的要在将来的版本中删除的大多数JDK API构造已被弃用,此更改仅表示它们现在很可能在将来的版本中删除。 JDK 9引入的增强的弃用机制使JDK API在通过@Deprecated批注的forRemoval=true元素预先通告了可能的删除之后,可以更积极地删除这些结构。 JDK 9删除了几项内容 ,并且似乎JDK 10可能会继续删除某些先前不推荐使用的API元素。

翻译自: https://www.javacodegeeks.com/2018/02/apis-removed-java-10.html