Java 9 将采用新的版本字符串格式 - 开源中国社区
Java 9 将采用新的版本字符串格式
oschina 2015年12月24日

Java 9 将采用新的版本字符串格式

oschina oschina 发布于2015年12月24日 收藏 27 评论 32

有免费的MySQL,为什么还要买? >>>  

在现有的版本编码格式使用了两年之后,从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 Version Strings Evolve for Java 9

转载自 InfoQ

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Java 9 将采用新的版本字符串格式
分享
评论(32)
最新评论
0
擦,还以为string类要大改那,吓得我都不敢再想用9了
0

引用来自“厉害吧24中”的评论

还以为string类要大改呢。。

引用来自“norahsea”的评论

同上

引用来自“帆船”的评论

++
+++
这下放心了,原来是这些然并卵的东西
0
谁想的标题!坑人啊

引用来自“厉害吧24中”的评论

还以为string类要大改呢。。

引用来自“norahsea”的评论

同上

引用来自“帆船”的评论

++

引用来自“一刀”的评论

++1

引用来自“彪大大”的评论

+10086

引用来自“袁弘龙”的评论

+65536
+4294967296
0

引用来自“厉害吧24中”的评论

还以为string类要大改呢。。

引用来自“norahsea”的评论

同上

引用来自“帆船”的评论

++

引用来自“一刀”的评论

++1

引用来自“彪大大”的评论

+10086
+65536
0

引用来自“厉害吧24中”的评论

还以为string类要大改呢。。

引用来自“norahsea”的评论

同上

引用来自“帆船”的评论

++
+1
0

引用来自“ios之王”的评论

这些C#十年前就有了,java,php什么真落后,瞬间被微软黑科技秒杀

引用来自“宇宙大将军”的评论

你错了,这些东西C#在Java出生之前就有了,微软的黑科技超乎你的想象。特别是在移动端和大数据方面,微软在公司成立前就已经给出完美解决方案,现在完全将其他人完全抛在自己前面!没有微软,明天的太阳就不会升起。
特别是在移动端和大数据方面,微软在公司成立前就已经给出完美解决方案 --- 没错,微软“从根上就早就赢了”,远远领先时代数十年的远见!比如webform,10年后,肯定IT界还是会用回的!
0

引用来自“ios之王”的评论

这些C#十年前就有了,java,php什么真落后,瞬间被微软黑科技秒杀

引用来自“宇宙大将军”的评论

你错了,这些东西C#在Java出生之前就有了,微软的黑科技超乎你的想象。特别是在移动端和大数据方面,微软在公司成立前就已经给出完美解决方案,现在完全将其他人完全抛在自己前面!没有微软,明天的太阳就不会升起。
所言极是!C#才是唯一可以跨平台完美开发移动端的语言,代码极其优雅,如诗如歌,.NET跨平台,开源,native,都是微软黑科技,微软外星小黑屋发明的黑科技
0

引用来自“厉害吧24中”的评论

还以为string类要大改呢。。

引用来自“norahsea”的评论

同上

引用来自“帆船”的评论

++

引用来自“一刀”的评论

++1
+10086
0

引用来自“ios之王”的评论

这些C#十年前就有了,java,php什么真落后,瞬间被微软黑科技秒杀
你错了,这些东西C#在Java出生之前就有了,微软的黑科技超乎你的想象。特别是在移动端和大数据方面,微软在公司成立前就已经给出完美解决方案,现在完全将其他人完全抛在自己前面!没有微软,明天的太阳就不会升起。
0
万恶的标题党
0

引用来自“厉害吧24中”的评论

还以为string类要大改呢。。

引用来自“norahsea”的评论

同上

引用来自“帆船”的评论

++
++1
0
这些C#十年前就有了,java,php什么真落后,瞬间被微软黑科技秒杀
0
尼玛不做实质上的优化,版本号倒是刷得欢快
0
……还以为String要大改,结果是这个。
0
标题吸引人。。
0
好复杂
0
然并卵
0
软件版本号: major.minor.patch
major: 重大改进,不完全兼容老版本
minor: 小的改进,但兼容老版本
patch: 没有添加新功能,bug修复,性能改善等

获取PHP和模块的版本:
http://php.net/phpversion
echo phpversion('json'); // 输出JSON模块版本号
echo phpversion(); // 输出PHP版本号,比如5.4.45
echo PHP_VERSION; // 输出PHP版本号,比如5.4.45
echo PHP_VERSION_ID; //输出PHP版本号,格式为50445,可以用来比较大小
比如5.4.45的主版本号是5,次版本号是4,修订版本号是45.
主版本和次版本一般都会添加新特性,而修订版本一般都是bug修复和性能改善.
放开java吧..

java 接下来 就变更了一个 很臃肿的语言...
jvm里边 可以运行各种各样的东西

于是一统江湖....
34
顶部