阿里巴巴入选的JCP最高执行委员会,何方神圣?


不用重来才叫快,能够积累才叫多。
本文已被https://yourbatman.cn收录;注册即享1G超小容量的程序员专用网盘https://wangpan.yourbatman.cn;公号后台回复“专栏列表”获取全部小而美的原创技术专栏

✍前言

你好,我是A哥(YourBatman)

时间拨回到2018年5月,阿里巴巴获邀加入JCP最高执行委员会,以替代恩智浦被选举为该委员会委员,成为第一家加入JCP的中国企业。一时间铺天盖地的新闻报道,轰动IT圈。

JCP的执行委员任期2年,时至现在的2021年,午夜梦回中忆起此事,再去JCP官网查阅一下,还好牛皮可以继续吹,(2020年投票选举)连任成功!

很明显这篇文章绝非吹捧阿里,旨在向你介绍作为一名Java程序员必知必会的JSR规范、JCP组织

程序员是信息时代的技术人才,常听到的一句话是“我现在有一个想法可以改变世界、可以颠覆行业、可以超越BAT,但就差一个程序员了”,可见程序员的重要性。中国软件行业发展至今(2021年)已有700万的程序员,虽然人数在全球遥遥领先,但声音一直非常小,影响力也微乎其微。

阿里巴巴作为国内Javaer的“圣地”,almost代表着最高水平。作为一枚Java开发者,听过无数J字缩略语:JDK、JRE、JVM、JSE、JCP、JPA、Jakarta…本文将以此为背景,为你介绍与每个Java程序员都息息相关的JCP(含JSR规范),然后就会感受到加入JCP这件事多么牛X了。

所属专栏

相关下载

版本约定

  • JSR、JCP

✍正文


若有人问你Java平台分为哪三个版本,你应该能答出来:

  1. Java标准版(Java SE)
  2. Java企业版(Java EE)
  3. Java Micro Edition(Java ME)

很好,60分及格。若夺命连环问继续追问:听过JSR、JCP吗?如果说上道题还在嘿嘿的说是送分题,那这道题估摸可能大概就成为你的送命题了。

什么是JSR?

Java Specification Requests:Java规范请求/提案

JSR是指的向JCP提出新增一个标准化技术规范的正式请求。每个JSR都是正式的、开放的标准文档,由个人或组织提交给JCP组织进行审议,根据审议结果决定JSR是否最终发布。

课代表帮你总结一下JSR定义的关键点:

  • 任何人(个人/组织)都可以向JCP提交JSR,当然前提是你要注册成为JCP的会员(个人会员免费,现在由Oracle管理维护)
  • 每个JSR都是正式的文档,必须符合JCP的规定的格式(这个门槛不低)
  • JSR是开放的,任何人都应该可以很方便获取到它
  • JSR的内容是对Java技术平台提出的修改、补充和改进,包括Java技术栈增加新功能、修改bug、提升性能等

每个JSR都只是一个抽象的规范(还只是文档,在纸面上的规范),通过设计API落地成为接口代码规范,最后通过参考实现来提供具体的功能落地,进而供以使用。

JCP规定每个JSR规范都必须有一个官方参考实现,言外之意:可以有多个其它实现。

如图,API代码规范可认为是JSR规范的代码表现形式,被纳入Java体系内。值得注意的是:JSR并非Java EE的专属,三个版本里都有,个数如下:

平台 JSR个数
Java SE 69
Java EE 54
Java ME 85

说明:某些JSR直接与一个或多个Java平台相关,还有许多JSR不是平台的一部分,而是对平台的扩充。此表格只列出了与特定版本相关的JSR(表格数据截止到2021年7月)

虽然Java每个平台都有JSR,但我们常常只把JSR和Java EE一起提及。Java EE中的每个API实际上都是由审核通过了的某个JSR规范所定义的。换句话讲:Java EE由各种组件构成,这些组件遵从JSR规范所规定的内容、功能。

