当前位置: 首页 > 科技观察

阿里巴巴入选JCP最高执行委员会有多神圣?

时间:2023-03-21 16:12:47 科技观察

前言大家好,我是A哥(你们的蝙蝠侠)。BackinMay2018,AlibabawasinvitedtojointheJCPSupremeExecutiveCommitteetoreplaceNXPandwaselectedasamemberofthecommittee,becomingthefirstcompanytojoinJCPChineseenterprises.一时间铺天盖地的新闻报道在IT圈引起轰动。JCP执行委员会任期2年,现在是2021年,半夜梦里回忆起这件事,然后去JCP官网查了一下。还好牛皮可以继续夸,(2020投票)成功连任!图片一目了然本文绝非奉承阿里,而是旨在向大家介绍作为Java程序员必须知道的JSR规范和JCP组织。程序员是信息时代的技术人才。经常听到一句话,“我有一个想法,可以改变世界,可以颠覆行业,可以超越BAT,但缺的只是一个程序员”。由此可见程序员的重要性。中国软件产业发展至今(2021年),已经有700万程序员。虽然人数在世界上遥遥领先,但他们的声音一直很小,影响力也一直微乎其微。作为国内Javaer的“圣地”,阿里巴巴几乎代表了最高水平。作为一名Java开发者,听过无数的J缩写:JDK、JRE、JVM、JSE、JCP、JPA、Jakarta……本文将以此为背景,向各位Java程序员介绍。JCP(包括JSR规范),然后你就会感受到加入JCP是多么的牛逼。图片所属栏目BATutopia-JavaEE相关下载JavaEE项目源码:https://github.com/yourbatman/BATutopia-java-eeJSR-JCP项目源码:https://github.com/yourbatman/JSR-JCPJSR文件网盘下载:https://wangpan.yourbatman.cn/s/nRtq密码:jsrjcp版本协议JSR、JCP正文如果有人问你Java平台分为三个版本,你应该可以回答:Java标准版(JavaSE)Java企业版(JavaEE)Java微型版(JavaME)很好,60分及格。如果你继续问:你听说过JSR或者JCP吗?如果最后一题还说是子题,那么这道题很可能会成为你的命题。什么是JSR?Java规范请求: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并不是JavaEE独有的,它有三个版本,编号如下:平台JSR编号JavaSE69JavaEE54JavaME85注意:有些JSR与一个或一个直接相关更多的Java平台,很多JSR并不是平台的一部分,而是平台的扩展。此表仅列出与特定版本关联的JSR(表数据截至2021年7月)。虽然Java有适用于每个平台的JSR,但我们通常只是将JSR和JavaEE一起提到。JavaEE中的每个API实际上都是由批准的JSR规范定义的。也就是说:JavaEE由各种组件组成,这些组件符合JSR规范规定的内容和功能。一个JSR提出后,生命周期交给JCP组织管理,可能会被否决,也可能最终是FinalRELEASE。一旦JSR通过了JCP审查,它就成为Java技术栈的一部分,可以安全地用于生产环境。但是这个门槛非常非常高,而且时间周期会非常长。常见JSR示例及参考实现在日常开发中,JSR出现的频率是相当高的。即使你不用EJB开发,而是用Spring技术栈,或者Dubbo,你也经常能看到JSR。JSR种类繁多,已经毕业的有260+(FinalRelease):我们不可能一一了解。这是背景来解释),常用和仍然流行的JSR规范和相应的主流实现(主流实现并不都是官方参考实现):JSR代表API主流实现介绍JSR315,JSR369Servlet,FilterTomcat,JettyprocessingHttp请求JSR303、JSR380验证器、@ValidHibernate验证器Bean验证数据验证JSR330@Inject、@SingletonSpring、GuiceDI依赖注入JSR318、JSR345@EJB、EntityContextGlassfishEnterpriseBeanJSR317、JSR907@Entity、@ManyToMany、@ColumnHibernateJPA数据持久化JSR250@PostConstruct、@ResourceSpringCommon通用注解JSR914、JSR343@JMSProducer、MessageConsumerActiveMQ、ArtemisJMSMQ消息队列JSR907TransactionManageratomikosJTA分布式事务JSR919@MailSessionDefinitionJavaMailJava邮件JSR3MBeanServer、@ManagedBeanJavaSEJMX扩展JSR221Connection、StatementMySql、OracleJDBC规范它是与JavaEE相关的JSR规范(一般JavaEE有很多联系)。其实JavaSE也有大家熟悉的规范,比如JSR310datetime(也叫Java8datetime)就是典型代表。每个JSR都有一个.pdf文件解释,这里都给你收集了:https://github.com/yourbatman/JSR-JCP什么是JCP?JavaCommunityProcess:Java非正式过程(Java技术规范化和标准化的过程),官网地址:https://jcp.org是一个开放的国际组织,主要由Java开发人员和授权人员组成,其职能是开发和更新。JCP由Sun于1995年创建,现已发展成为一个由来自世界各地的数百名Java代表成员监督Java开发的正式程序。如果说JSR代表的是一种特定的规范技术,那么JCP就是管理这些JSR开发和更新的组织。JCP是一种为Java技术开发标准技术规范的机制。任何人都可以在该站点注册以参与审查并提供有关Java规范请求(JSR)的反馈,并且任何人都可以注册成为JCP成员,然后加入JSR专家组,甚至提交自己的JSR提案。任何人?呵呵,开个玩笑,不信你注册试试~JCP主要包括这几个部分::Compatibilitytestkit,一组测试、工具和文档,用于测试实现是否符合规范JCPMembers:由个人或组织组成的JCP成员ExecutiveCommittee(EC):(最高)执行委员会。EC代表主要利益相关者和Java社区的代表部门。EC负责批准通过JCP关键点的规范,并协调规范及其相关测试套件之间的差异。JCP会员还可以细分为准会员、合伙人会员和正式会员。每个身份都有不同的权利。这对“对于不打算参与提交JSR的我们来说是没用的”,所以……对于JCP组织来说,我们可能更感兴趣的是这些:一个JSR的生命周期中涉及的主要角色有哪些规格?执行委员会(EC)该组织的成员有哪些?一个JSR从提案到最终RELEASE需要经过什么流程,需要多长时间?开发JSR标准技术的成本对于参与JSR生命周期的角色来说是非常昂贵的。JCP对此有严格的流程,会涉及三个角色:ContributorExpertGroupSpecificationLeader当然还有最高决策者:ExecutiveCommitteeEC。各个角色的分工和关系如下图所示:以BeanValidation2.0(JSR380)为例,团队成员如下:GunnarMorling是谁?答:HibernateValidator的作者,所以说JSR380规范由Hibernate主导并不为过。1.Contributors类似于Github上的Contributors,一般都是个人(JCP的associatemember)。在一个或多个JSR上帮助过,比如帮助测试、帮助修改、开发JSR特性等。这是“爬上去”加入JCP的第一步。表现突出者将被纳入专家组候选人,有可能进入专家组。类似于团队的一线人员2.专家组专家组在这个JSR中扮演着核心角色,他们都是由对这个JSR的基础非常熟悉的人服务的,有非常深厚的基础,并且有一定的权限。他们被视为JSR规范实施的“基层员工”,直接参与JSR开发的具体工作。类似于一群技术优秀的员工3.规范负责人一般是JSR的申请者/作者。领导者的作用主要职责是指导专家组和贡献者的实施,总揽本JSR全局,并对其负责。主要任务是:提供JSR参考实现完成TCK测试,确保JSR合法、合规、高兼容关注JSR进展,同步状态到jcp.org页面。并提供草稿审查、公开审查、最终文件等。类似于组长执行委员会EC执行委员会(EC),又称最高执行委员会,在JCP中具有举足轻重的作用。它就像是最高权力机构,掌握着每一个JSR的生死大权。该委员会的成员必须分析、评论、投票并决定批准提交给JCP的所有JSR。最重要的是,它必须引导整个平台和JCP本身的发展,使其始终不负众望。事实是,能力越大,责任越大。类似于技术总监和CTO。一般来说,EC有这4项任务:审查并投票批准或拒绝新的JSR提案审查并投票批准或拒绝公开审查的JSR草案决定何时撤回JSR,例如过时的技术合作修改JCP计划几十年来JCP最高执行委员会的18个席位被美国、欧洲、日本等国家的企业牢牢占据,直到2018年阿里巴巴加入。阿里巴巴通过年度选举被选为JCP执行委员会EC委员会成员.TurningthetimebacktoMay18,2018,AlibabasuccessfullyreplacedNXPandwaselectedasamemberoftheJCPSupremeCommitteeforatermoftwoyears(the2020electionwillcontinuetobere-electedsuccessfully).成为第一家加入JCP的中国企业是国人的骄傲。这是最新的EC成员名单(共18个席位):有一个有趣的地方:阿里巴巴有一个优势,以字母“A”开头,“排名第一”!这份EC成员名单有这三大亮点大家可以关注:阿里巴巴代表人物周金森是谁?2016年周靖森加入阿里巴巴甲骨文对JCP的影响有多大?JCP是一个国际组织,不属于任何公司,但Oracle比较特殊,因为它有永久任期。自2009年甲骨文收购Sun以来,其在JCP的话语权几乎被垄断。为什么其成员中没有大名鼎鼎的Apache基金会?曾经,JCP也拥有Apache,但是后来Apache选择了退出。原因是Oracle对JSR所经历的阶段“贡献很大”。JCP管理所有的JSR规范,每个JSR都需要遵循JCP组织制定的流程。下面以已经发布的大家比较熟悉的JSR380:BeanValidation2.0为例,看看它的使用体验:FinalApprovalBallotFinalvotingresults:从步骤来看,一共有8大步,从时间轴上看,13个月的总时长似乎很长。但其实像BeanValidation这样的路,其实是非常非常非常顺利的,都是一次性通过的。有些人投了N次票才最终成为Final,甚至从未成为Final。比如JSR377:Desktop|EmbeddedApplicationAPI,一路坎坷:看了上面的投票截图,你可能会奇怪为什么投票成员中没有阿里巴巴?看看投票日期:2017-07,阿里巴巴在2018-05年首次成为JCP的EC成员。让我们找一个更近的投票日期来看看阿里的身影。这是来自东方的声音:一个JSR从0到1,你需要经过这些步骤:起草并写一个JSR将这个JSR提交给JCPOpenearlyJSRreceptionreviewFormexpertgroupEG(希望很大)EarlydraftreviewpublicreviewProposedfinaldraftfinalblot(可能经过多轮)时间线安排大致如下:简而言之,如果一个JSR最终想要毕业,少则1-2年,多则5年+,或者甚至流产。JCP的影响正在减弱。随着2009年甲骨文收购Sun,它在JCP中占据了主导地位,其他人无可匹敌。2010年是关键的一年。Apache直接斥责Oracle滥用Java,于是“生气”退出了JCP,至今未归。2017年8月,Oracle宣布要让JavaEE更加敏捷灵活(都是老生常谈,因为感觉玩不下去了,想当掌柜),打算交由开源源社区。次年9月,它被“卖”给了Eclipse基金会,但Java商标和JavaSE部分仍牢牢掌握在他们手中。因此,JavaEE不得不更名为JakartaEE,正式脱离JCP(参考文章:从JavaEE到JakartaEE,企业版Java的开发历程)。至此,JCP为JavaME、JavaSE、JavaEE三大平台贡献了JSR规范,现在只剩下JavaSE了(JavaME可以认为基本死了)。而JavaSE独属于Oracle,因此JCP的影响力逐渐没落。作为开发者,我们也有切身体会:随着EJB的败北,Spring家族的异军突起,JavaEE几近失传。瘦瘦的骆驼比马大。几年之内理解JCP和JSR规范还是非常非常非常重要的。综上所述,JCP组织管理着JSR规范,推动了Java三驾马车(JavaSE、EE、ME)在其辉煌时期的发展。严格的流程规范是保证Java技术高质量、高兼容性的保证。随着Apache基金会的退出,随着Spring家族的崛起,随着JavaEE的暗淡,俗话说,看他盖高楼,看他招待客人,看他楼塌,影响JCP组织也在不断壮大。一天比一天虚弱。规格永远属于“一流技术”。作为Java程序员,建议这是每个学生的必修课,因为它决定了自己的上限。而且这不是说说而已,而是真正会在实战中用到的知识点。