jay2home

导航

 

众所周知,编程语言是的根是它的标准。标准和国际技术组织密切相关,比如

  • c++标准,由国际标准化组织(ISO) 的 C++ 标准委员会ISO/IEC JTC1/SC22/WG21)维护更新,他们发布的标准称为ISO C++ ,比如c++17,c++24.
  • golang 的维护组织称为 Go 核心团队 。
  • java的标准由一个开放国际技术组织Java Community Process (JCP)专门维护更新。
    这些组织严格来说都是独立的技术社区,不隶属任何公司。但每个语言的组织都很大公司有颇深渊源。

来看一看java的历史:

早在1991年,当时编程界还是C语言的天下,新秀c++也崭露头角。当时 Sun Microsystems 的工程师 James Gosling(詹姆斯·高斯林)等人开始开发一种出了java的原型。

1995 年 5 月 23 日:Sun 公司在 SunWorld 大会上正式发布了 Java 1.0。这是 Java 的第一个公开版本,标志着 Java 语言的正式诞生。此时的Java,JDK等工具,标准,实现完全属于Sun。持续到java1.3。

直到三年后的1998年,sun建立了JCP, Java 也从一个由单一公司主导的技术,逐步演进为一个由全球开发者和企业共同监督和发展的技术平台,我们熟知的javaSE便是其中的标准之一。但此时的java仍然属于sun的商业产品。

直到2006,此时java已经更新到1.6,sun公司在JavaOne大会上宣布将 Java 开源。次年2007,Sun 公司正式发布 OpenJDK,启动OpenJDK项目。这是 Java SE 的开源实现,使用GPL v2 许可证。第一个开源的java:Open JDK6,基于Sun公司的商业项目JDK6。

后来2010,Sun被Oracle收购。java的一切被Oracle接管,包括正在开发的JDK7。OpenJDK项目,JCP也都由Oracle参与主导,官方的JDK全名就是OracleJDK,开源版OpenJDK由于背靠Oracle,也算“官方”,这是java标准的官方开源实现。

那既然有官方JDK,也就有“野生”JDK,基于OpenJDK,许多科技公司会自己拿过来,强化一下,或者精简一下,更重要的是,自己造的不花钱,然后发布自己的各种JDK。比如我们在IDEA下载JDK时能看到各种供应商:
image

再往后的故事就很简单了:更新标准,发布JDK,发布OpenJDK,大家都有美好的未来。

但是,大家虽然都是JDK,但差距是客观存在的。比如java8的标准中有支持FX一条,而我用的CorretoJDK就不支持,调用FX类发现少了运行库。

这很正常,用开源就别怕折腾,别怕风险。想要稳定完整有售后,买OracleJDK就得了。

这也是本文的主题。开源的文化或者精神所在大致如此,商业公司在其中扮演的角色,在我看来是积极的。依靠热情,用爱发电的项目总归难以长久,而公司们依靠科技+服务的商业模式赚到钱,带动开源社区发展,这是长久可持续的。

最后再说说Orcale不干人事的地方:(Oracle)JDK的许可证即收费策略。科技产品的许可证都有一个通用大原则:你自己免费玩随便搞,毕竟他们不给大家也都能搞到,但你挣钱了,必须分我一份。

其中JDK8是一个分界线:JDK8u202及以前版本永久免费。之后从211开始则商业用途收费。在官网下JDK时也能看到从提示。

对于发布的普通更新版:比如JDK9,10,13,14,永久免费。但是,Oracle只负责维护6个月,因为6个月后要发布下一版咯。这些版本属于只生不养,我不要钱,出了问题也别找我。

每更新几次,Oracle会发布一个长期支持版LTS,在一段时间内(大约十几年,看心情和销量)Oracle会更新维护。比如:JDK8支到24年12月。JDK11支持到2032年1月。17,21也都是长期支持。LTS有自己的收费策略:一般自发布起3年免费使用,而后就要商业收费。

注意,不支持是说Oracle官方不再更新维护,但不意味着不能用。能用要考虑:许可证,要不要给Oracle交钱,已经:物理上能不能用,会不会出问题。

比如伟大的JDK8u202,即使不再支持,其也仍是未来10java开发界的主力。

对于个人用户来说,随便挑,java8也够用,看上那个新特性直接去官网下。

对于公司用哪个,取决于业务,或者说,那是老板考虑的事。

以上。

posted on 2025-04-16 20:41  Jay404  阅读(77)  评论(0)    收藏  举报