一个JSR从提出后,生命周期交由JCP组织管理,有可能被拒绝不通过,也有可能最终 Final RELEASE。一旦某个JSR通过了JCP的审核, 它就变成了Java技术栈的一部分,可以安全地用于生产环境。但这个门槛非常非常非常高,时间周期也会很长。

常见JSR及参考实现举例

在日常开发中,JSR出现的频率还是蛮高的。即使你不用EJB开发,而是使用Spring技术栈、又或者是Dubbo都经常能看到JSR的身影。JSR种类繁多,仅已经毕业(Final Release)的就有260+个:

我们不可能逐个去了解每个,下面课代表就帮搜集了些常见(现在大都在Spirng技术体系下开发,所以常用二字是以此为背景解释)、常用、仍旧流行的JSR规范以及对应的主流实现(主流实现并非都是官方参考实现哦):

JSR 代表API 主流实现 简介
JSR 315、JSR 369 Servlet、Filter Tomcat、Jetty 处理Http请求
JSR 303、JSR 380 Validator、@Valid Hibernate Validator Bean Validation数据校验
JSR 330 @Inject、@Singleton Spring、Guice DI依赖注入
JSR 318、JSR 345 @EJB、EntityContext Glassfish 企业级Bean
JSR 317、JSR 907 @Entity、@ManyToMany、@Column Hibernate JPA数据持久化
JSR 250 @PostConstruct、@Resource Spring Common通用注解
JSR 914、JSR 343 @JMSProducer、MessageConsumer ActiveMQ、Artemis JMS MQ消息队列
JSR 907 TransactionManager atomikos JTA分布式事务
JSR 919 @MailSessionDefinition JavaMail Java邮件
JSR 3 MBeanServer、@ManagedBean Java SE JMX扩展
JSR 221 Connection、Statement MySql、Oracle JDBC规范

这都是Java EE相关的JSR规范(一般Java EE接触多),其实Java SE也有熟悉的规范,比如JSR 310日期时间(也叫Java 8日期时间)就是典型代表。

每个JSR都有一个.pdf文件做说明,这里都帮你收藏好了:https://github.com/yourbatman/JSR-JCP

什么是JCP?

Java Community Process:Java非正式过程(形式化和标准化Java技术的过程),官网地址:https://jcp.org

一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。JCP由Sun公司于1995年创造,演进到如今有数百名来自世界各地Java代表成员一同监督Java发展的正式程序。

如果说JSR代表着一种具体的规范技术,那么JCP就是管理这些JSR发展、更新的组织。

JCP是为Java技术开发标准技术规范的机制。任何人都可以注册该站点,参与对Java规范请求(JSR)的审查和提供反馈,任何人都可以注册成为JCP成员,然后加入JSR专家组,甚至提交自己的JSR建议。

任何人?呵,开玩笑,不信你去注册试试~

JCP它主要包含这几块内容:

  • Java技术规范:JSR规范
  • 参考实现(RI):JCP要求每个JSR都需要有一个参考实现
  • 技术兼容包(TCK):兼容测试工具包,一套测试、工具和文档,用于测试实现是否符合规范
  • JCP Members:由个人or组织构成JCP的成员
  • Executive Committee (EC) :(最高)执行委员会。EC代表了主要的利益相关者和Java社区的一个代表性部门。EC负责批准通过JCP关键点的规范,并协调规范及其相关测试套件之间的差异

JCP Member还可细分为准会员、合作伙伴会员、正式会员,每种身份都有不同权利,这个对“不打算”参与提交JSR的我们来讲没啥用,so…对于JCP这个组织,我们或许对这些更感兴趣些:

  1. 参与一个JSR规范生命周期的主要角色有哪些?
  2. 执行委员会(EC)这个组织有哪些成员?
  3. 一个JSR从提出到最终RELEASE需要经历哪些过程,要多久?

参与JSR生命周期的角色

开发一个JSR标准技术的成本是非常昂贵的,JCP对此有严格的流程,期间会涉及到三个角色:

  1. 贡献者
  2. 专家组
  3. 规范领导者

