前言
前面看了JSR规范JavaSE规范、JavaEE规范、JSR规范整理——截止201908,接下来的文章介绍JavaSE规范、JavaEE规范、JSR规范和JCP的流程。
在本文中,将解释Java平台中最重要的部分,并简要介绍负责发展的过程。首先,将介绍不同的Java版本 – Java ME,Java SE和 Java EE – 以及与它们相关的一些重要的缩略语,如JDK,JRE,JVM,JSP,JPA等。最后,将提供一个Java Community Process(JCP)概述。
Java版本
在深入了解 Java Community Process(JCP)之前,了解平台的主要部分非常重要。Java分为三个不同版本:
- Java标准版(Java SE)
- Java企业版(Java EE)
- Java Micro Edition(Java ME)。
创建Java Micro Edition是为了支持在物联网中的嵌入式和移动设备上运行的应用程序 。到目前为止,这个版本并不像它的兄弟姐妹那样受欢迎,并且不会成为本文的重点。
Java标准版和Java企业版在全球范围内使用频繁。一起用于各种解决方案,如 Web应用程序,应用程序服务器,大数据技术等。
两个版本都由大量模块组成,不可能对整个平台进行全面的解释。因此,这里将简要介绍其最重要的部分。
Java标准版(Java SE)
Java标准版(Java SE)是运行Java应用程序的最低要求。此版本为Java Enterprise Edition提供了坚实的基础 ,因此将首先定义它的一些组件:
- Java虚拟机(JVM)
- Java类库(JCL)
- Java运行时环境(JRE)
- Java开发工具包(JDK)
Java虚拟机(JVM)
Java虚拟机(JVM)是负责支持Java应用程序的执行。编写一次, 到处运行。每个特定的主机操作系统(Windows,Linux,Mac OS等)都需要自己的JVM实现 ,否则就无法运行Java应用程序。
我们以需要从托管系统读取文件的任意应用程序为例。如果这个应用程序没有在像JVM这样的引擎上运行 ,那就像IO 操作那样抽象出任务 ,就有必要为每个目标系统编写一个不同的程序。这会使发布过程变慢,并且支持和共享此应用程序将变得更加困难。
要记住的一个重要概念是 JVM 在一切之前都是规范。作为规范允许不同的供应商创建自己的JVM实现 。 维基百科有一篇列出开源和专有JVM的最新文章,但最重要和最常用的是:Open JDK(开源), IBM J9 和 Oracle JVM(均为专有)。
JVM特定于每个操作系统和体系结构Java应用程序在特定于每个操作系统和体系结构的JVM上运行
Java类库(JCL)
Java的类库是一组标准库,提供给在任何应用程序正在运行的 JVM。这组库由允许程序处理公共任务的类组成,例如:网络通信,集合操作,文件操作,用户界面创建等。此标准库也称为 Java Standard Edition API。
从Java版本8开始,JVM上运行的应用程序可以使用 4,000多个类。这使得Java的典型安装在磁盘上消耗大量空间。
Java成员通过在Java 8上引入一个名为compact profiles的功能并在Java 9上使 整个API模块化来实现Java平台变得太大而解决了这个问题 。
Java运行时环境(JRE)
Java运行时环境(JRE)是一组提供其中的Java应用程序能够有效运行的环境的工具。每当用户想要运行Java程序时,他们必须选择供应商并安装其可用于其特定环境体系结构的一个版本(Linux x86,Linux x64,Mac OS X,Windows x64等)。安装它使他们可以访问一组文件和程序。
Java 向后兼容性一直非常小心。因此,建议安装最新版本,这可能会带来更好的性能。
在典型的JRE安装中,有两个文件值得注意 。第一个是 java 可执行文件。此文件负责引导 将运行应用程序的 JVM。第二个是 rt.jar 文件。此文件包含构成JCL的所有运行时类 。
Java开发工具包(JDK)
在 Java开发工具包 (JDK)是的扩展 JRE。除了JRE提供的文件和工具之外 , JDK 还包括编译器和工具(如JavaDoc和Java Debugger)来创建Java程序。因此,无论何时想要开发Java应用程序,都需要安装 JDK。
如今,JDK分发的大多数工具都没有被开发人员直接使用。通常,Java开发人员依赖第三方工具(如 Apache Maven 或 Gradle)来自动化编译,构建和分发流程。开发人员还依赖其IDE(集成开发环境)来构建和调试他们的项目。
Java企业版(Java EE)
Java企业版 (Java EE的)创建扩展的Java SE ,通过添加一组定义企业应用程序常用的功能规范。这一版的最新版本包含超过40个规范,可帮助开发人员创建应用程序 ,通过Web服务进行通信,面向对象的数据转换为实体关系模型,处理事务的会话等等。
将企业版定义为规范的一个巨大优势是,不同的供应商可以开发自己的应用程序服务器来支持它。这将带来更丰富的环境,公司可以选择最好的供应商来支持他们的运营。
Java企业版供应商
在撰写本文时,有 8个不同的供应商认证了他们的Java EE实现。在这些供应商中,其中两个是免费和开源的: GlassFish Server开源版 和 WildFly。
GlassFish的创建者Oracle 和WildFly的创建者Red Hat 也提供这些应用服务器的专有版本和付费版本。 Oracle GlassFish Server 是Oracle支持的版本, JBoss Enterprise Application Platform 是Red Hat支持的版本。
人们可能想知道为什么像Oracle和Red Hat这样的公司提供两种版本的应用服务器:一种是开源的,一种是免费的,另一种是付费和专有的。这些版本之间的最大区别在于付费版本通常具有更高的性能和更好的支持。供应商投入大量资金使这些版本顺利运行并尽可能快地解决可能出现的任何问题。
Java企业版功能
如前所述,Java EE 带有很多(超过40个)基于 JSR的功能。这些功能可帮助公司处理常见需求,如持久性,安全性,Web界面,状态验证等。以下列表列举了Java EE的一些最重要和最常用的功能 :
- Java Persistence API(JPA):用于访问、持久化和管理Java对象与关系数据库之间的数据的规范
- JavaServer Faces(JSF):用于为Web应用程序构建基于组件的用户界面的规范
- JavaServer Pages(JSP):一种帮助软件开发人员基于HTML创建动态生成的Web页面的技术
- 用于RESTful Web服务的Java API(JAX-RS):一种在创建RESTful Web服务时提供支持的规范
- Enterprise Java Beans(EJB):用于开发封装应用程序业务逻辑的组件的规范
- 上下文和依赖注入(CDI):一种允许开发人员在Java应用程序上应用控制反转的技术
Java社区流程(JCP)
Java社区进程(JCP)是形式化和标准化Java技术的过程。有兴趣的人士,如开发商和公司,在此过程中合作以发展平台。Java规范请求(JSR)可以增强任何Java技术或引入新技术 。
作为示例,让我们考虑在Java EE上引入用于RESTful Web服务(JAX-RS)规范的Java API 。要在Java EE 5中发布此规范,Sun Microsystems(创建Java的公司) 向 JCP 程序发布了 JSR, 编号为311。此请求定义了一些细节,例如:
- 建议规范的描述
- 目标平台
- 为什么需要新的规范
- 和规范所依赖的技术
在提交此规范请求后,执行委员会(EC)的成员对其进行了分析,以确定该请求是否值得关注。自EC获得批准以来,Sun Microsystems的前雇员Mark Hadley和Paul Sandoz被指定为规范潜在客户, 并在专家组成员和贡献者的帮助下继续开展工作 。
发布任何JSR所涉及的所有不同角色和工作流(如上例所示)都在JCP程序中定义,并由EC管理。
Java社区流程成员资格
要 在JCP中正式参与JSR或流程的 任何阶段 ,组织或个人必须签署Java规范参与协议(JSPA), 准会员协议(AMA)或合作伙伴协议协议(PMA)。
签署这些协议之一的任何实体(人员或组织)被归类为可用的三种类型的 JCP成员之一:准会员,合作伙伴会员或正式会员。这些类型中的每一种都使成员有资格在流程中扮演不同的角色。该JCP提供 的一种主体(个人,非营利组织或商业组织)如何成为不同成员非常详细的解释和它们如何促进。但基本上,以下规则适用:
- 准会员可以 投稿 到 的JSR专家小组,参加 JCP成员 在一年一度的活动和投票 执行委员会 选举2个协理席位
- 合作伙伴成员可以在 执行委员会任职,参加 JCP会员 活动并在年度 执行委员会 选举中投票
- 正式会员可以在工作的 执行委员会,投票在年度执行委员会选举工作的贡献者 ,以JSRs元素,并导致这些规范。
执行委员会(EC)
该 执行委员会(EC)中扮演的主要作用 JCP 程序。该小组的成员必须分析,评论,投票并决定批准 提交给该计划的所有JSR。除负责指导整个平台的发展外,EC和整个JCP计划还负责JCP计划本身,使其遵守社群对计划及其成员的期望。
该委员会的成员通过年度选举产生,他们负责:
- 审核并投票批准或拒绝新的 JSR 提案
- 审查和投票批准或拒绝公开审查草案
- 决定何时 撤回JSR
- 合作修订 JCP 计划
规范领导者
规范领导者通常是规范的作者,或像的示例 JAX-RS 属,有人与该提出的请求的组织。 Spec Leads的 主要职责是 在制定规范时指导 专家组 成员和 贡献者,但他们还必须:
- 提供JSR的参考实现
- 完成 技术兼容性工具包(TCK) – 一组测试,用于检查特定 JSR 的合规性
- 更新jcp.org上的JSR页面,提供早期草稿审核,公众审核,提议的最终草案等文档 。
贡献者
贡献者是帮助专家组和规范负责人测试和开发JSR的准会员(即签署了准会员协议的个人 ) 。这个角色是JCP计划的第一步 。在一个或多个JSR上提供大量帮助的贡献者很有可能被视为未来专家组的候选人和/或充当规范主管。
Java规范请求(JSR)
一个 Java规范请求 是在Java平台上开始增强的文档。每当JCP程序的成员看到改进平台的机会时,他们就会创建一个描述机会的 JSR并将其提交以进行修订。然后,JSR会经历一系列阶段,直到它被释放或丢弃。以下列表列举了从创建JSR到发布的各个阶段 :
- 写一个 JSR
- 提交 JSR
- JSR 评论
- EG 形成
- 早期草案审查
- 公开评论
- 拟议的最终草案
- 最后的选票
所有这些阶段都在JCP 2.10:流程文档中进行了彻底定义 。但下面我分享一下它们的摘要。
编写Java规范请求
第一阶段是确定机会的个人或公司撰写的。此阶段预期的工件必须符合JSR提交模板。
提交Java规范请求
在正确填充模板后,作者然后将其提交给 JCP 程序。如果提交的一切正常,则 JSR 进入审核阶段。
Java规范请求审核
当 JSR 到达这个阶段时,EC和整个社区将有2到4周的时间来分析和评论它。
此期间的长度由JSR 提交者定义 。此阶段以 JSR批准选票(JAB)结束,欧共体成员还有2周的时间对其进行投票。要获得批准,JSR 必须:
- 获得至少5票
- 获得大多数投票赞成票(没有投票被忽略)
专家组的形成
当 JSR 获得EC批准后 ,规范领导者开始组建专家组和贡献者团队来处理规范。在确定了整个工作人员之后,他们开始进行早期草案审查(EDR)。
早期草案审查
早期草案审查的目标是尽快将规范草案纳入适合公众审查的表格 。公众参与这一阶段是必要和重要的,因为它们可以提出可以改进规范的架构和技术问题。
公开评论
当JSR 真正接近其完整定义并且 EG 准备开始开发参考实现(RI)时,就达到了这个阶段 。这个阶段的目标是收集一些最后的反馈,并让机会在转到提议的最终草案之前最后一次贡献 。
拟议的最终草案
如果 公共审核 成功,专家组将通过完成回复评论所需的任何修订来准备规范的最终草案。在此阶段,JSR既可以作为规范也可以作为实现( 参考实现)完成。此外,规范负责人和专家组负责完成 TCK。
最后的选票
在完成所有文件,实施和 TCK之后,规范引线将规范的最终草案发送给JCP 程序以启动最终批准选票。如果成功投票,在最多14天之后,规范将在 JCP 网站上以其RI发布。然后, JSR 进入维护模式,可能会对其进行小的更新。
结论
正如您所看到的,Java社区对首字母缩写词有成瘾,主要是那些包含字母 J的词汇。但除了这种“上瘾”之外,社区还建立了一个令人惊叹的环境,具有清晰的规则,使Java能够作为一个平台和社区发展。
定义为JCP的整个过程使多家公司能够依赖符合规范的技术。依靠这些规范保证公司将拥有多个能够支持其运营的供应商。因此,如果供应商开始提供不良服务或破产,公司可以保证转移到其他供应商不会造成太多麻烦。
当然,这个过程和这些规范并不是免费的。实际上,价格相当高,这是新技术和趋势被JCP社区采用的时间框架 。
举个例子,假设一家公司想使用GraphQL。目前,没有任何支持该技术的Java版本的规范,Java标准根本不会支持它。因此,如果公司真的想要使用它,它将不得不采用与Java平台及其标准无关的另一种解决方案。这将使公司失去规格的优势。
那你怎么样,你对Java平台,JCP 程序和整个Java社区有什么看法?你认为他们正朝着正确的方向前进吗?你会建议一些改变吗?我们很想听听您的想法。
关于JavaSE规范、JavaEE规范、JSR规范的详细信息:
JSR规范系列(1)——Java版本、JSR规范和JCP社区流程概述
JSR规范系列(2)——JavaSE规范、JavaEE规范、JSR规范全面整理——截止201908
JSR规范系列(3)——Java EE 6规范
JSR规范系列(4)——Java EE 7规范
JSR规范系列(5)——Java EE 8规范(Jakarta EE 8)
JSR规范系列(6)——Jakarta EE 9 规范
JSR规范系列(7)——Jakarta EE 10 规范
今天的文章JSR规范系列(1)——Java版本、JSR规范和JCP社区流程概述分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/82933.html