为什么将Java版本1.X称为Java X?


58

我看到Java 1.2也称为Java2。“ Java 1.x”和“ Java x”(例如“ Java 1.6”和“ Java 6”)是否引用相同版本的Java?

如果是,为什么需要这种双重性?


7
营销原因?

14
仍然比Mozilla Firefox更好。在不到两年的时间内推出了10多个主要版本。
2012年

2
是的,营销原因。这个SO问题是关于同一主题的。
约阿希姆·绍尔

2
可以用不同的措辞来表达:为什么Sun(现在是Oracle)以主要版本(1.5、1.6、1.7和即将发布1.8)发布主要更新(Java 5、6、7和很快8)?
Joachim Sauer

3
@AndrzejBobak谷歌浏览器更糟,它在2年内接近20个版本
Izkata 2012年

Answers:


64

Sun Microsystems当时有一个坏习惯,那就是对其产品进行多次命名更改,并首先使用易混淆的名称开头。

名称是什么,或者“ Java”是什么意思?

最初,术语“ Java”被用来不加区别地描述:

  • 语言
  • 平台
  • 还有一些碰巧将JVM和Java Class Lib也称为Java。

内部和外部号码

关于版本号,正如其他人指出的那样,部分是由于市场营销,部分是因为他们只是觉得Java取得了如此进展,因此主要版本升级更适合(适用于Java 1.2 / Java 2,以及Java 1.5 / Java)。 5)。

因此,我们所谓的Java 2实际上是Java 1.2至1.4。Java 3和Java 4从来都不存在,我们直接跳到Java 5,因为它们试图在此处进行解释(来自有关命名和版本控制的页面)。

我也可能不对他们在跟踪和开发系统中使用的内部编号感到困惑。我倾向于认为它是1.x =语言版本,X =语言和产品版本。这是有道理的,因为普通用户无需担心较小的增量和更新,因为他们鼓励自动更新,因此这些更新不应对语言或字节码造成任何变化。

另请注意,当您查看次要版本和更新编号时,它会变得很奇怪。例如,我们有一个Java 1.3.1,然后是Java 1.4.1和1.4.2。

更新

但是,此后再也没有1.xy了,它始终是1.x.0_UPDATE:

还要注意,您还将看到使用以下两种命名约定引用的更新:

  • 例如1.5.0_22或1.7.0_04(请注意更新版本的填充0,以2位数字对齐),
  • 而且还有1.5.0u22或1.7.0u4(请注意,填充0已经消失了,是的!)。

为了进一步避免混乱并保持Sun Microsystems的传统,Oracle现在发布了这样的公告。

产品名称

还请注意,他们不仅养成了更改编号的习惯,而且还养成了产品名称。因此,Java 2具有J2SE(Java 2标准版),J2EE(Java 2企业版)和J2ME(Java 2移动版)。自从Java 5引入以来,这些约定和首字母缩略语已被放弃(尽管有些约定和首字母缩写具有难以置信的长,主要是由于愚蠢的招聘机构不知道他们在说什么),而支持Java SE,Java EE和Java ME ,有时是JSE,JEE(相当常见)和JME的缩写,但不应正式使用。

您可以阅读此页面以获取有关Sun Microsystems和Java(自Java 1.3.1以来)使用当前版本控制系统的更多信息。

(要获得加分,请尝试立即查找NetBeans的历史记录,以查看它是否也被重命名了几次)。

他们不认识自己

他们还在努力决定是否应该向后更新现有参考。例如,关于旧版本的页面使用旧版本的旧版本编号系统,但是较新的产品名称(Java SE 1.1、1.2、1.3和1.4并未使用此命名约定发布)。

也许他们只是和我们一起玩耍。谁知道?

JVMS和JLS呢?

当然,他们也在那里进行命名和编号很有趣。

Java语言规范习惯用书“版”版本SYSTE发布,,以下的产品编号。所以:

  • Java 1有其“ Java语言规范”,
  • Java 2具有“ Java语言规范,第二版”。

到现在为止还挺好。

除了后来仅在Java 5中引入语言更改时才重新编辑“ Java语言规范”(这很有意义,您不会仅仅为了娱乐而出版新书版)。由于这是他们第三次进行编辑,因此将其称为(tada!)“ Java语言规范,第三版”。