当然还少不了最高决策者:执行委员会EC。各个角色的分工、关系如下图:

以Bean Validation 2.0(JSR 380)为例,团队成员如下:

Gunnar Morling是谁?答:Hibernate Validator的作者,所以说JSR 380规范是由Hibernate主导的毫不为过。

1、贡献者

类似于Github上的Contributor,一般都是个人(JCP的准会员)。在1个或多个JSR上帮忙过,比如帮助测试、帮助修正、开发了JSR特征等。这是加入JCP“往上爬”的第一步,如果表现突出的话就会被放进专家组候选人,从而可能进入专家组。

类似于小组的一线员工

2、专家组

专家组对该JSR起到核心作用,均由对本JSR基础十分熟悉、功底十分深厚、有一定权威的人担任。他们算是JSR规范实施的“基层员工”,直接参与到JSR开发的具体工作。

类似于小组的技术优秀员工

3、规范领导者

一般是JSR的申请者/作者

领导者的作用主要职责是指导专家组和贡献者实施,统揽本JSR全局,为它负责。主要工作有:

  • 提供JSR参考实现
  • 完成TCK测试,确保JSR合法、合规、兼容性强
  • 时刻关注JSR的进程,并且将状态同步到jcp.org的页面上。并且提供草稿review、公开review、最终文档等

类似于小组组长

执行委员会EC

执行委员会(EC),也叫最高执行委员会,在JCP中扮着决定性作用,它就像最高权力机关,掌握着每个JSR的生杀大权。该委员会的成员必须分析、评论、投票并决定批准提交给JCP的所有JSR。除此之外还得指导整个平台的发展,以及JCP本身,使其能够一直符合期望。真乃权利越大,责任越大。

类似于技术总监、CTO。总体来讲EC有这4项任务:

  1. 审核并投票批准或拒绝 新的 JSR提案
  2. 审查和投票批准或拒绝public公开审查的JSR草案
  3. 决定何时撤回JSR,比如过时的技术
  4. 合作修订JCP计划

几十年以来JCP最高执行委员会的18个席位都被美国、欧洲、日本等国家企业牢牢占据,直至2018年阿里巴巴的加入。

阿里巴巴入选JCP执行委员会EC

委员会的成员通过年度选举产生。

时间拨回到2018年5月18日,阿里巴巴成功替代恩智浦被选举为JCP最高委员会委员,任期2年(2020年的选举继续连任成功)。成为第一家加入JCP的中国企业,可谓是国人的骄傲。这是最新的EC成员表(共18个席位):

有个比较有趣的点:Alibaba以字母“A”打头可谓占尽优势,“排名第一”!

这份EC成员表单有这三大看点可以关注:

  1. 阿里巴巴的代表Kingsum Chow何许人也?周经森2016年加入阿里巴巴
  2. Oracle之于JCP的影响有多大?JCP是一个国际组织并不属于任何一家公司,但Oracle特殊,它是永久任期。自从2009年Oracle收购了Sun公司后,它在JCP里的话语权几乎是垄断式的~
  3. 成员中为何没有大名鼎鼎的Apache基金会?曾经,JCP也拥有过Apache,只是后来Apache选择了退出,究其原因Oracle“功不可没”

一个JSR经历的阶段

JCP管理着所有的JSR规范,每个JSR都需要按照JCP组织制定的流程进行。我以已经发布的、大家相对比较熟悉的JSR 380: Bean Validation 2.0为例,看看它的经历过程:

Final Approval Ballot最终投票结果:

从步骤上看一共8大步,从时间轴上看共历时13个月,看似时间很长。但其实像Bean Validation这种路途其实是非常非常非常顺利的,属于全部一次性过。存在那种投票了N次才最终Final甚至一直没有Final的,比如JSR 377: Desktop|Embedded Application API的路就比较坎坷:

