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

  • 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时能看到各种供应商:

再往后的故事就很简单了:更新标准,发布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也够用,看上那个新特性直接去官网下。

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

以上。

OpenJDK与OracleJDK--不挣钱的永远是二等公民的更多相关文章

  1. OpenJDK和OracleJDK的区别

    在2006年11月13日的JavaOne大会上,Sun公司(当时还没被收购)宣布计划要把Java开源,在随后的一年多时间内,它陆续地将JDK的各个部分在GPL v2(GNU General Publi ...

  2. OpenJDK和OracleJDK的JVM性能有多大差距

    首先要先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK 6.OpenJDK 7.OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JD ...

  3. CentOS 7 卸载 OpenJDK 安装 OracleJDK

    查看 JDK 安装版本 java -version java version 1.7.0_51 OpenJDK Runtime Environment ( rhel-2.4.5.5.el7-x86_6 ...

  4. Oracle JDK与OpenJDK到底有什么不同?

    ​不知道各位developer平时是否有过疑问,Oracle JDK是什么,OpenJDK又是什么? Oracle JDK便是平常我们在windows系统上做开发使用的JDK,又称作SUN JDK.O ...

  5. ZGC 最新一代垃圾回收器[NO]

    ​ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,ZGC可以说源自于 Azul System 公司开发的C4收集器[基本不用调优]它的设计目标包括: ...

  6. 学习Linux系列--安装软件环境

    本系列文章记录了个人学习过程的点点滴滴. 回到目录 10.安装Lamp套件. 最简单的方式,如下 sudo tasksel install lamp-server Apache 菜鸟教程 Ubuntu ...

  7. 为什么做java开发的公司需要那么多程序员?

    注:文章转载自知乎 透过现象看本质. Java是企业应用市场的王者,如果一家非互联网公司用Java,那么十有八九是做企业应用的. 所以,这个问题本质上是:为什么做企业应用的公司需要那么多Java程序员 ...

  8. linux下切换python2和python3(转)

    0x00 为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来,但是仍然有很多项目采用Python2开发.Lin ...

  9. Java第一周学习总结5311

    20145311 <Java程序设计>第1周学习总结 教材学习内容总结 第一章1.1java的历史:总的来说,Java经历了许许多多版本的变迁,目前已经成为一种经常使用的计算机编程语言.J ...

  10. 《深入理解Java7核心技术与最佳实践》读书笔记(1.1)---Project Coin介绍

    OpenJDK中的Coin项目(Project Coin)的目的就是为了收集对Java语言的语法进行增强的建议.在Coin项目开始之初,曾经广泛地向社区征求提议.在短短的一个月时间内就收到将近70条提 ...

随机推荐

  1. Huawei LiteOS基于Cortex-M4 GD32F4平台移植

    1.Huawei LiteOS简介 Huawei LiteOS源码获取: https://github.com/LiteOS/LiteOS, https://gitee.com/LiteOS/Lite ...

  2. stdio.h的缓冲机制解析

    1. 令人迷惑的printf() 在C语言中,由于stdio.h中的缓冲机制,printf的输出通常会受到缓冲区的影响. 这种影响可能非常微妙,并常常令人疑惑,比如我们来看下面这段代码 #includ ...

  3. Q:xml 需要转义的字符

    XML实体中不允许出现"&","<",">"等特殊字符,否则XML语法检查时将出错,如果编写的XML文件必须包含这些字符 ...

  4. linux安装hbase

    下载后解压到/opt/Servers/hbase-1.4.6 使用Hbase自带的zookeeper================================================== ...

  5. nacos(四): 创建第一个消费者Conumer(单体)

    接上一篇<nacos(三): 创建第一个生产者producer(单体)>,我们这一篇实现单体的消费者功能,准备与上一次的生产者集成在一个单体项目中. 消费者的本质其实就是向nacos注册后 ...

  6. vue+elementUI当渲染文本超出一定字数时显示省略号

    如图,当渲染的文字超出30字后显示省略号 1.设置过滤器 filters: { ellipsis(value) { if (!value) return ""; if (value ...

  7. 【BUUCTF】AreUSerialz

    [BUUCTF]AreUSerialz (反序列化) 题目来源 收录于:BUUCTF 网鼎杯 2020 青龙组 题目描述 根据PHP代码进行反序列化 <?php include("fl ...

  8. redmine 127访问成功,其他机器不能访问

    添加防火墙 入站规则

  9. Selenium KPI接口 警告弹 -alert/confirm/promp

    应用场景: 有些页面进入后自带弹窗提醒功能需要确认,这时候就需要将焦点定位到alert弹窗上. 使用格式: alert=driver.switchtoalert() alert.accept() 实现 ...

  10. winform 实现太阳,地球,月球 运作规律https://www.cnblogs.com/axing/p/18762710

    无图眼吊(动图)    缘由 最近我太太在考公学习,给我出了两道高中地理知识的题目,把我问的一头雾水,题目是这样的 第一题 第二题 看到这两道题,当时大脑飞速运转,差点整个身体都在自转了,所以产生了个 ...