目录

  • 前言
  • Java版本
  • Java标准版(Java SE)
  • Java企业版(Java EE)
  • Java社区流程(JCP)
  • Java规范请求(JSR)
  • 结论

前言

前面看了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应用程序的执行。这是使语句编写一次, 对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规范系列(2)——JavaSE规范、JavaEE规范、JSR规范全面整理——截止201908
JSR规范系列(3)——JavaEE 6规范及其实现框架
JSR规范系列(4)——JavaEE 7规范及其实现框架
JSR规范系列(5)——Java EE 8规范(Jakarta EE 8)

JSR规范系列(1)——Java版本、JSR规范和JCP社区流程概述相关推荐

  1. JSR规范系列(2)——JavaSE规范、JavaEE规范、JSR规范全面整理——截止201912

    目录 JCP组织和JSR规范 符合JSR规范的框架 JavaSE规范 JavaEE规范 网上找不到详细的资料,劳资自己动手写一篇~ 前面写了Java版本.JSR规范和JCP社区流程概述,接下来看看JS ...

  2. java ee规范_测试Java EE 8规范

    java ee规范 Java EE 8平台肯定在过去的几个月中一直在发展. 规范已经发布了早期的草案评审,里程碑甚至最终版本. 实际上,随着JSF 2.3的发布,JSR-372才刚刚进入最终版本. 有 ...

  3. Java 源程序的良好书写规范有哪些,Java 程序书写规范

    Java 程序书写规范 任何一门语言都是用来交流的,都有自己的一套书写规范,Java 也不例外.好的命名规范可以让你的程序更专业,更容易被别人理解,更好维护.了解命名规范,可以更好的学习和记忆 Jav ...

  4. Java日志格式规范

    Java日志格式规范 文章目录 Java日志格式规范 **| 日志的作用** **| 撰写日志的要求** **日志的可读性:**日志时给人读的,不仅仅是让自己明白,也要让没有接触过我们源代码的其他程序 ...

  5. Java的JSR规范

    https://blog.csdn.net/liangkun0124/article/details/51306886 https://blog.csdn.net/majian_1987/articl ...

  6. JVM规范系列第2章:Java虚拟机结构

    本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...

  7. Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结

    文章目录 前言 一.三大版本类型 二.Java 语言规范 三.应用程序接口(API) 四.Java 开发工具包(JDK) 五.集成开发环境(IDE) 六.Java 运行环境(JRE) 七.Java 源 ...

  8. java虚拟机规范这本书怎么样_JVM规范系列开篇:为什么要读JVM规范?

    博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 许多人知道类加载机制.JVM内存模型,但他们可能不知道什么是<Java虚拟机规范>.对于Java开发来说,< ...

  9. 测试Java EE 8规范

    Java EE 8平台肯定在过去的几个月中一直在发展. 规范已经发布了早期的草案评审,里程碑甚至最终版本. 实际上,随着JSF 2.3的发布,JSR-372才刚刚进入最终版本. 有关更多信息,请参见 ...

  10. java SE 7规范(又名JDK 7)

    转载自:http://www.javalord.com/javalordblog/?p=349 java SE 7规范(又名JDK 7)开发进展很顺利,计划于2011年夏天发布最终版本.为了让开发者能 ...

最新文章

  1. cisco配置静态NAT
  2. from name as id为啥报错
  3. 港口物流系统设计与优化-SMU在线学习笔记
  4. OSError: Cannot initialize new instance of inotify, Errno=Too many open files (EMFILE) 问题解决
  5. Android 图片平铺实现方式
  6. org.tinygroup.databasebuinstaller-数据库结构及元数据自动创建
  7. 『设计模式』--常见面向对象设计原则
  8. python安装opencv库、提示找不到pip_OpenCV Python importorror:DLL加载失败:找不到指定的模块...
  9. 防火墙配置文件iptables详解
  10. pandas cut qcut 分箱算法详解
  11. java塔防兽人种族_兽人TD1.09下载
  12. 最优化理论与方法(袁亚湘 孙文瑜)笔记(一)
  13. 图解CAN与CANopen协议,小白都能一目了然
  14. HTML小游戏9 —— 潜行游戏《侠盗罗宾汉》(附完整源码)
  15. 停车场设计软件测试,停车场车位视频检测系统设计
  16. java @around_正确理解Spring AOP中的Around advice
  17. 笨方法学python 习题29-31
  18. 基于php的高校体育场地网上预约使用系统
  19. Python灰帽子——黑客与逆向工程师的Python之道
  20. C3P0的三种配置方式以及基本配置项详解

热门文章

  1. 设置android模拟器屏幕自动旋转
  2. Codeforces 106C Buns - 多重背包 - 二进制拆分
  3. cmake 添加asan功能
  4. php全部转换成小写,php strtolower字母转换小写
  5. 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585
  6. 【关于win10任务栏卡死的解决】
  7. Gateway断言功能详解
  8. Android 清理应用缓存
  9. Linux root密码暴力破解及重置的三种方式
  10. Web服务器、应用服务器、数据库服务器之间的关系