看上面的投票截图也许你会疑问,投票成员中为嘛没有Alibaba呢?看看投票日期:2017-07,而阿里巴巴于2018-05才首次成为JCP的EC成员,咱们找一个投票日期近一点看看就有阿里的身影,这是来自东方的声音 :

一个JSR从0到1需要经历这些个步骤:

  • 起草写一个JSR
  • 将此JSR提交到JCP
  • 公开早期的JSR接收review
  • 形成专家组EG(希望很大了)
  • 早期草案审查
  • 公开review
  • 拟议的最终草案
  • 最后的选票(可能经过多轮)

时间轴安排大致如下:

总之,一个JSR想要最终毕业,少则1-2年多则5年+,甚至流产。

JCP的影响力在减弱

随着2009年Oracle收购Sun公司,使得它在JCP里处于一言堂的地位 ,别人都没法玩了。2010年是个关键节点,Apache当年直接斥责Oracle滥用Java,于是“一生气”退出了JCP,至今未归。

2017年8月份,Oracle对外宣称要让Java EE更加敏捷、灵活(都是套话,就是觉得自己玩不转了想当甩手掌柜),计划交给开源社区。随后的9月份便“卖给”了Eclipse基金会,但Java商标、Java SE部分仍旧自己牢牢掌握着。所以Java EE从此不得不改名为Jakarta EE且正式脱离JCP(参考文章:从Java EE到Jakarta EE,企业版Java的发展历程)。

至此,JCP本为三大平台Java ME、Java SE、Java EE贡献JSR规范,现在仅剩Java SE(Java ME可认为基本已死)。而Java SE独属于Oracle,所以JCP的影响力逐渐步入衰落。作为开发者的我们也有切身感受:随着EJB的败下阵来,随着Spring家族的异军突起,打得Java EE都快找不着北了。

瘦死骆驼比马大,在若干年内了解JCP了解JSR规范依旧非常非常非常重要,是刚需,因为考试要考、面试会问、工作要用

✍总结

JCP组织辉煌时通过管理的JSR规范驱动着Java的三驾马车(Java SE、EE、ME)向前发展,严格的流程规范是确保Java技术高质量、高兼容性的保证。随着Apache基金会决裂的退出,随着Spring家族的崛起,随着Java EE的光芒越来越暗淡,正所谓眼看他起高楼,眼看他宴宾客,眼看他楼塌了,JCP组织影响力也在逐日减弱。

规范永远属于“一流技术”,作为一个Java程序员建议这是每个同学的必修课,因为它决定着自己的上限。而且这不仅仅是谈资,而是实战中切实会用到知识点。

下篇文章将为你回答“Java EE是什么?”,了解它和JSR有哪些关系,为何一般说到JSR都是和Java EE相关。

推荐阅读

System.out.println("写得可还行?收藏再看吧,点个赞吧,分享下吧");
echo("关注【BAT的乌托邦】 https://yourbatman.cn");
console.log("私聊YourBatman:fsx1056342982");

我是YourBatman:一个早在2013年就已毕业的大龄程序员。网瘾失足、清考、延期毕业、房产中介、送外卖、销售…是我不可抹灭的标签。现在是一个纯粹技术工。

  • 2013.08-2014.07宁夏银川中介公司卖二手房1年,毕业后第1份工作
  • 2014.07-2015.05荆州/武汉/北京,从事炸鸡排、卖保险、直销、送外卖工作,这是第2,3,4,5份工作
  • 2015.08开始从事Java开发,做过兼职,闯过外包,呆过大厂!现为我司基础架构团队负责人
  • Java架构师、Spring开源贡献者,CSDN 2019博客之星Top 10,博客专家,领域建模专家。热衷写代码,有代码洁癖;重视基础和基建,相信效率为王
  • 现在写纯粹技术专栏(公号后台回复专栏列表获取全部),不哗众取宠。如果你也有共鸣,可加我好友(fsx1056342982)一起进步哈(备注:java)

作者: YourBatman
声明: 本站文章均采用 CC BY 4.0 许可协议。你懂的!
  目录