但是显然,人们然后开始怀疑为什么1.3和1.4没有语言规范,或者为什么Java 5与语言规范的第三版匹配。

因此,Java 7现在只是将其称为“ Java SE 7版Java语言规范”,尽管我们经常将其简称为JLS7,以避开RSI。


他们不是唯一的人...

为了获得更多乐趣,请查看Microsoft Windows RT的命名失败,或者Apple对iPhone,iPad甚至iPod的命名和编号疯狂。


“注意结尾的0”什么结尾的0?
塞缪尔·埃德温·沃德

@SamuelEdwinWard:对不起,那里的语言很混乱。我的意思是版本号和更新号之间的_后面的前缀0。
haylem 2012年

我真的不认为那是Porte-Manteau或Portmanteau的意思。
Grady Player

@GradyPlayer:实际上,您说的很对。感谢您指出了这一点。(编辑:更新了标头,这的确对我来说很愚蠢)。
haylem 2012年

5

简短的答案:市场营销。

一个比较长的答案:简称(例如Java 6)是所谓的“产品版本”,是向用户和新闻稿等推销Java的方式。

较长的形式(例如Java 1.6.0)是“开发人员版本”。它在内部使用,并且Java开发人员也会遇到(例如,java.versionsystem属性使用长格式)。

有关更多信息,请参见以下页面:


2

因为标题为“ Learn Shiny New Java 3”的书将比标题为“ Java 1.3的新功能”的书早售罄。

是的,这主要是营销原因。另一方面,我在这里看不到严重犯罪。毕竟,在某些产品(例如Mozilla或Chrome)中,主要内部版本号会不断增加,而其他产品则坚持增加次要内部版本号,尽管有时候,每个新版本都会带来很大的变化。

某些人(例如Apple)不想让我们这些用户使用“ Mac OS 10.6”之类的沉闷名称。

Sun过去通常使用N别名,而不是引入“ Java Green Diplodocus”发行版。


4
旁注:从来没有Java 3,而是Java 2 SE 1.3(或J2SE 1.3)。只有使用Java 1.5 / 5.0 / 5,他们才能摆脱营销中的“ 1.x”数字。是的,即使Java 1.2(以及1.3和1.4!)也被称为“ Java 2”……行销,是的!
约阿希姆·绍尔

1

TheServerSide解释了从“ Java 1.x”到“ Java x”的更改,如下所示

太阳已经切断了“ 1”。将J2SE 1.5.0更改为J2SE 5.0。更改的原因?Sun声称“这是自从Java平台和编程语言在将近十年前发布以来最重要的升级”,并且此版本值得。

显然有人在讨论将其重命名为“ J5SE”,但有人认为J2EE品牌意味着太多改变。

版本号不是很有趣吗?

阅读新闻稿:Sun推出了5年以来最重要,最先进的Java平台版本

注意上面引用中的链接被Oracle杀死。据我所知,它可以在prnewswire上找到


Java技术的创建者和领先者Sun Microsystems,Inc.(Nasdaq:SUNW)今天推出了Java 2 Platform
Standard Edition(J2SE™)5.0,这是自Java
平台和编程语言以来最重要的升级。它的最初发行将近十年
前。这个经过更新的Java平台被称为Project Tiger,它提供了极大
的开发简便性,新的应用程序监视和管理功能,
专注于为PC桌面提供丰富的客户端支持以及创纪录的
性能...


为了完整性,请注意1.X版本样式尚未完全删除

开发人员使用的“版本1.5.0”

J2SE还将版本号1.5.0(或1.5)保留在仅对开发人员可见的某些地方,或者在程序解析该版本号的地方。如前所述,1.5.0指的是完全相同的平台和编号为5.0的产品。

还要注意,正如注释中所指出的,以上使用的术语“ J2SE”后来已更改为“ Java SE”。


4
幸运的是,他们放弃了“ J2SE”(以及后来的“ J2EE”)名称,取而代之的是“ Java SE”和“ Java EE”。“ J2SE 5.0”只是愚蠢的。
约阿希姆·绍尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.