草庐IT

原来这就是所谓的 JSR!

god23bin 2023-09-21 原文

相信大家在学习 Java 的过程中,或多或少都见过 JSR 这个词。本篇文章就科普下什么是 JSR。

什么是 JSR ?

JSR(Java Specification Requests),是指 Java 规范请求(或者活规范提案)。这个请求(提案)是提给 JCP 的(Java Community Process)。那什么是 JCP 呢?

JCP 官网在这:https://jcp.org/en/home/index

JCP 是一家专门为 Java 技术开发标准技术规范的组织机构。

The JCP is the mechanism for developing standard technical specifications for Java technology.

任何人都可以在官网上进行注册并参与到审查和提供 Java 规范请求(JSR)的反馈中来,也都可以注册成为 JCP 成员,然后参与 JSR 的专家组,甚至提交自己的 JSR 提案。

Anyone can register for the site and participate in reviewing and providing feedback for the Java Specification Requests (JSRs), and anyone can sign up to become a JCP Member and then participate on the Expert Group of a JSR or even submit their own JSR Proposals.

科普完毕,本篇文章到此结束,谢谢大家!

开玩笑,怎么可能呢。

什么是 JCP ?

Java 社区过程(JCP)是国际 Java 社区标准化和批准 Java 技术规范的一个过程,简而言之,是一个开放的国际组织。

JCP 采用包容性、基于共识的方法确保高质量规范的开发。JCP 批准的规范必须附带参考实现(以证明规范可以实现)和技术兼容性套件(一套用于测试实现是否符合规范的测试、工具和文档,称为技术兼容性套件)。

经验表明,生产技术规范的最佳方式是使用开放和包容性的过程来共同开发规范和实现(specification and implementation),由一群具有各种观点的行业专家提供信息,与此同时,社区和公众也有机会参与审查和评论,并且有强有力的技术领导者来确保技术目标、其他相关规范以及用户的期望能够相互集成。

有一个称为执行委员会Executive Committee (EC))的组织,代表着 Java 社区的各个主要利益相关者和其他成员,专门负责批准 Java 规范通过 JCP 的各个阶段,并协调 Java 规范和其相关测试套件之间的差异。

提交一个 JSR 的过程,有如下的阶段:

下面说说有哪些 JSR。

习惯说成 JSR 规范,或者 JSR 标准。

可以看看这里 JCP - 百度百科

有哪些 JSR ?

我们可以从官网上看到所有的 JSR 规范:https://jcp.org/en/jsr/all

以 JSR 303 规范为例,Bean Validation 规范

点击 Bean Validation,就可以进入详情页面,可以看到该规范的详细信息,包括该规范走 JCP 流程的整个阶段,阶段包含的各种文件,团队人员等等。

Java SE 下的规范:

具体可见:https://www.jcp.org/en/jsr/platform?listBy=2&listByType=platform

Java EE 下的规范:

具体可见:https://www.jcp.org/en/jsr/platform?listBy=3&listByType=platform

最后

所以,现在知道 JSR 是什么了吧。就是 Java 规范提案,当你自己提交了一个规范,那么成功经过 JCP 的 review 和 comment 以及一系列流程后,你的规范就会成为行业上的标准,软件厂商就会来按照你提供的这种标准进行具体的实现,你也将名留青史!

最后的最后

希望各位屏幕前的靓仔靓女们给个三连!你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

咱们下期再见!

