Java 9将采用新的版本字符串格式
在现有的版本编码格式使用了两年之后,从Java 9开始,Java版本方案将根据业内软件版本编码的最佳实践进行修改。使用或解析Java版本字符串的应用程序开发人员要注意了,因为这种变化可以会影响他们的应用程序。
正如JEP 223所阐述的那样,当前的版本方案会跳过某些版本号,而且安全补丁版本和更新版本混在一起。社区认为,该方案产生的版本号含义模糊、不直观。为了解决这个问题,Oracle引入了一种使用语义版本编码的新版本方案,就是说,Java版本字符串将依次包含如下三个部分:主版本号、小(维护)版本号和安全版本号。长版本格式还将包含像构建版本号和可用性这样的信息。
主版本号即我们通常所理解的Java版本,比如,Java 9的主版本是9。因此,按照Java的新版本发布计划,主版本的变化只会两年或三年发生一次。主版本的变化可能会包含破坏性变更,但这些变更至少会提前两个主版本通知。
小版本号将包含非重要Bug修复、所支持API的维护发布以及增加内部组件,如新的服务提供程序、新的垃圾收集器,或者支持新的架构。同更新补丁集一样,小版本有望每季度发布一次。
最后,安全版本将包含重要Bug修复。这些版本可能像重要补丁更新那样根据计划按季度发布,或者像安全警报那样按需发布。
关于这点,有个值得注意的结论是,在认识到社区将当前版本号中的第二个数字作为事实上的主版本号,而开头的1被理解为没有意义之后,Oracle去掉了版本号开头的“1”。这一变化可能会导致目前解析版本字符串而有假定版本号开头为1或点的应用程序出现问题。例如,
System.getProperty("java.version").indexof('.');
上述获取主版本的代码会返回-1(尾部的0会从版本字符串中去掉,因此,9.0.0会简单地表示成9)。
新方案将成为Java版本字符串的第三个标准。第一个始于Java 1.3。该方案相当简单,使用第二个数字作为实际的主版本,第三个数字表明是一个安全修复(奇数)还是更新(偶数)。这种编码系统存在缺陷,有时候会迫使一些版本重新编码。
为了解决这个问题,Oracle引入了当前的版本系统。在当前的方案下,安全补丁仍然使用奇数,更新仍然使用偶数,虽然并不连续。更新总是20的倍数,重要补丁更新的版本通过在最新的维护更新上增加5的倍数(为了保证版本号为奇数,必要的时候要加1)计算得出。这样,如果维护版本号是20,那么按照计划,后续安全版本将是25、31和35。版本号之间留出的数字将用于安全警报补丁的发布,这样就不需要重新编码其他计划好的版本号。
新的版本编码系统旨在采用一种能够区分更新和安全补丁的方式,而且是一种识别要简单许多的方式。

Java 9将采用新的版本字符串格式的更多相关文章
- Java将其他数据格式转换成json字符串格式
package com.wangbo.util; import java.beans.IntrospectionException; import java.beans.Introspector; i ...
- Java将其他数据类型转换成JSON字符串格式
Student.java package com.demo.servlet; import java.util.List; import java.util.Map; public class Stu ...
- JAVA JDK1.5-1.9新特性
1.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)3.静态导入4.可变参数5.内省 1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,更强大的JAX-WS5.轻量 ...
- [转] Scala 2.10.0 新特性之字符串插值
[From] https://unmi.cc/scala-2-10-0-feature-string-interpolation/ Scala 2.10.0 新特性之字符串插值 2013-01-20 ...
- 【Java基础】Java11 新特性
Java11 新特性 新增字符串处理方法 新增方法: 判断字符串是否为空白 " ".isBlank(); // true 去除首尾空白 " Javastack " ...
- Java 8 正式发布,新特性全搜罗
经过2年半的努力.屡次的延期和9个里程碑版本,甲骨文的Java开发团队终于发布了Java 8正式版本. Java 8版本最大的改进就是Lambda表达式,其目的是使Java更易于为多核处理器编写代码: ...
- (转载)Java 1.7的新特性
网上找了一下,整理了贴出来. 下面是Java 1.7 里新出现的功能的一些用法例子: 对集合的支持 摒弃了 Java 集合接口的实现类,如: ArrayList . HashSet 和 HashMap ...
- 使用示例带你提前了解 Java 9 中的新特性
使用示例带你提前了解 Java 9 中的新特性 转载来源:https://juejin.im/post/58c5e402128fe100603cc194 英文出处:https://www.journa ...
- Java基础知识回顾(一):字符串小结
Java的基础知识回顾之字符串 一.引言 很多人喜欢在前面加入赘述,事实上去技术网站找相关的内容的一般都应当已经对相应知识有一定了解,因此我不再过多赘述字符串到底是什么东西,在官网中已经写得很明确了, ...
随机推荐
- 企业IT管理员IE11升级指南【6】—— Internet Explorer 11面向IT专业人员的常见问题
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- Module-Zero之启动模板
返回<Module Zero学习目录> 概览介绍 社交登录 基于Token的认证 单元测试 概览介绍 使用ABP和Module-Zero开始一个新的项目最简单的方式通过ABP官网的模板页面 ...
- UWP自动填充控件AutoSuggestBox小优化
UWP提供的AutoSuggestBox本身非常好用,在项目中经常用到,但是当我们使用时发现一下不人性化的设置,例子1如下: <Page x:Class="SelfInkCanvas. ...
- Android笔记——permission权限大全
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ...
- Android开发-之第一个程序:HelloWorld!
小编觉得不管学习什么编程的时候,第一个程序都是要求打印输出一个"HelloWorld!",那就从最简单的HelloWorld开始吧!哈哈~~~~ 一.创建一个Android工程 1 ...
- XE1:使用SSMS创建Extended Events
Extended Events 用于取代SQL trace,是SQL Server 追踪系统运行的神器,其创建过程十分简单. 一,创建Extended Events的Session step1,打开N ...
- DB的IO统计
对数据的IO操作,都是写入到数据库文件中,sys.dm_io_virtual_file_stats Returns I/O statistics for data and log files. sys ...
- Minor【 PHP框架】4.服务容器与服务提供者
框架Github地址:github.com/Orlion/Minor (如果觉得还不错给个star哦(^-^)V) 框架作者: Orlion 知乎:https://www.zhihu.com/peop ...
- 这算是ASP.NET MVC的一个大BUG吗?
这是昨天一个同事遇到的问题,我觉得这是一个蛮大的问题,而且不像是ASP.NET MVC的设计者有意为之,换言之,这可能是ASP.NET MVC的一个Bug(不过也有可能是保持原始请求数据而作的妥协). ...
- SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率
应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助.大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会 ...