有关原来这就是所谓的 JSR!的更多相关文章

  1. 震惊!原来查找论文这么简单?再也不用担心组会不知道汇报啥了!计算机硕士新生人手必备不可不看 - 2

    目录一种简单上手的暴力论文分析方法——以区块链为例【含项目源码】太长不看版本:最终成果:情况说明论文推荐方面论文投稿方面以下是具体的实现,有其他研究方向想自行确定的请仔细阅读,授人以鱼不如授人以渔第一章、确定对象——研究热点的中国计算机研究生第二章、思路——基于爬虫结合关键字过滤暴力获取所需论文信息第一步:从CCF推荐目录中获取网址01、背景介绍02、数据预处理03、数据写入表格第二步:从中科院分区中获取期刊对应分区第三步:从期刊/会议对应网址中爬取到子网页并进入,获取到其中的标题、年份等信息第四步:针对获取到的表格数据进行分析和整理实际爬取数据量【其实就论文的标题+对应年份】

  2. javascript - 让一个div在向上滚动时回到原来的位置 - 2

    当你向下和向上滚动时,我有一个带动画的div,问题是当我非常快速地向上和向下滚动而不让div完成它的动画时,div一点一点地离开屏幕的上部.如果我删除.animate()函数中的.stop()并快速上下滚动,div会继续这样做一段时间。我想在向上和向下滚动时保持动画,唯一的区别是快速向上和向下滚动时菜单不会离开屏幕,我已经看过像这样的彻底的堆栈溢出问题,但我没有找到任何东西可以在这里找到jsfiddle的代码:http://jsfiddle.net/QLLkL/4/$(window).scroll(function(){if($(window).scrollTop()>480&&!an

  3. javascript - 这就是暂时死区的工作原理吗? - 2

    我一直在试图弄清楚let和const的时间死区/解析是如何工作的。这似乎可以归结为(基于文档和我在之前的问题中收到的各种回复[例如this和this],尽管这与一些存在分歧的答案背道而驰)。这个总结正确吗?在范围的顶部,JS引擎在相关范围的顶部创建一个绑定(bind)(变量关键字和名称的关联,例如,letfoo;),这被认为提升变量,但如果您尝试在其声明位置之前访问变量,JS会抛出ReferenceError。一旦JS引擎向下移动到声明(与“定义”同义),例如letfoo;,引擎就会对其进行初始化(为其分配内存并使其可访问)。该声明具有self约束力。(这是对我来说没有意义的部分:绑定

  4. javascript - 从 DOM 中删除元素并将它们添加回原来的位置 - 2

    我有一个模态窗口。我想要发生的是在模态打开时从页面中删除某些元素,并在模态关闭后将它们添加回原来的位置。我不想显示:无,因为那样只会隐藏它们,我需要将它们实际从页面中删除。所以我有一些jQuery可以删除并在计时器之后将它们添加回去只是为了测试......更新:通过对代码添加这些内容,它现在可以抓取之前的元素,然后将其添加回同一元素之后。问题是,如果该元素也被删除了怎么办?然后它不会添加回来!另外,JavaScript事件处理程序不会丢失吗?我正在开发一个插件,所以它应该尽可能少地干扰网站,但是3d元素在Safari中有一个无法解决的错误。关于如何暂时删除3d元素而又不会过多干扰人们的

  5. javascript - CKEditor 5 - 如何插入一些 HTML(也就是源模式在哪里)? - 2

    我希望能够从所见即所得切换到纯HTML,例如插入IFrameYoutube视频。到目前为止,对于标准的CKEditor5构建,没有关于如何做到这一点的文档。有没有等同于SourceEditingArea的插件但适用于CKEditor5? 最佳答案 是的,可以将html插入CKEditor5:insertHTML(html:string){//See:https://ckeditor.com/docs/ckeditor5/latest/builds/guides/faq.html#where-are-the-editorinserth

  6. javascript - 检测模糊,也就是失去 Draft.js 编辑器的焦点 - 2

    是否有“正确的方法”来检测我是否失去了Draft.js编辑器的焦点?用例是,如果用户单击其他地方,我想要“退出编辑器模式”,这意味着我切换编辑器的readOnly属性。我怎样才能理想地做到这一点,这样做是个好主意吗(你看到这方面的问题了吗)? 最佳答案 您可以使用旧的onBlur捕获围绕您的草图编辑器触发的模糊事件这对您的场景来说还不够吗? 关于javascript-检测模糊,也就是失去Draft.js编辑器的焦点,我们在StackOverflow上找到一个类似的问题:

  7. JavaScript 原型(prototype)函数没有覆盖原来的函数 - 2

    当我接触原型(prototype)的概念时学习javascript。我成功地向cat类添加了新方法,但未能覆盖原始的talk方法。functioncat(name){this.name=name;this.talk=function(){alert(this.name+":I'magirl!")}}cat.prototype.talk=function(){alert(this.name+":I'madude!")}cat1=newcat("felix")cat1.talk()为什么这不提醒新文本? 最佳答案 ‘functionca

  8. javascript - Play Framework模板其实就是一个JS文件 - 2

    我想要一个Play模板,它是一个JS文件(而不是在HTML模板中包含标签)。这样做的原因是脚本可以被缓存。但是,我需要根据脚本的包含位置在脚本中创建差异,并希望通过Play的模板系统来实现。如果我使用嵌入式脚本,我已经可以这样做,但无法缓存这些脚本。我找到了anexistingquestion这也问同样的事情,但答案完全不同(不同的目标)。 最佳答案 这很简单,只需...使用.js创建View扩展名,即:views/myDynamicScript.scala.js:@(message:String)alert('@message')

  9. 5分钟熟悉“单臂路由”(超详细解读,看到就是赚到) - 2

     内容预知目录 1.单臂路由的概述 2.单臂路由实际运用实验的引入 2.1实验前须知操作的指令(新增)2.2实验具体操作: 第二步:第三步: 第四步:总结: 1.单臂路由的概述 1.1“单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通。”交换机连接主机的端口为access链路交换机连接路由器的端口为Trunk链路1.2单臂路由存在的缺陷: 缺陷1:单臂路由所有的流量都要经过主干链路,流量过大,容易形成流量瓶颈 缺陷2:单臂路由,一旦出现单点故障,对下vl

  10. pointers - 如何访问结构字段,它是结构内部的指针,结构本身就是一个指针 - 2

    在我下面的代码中,为什么*bikeSlice[0].Type返回给我的是Type字段的值而不是内存地址?为什么*bikeSlice[0]返回{Type:0xc0000641c0}虽然*bikeSlice[0].Type似乎自动取消引用类型字段?packagemainimport"fmt"typeBikestruct{Type*string}funcmain(){type1:="road"bike1:=Bike{Type:&type1,}type2:="mountain"bike2:=Bike{Type:&type2,}varbikeSlice[]*BikebikeSlice=appen

随机推荐