Java 9幕后花絮:新功能从何而来?

JCP

找出Java幕后发生的事情,以及新功能如何实现

在上一篇文章中,我们介绍了即将发布的Java 9版本的新功能和尚待解决的功能,并简要提到了将新功能添加到下一个版本之前要经历的过程。 由于此过程几乎影响了所有Java开发人员,但大多数人对此知之甚少,因此本文将重点介绍内部人员对Java的看法(以及如何建议您一直想要的新功能)。 我们认为了解新功能如何生活的最佳方法是询问负责将其实现的人。

我们与2位Java执行委员会成员Gil Tene和Werner Keil以及伦敦Java社区成员Richard Warburton进行了交谈,并向他们询问了Java的新功能以及他们希望将来看到什么样的新功能。 这篇文章将涵盖面试的第一部分。

但是在执行此操作之前,以下是参与创建新功能并对其进行投票的主要参与者:

–在广泛的主题或特定代码体系方面具有共同利益的个人和组织。 安全,网络,Swing和HotSpot是一些示例。

项目 –产生大量代码,文档或其他努力的工作。 必须由至少一个团体赞助。 最近的示例是Lambda项目,Jigsaw项目和Sumatra项目。

JDK增强建议 ( JEP )–允许在需要进一步探索时在JCP之前或与之并行地非正式地推广新规范。 与JSR不同,它可能还包含没有规范级可见性的功能(例如,新的垃圾收集器或JIT实现)。 接受的JEP成为JDK路线图的一部分,并分配一个版本号。

Java Specification Request ( JSR )–该功能的实际规范在此阶段发生,可以通过组/项目,JEP或来自单个JCP(Java Community Process)成员来进行。 通常会为每个Java版本打开一个伞式JSR(也称为平台JSR),Java 9尚未实现。社区的每个成员也可以提出新的Java规范请求。

新功能如何进入Java?

Warburton: “真正的答案是有人想要该功能。 该人可以是大型供应商的内部工程师或项目经理,也可以是社区的外部成员。 无论哪种方式,都需要满足严格的标准:

  • 严重的用户需求:它必须是对整个社区的共识。 示例:Java SE 8添加了lambdas-这项功能已经争论了很多年,并且已经被人们要求。
  • 经过试验和测试:标准必须持续很长时间,并且修改已经建立的标准是非常困难且昂贵的过程。 结果是JCP(Java社区流程)并不是最前沿。 一旦技术为企业所采用,它就成为了一个去处。
  • 并非每个供应商都独有:标准必须适合所有供应商。 例如:弱/软/幻像引用与垃圾收集器交互,因此以一种试图最小化它们对GC设计的限制的方式指定了它们。

“一旦确定您的功能是一个好主意,就需要开始标准化过程。 这涉及到提出一个JSR(Java规范请求),它是更改Java的基本单元。 JSR需要多次投票。 首先,批准在此主题上启动JSR是一个好主意。 每当进行公共审核时,都要反复进行迭代,以确保JSR朝着正确的方向前进。 最终是时候批准标准了。

Tene: “ Java长期以来一直在进行仔细和有意的增强。 在历史上,仍然使Java比几乎所有其他编程语言和环境更成功的事情之一是,它在避免Swift采用“最新的有趣事物”方面取得了相对的成功,以及它作为平台的相对一致性。 在整个平台(Java SE,EE等)整个平台上都是如此,但在Java SE平台(我将大部分精力集中在Java SE平台上)中,可能最清楚地遵循了这一点。 集合,NIO,泛型,平台优化的并发实用程序,MethodHandles,以及最新的Lambda表达式和流库支持都是很好的示例,这些功能随着时间的流逝而被添加并被广泛采用,显示了它们对平台的真正价值及其重要性。不只是短暂的时尚。”

“ JCP(Java社区流程)负责通过JSR捕获新功能。 成功的独立JSR可以标准化一组特定功能或行为的语义。 但是,当功能成为平台JSR的必需部分并由此成为Java SE或Java EE平台的组成部分时,通常会证明该功能的最终成功和采用。 自从创建OpenJDK以来,我们已经看到Java SE的许多早期功能工作都从在JSR中开发到在JEP中开发(JDK增强建议)。 它们最终仍然像以前一样经过规范和完成,并且也成为Platform JSR的一部分,但是我们看到了更多的开放开发,以及更多的试验(不一定要成为JSR)。”

Keil: “ 3个竞争的JSON库,一个用于Java EE,另一个Oracle专有与Java ME 8捆绑在一起,而另一个针对Java SE 9的基于JEP的独立方法可能是最好的例子之一,这可能会出错并且与用户的使用相反。开发人员的需求或为Java设置一个标准的目标。 另一个可能是Java SE 8(JavaFX + JSR 310)引入的重叠和很大程度上不兼容的日期/时间API,而“ java.util”下以前存在另外两个库。 Java架构师提供了输入和建议,但是从日期/时间API的角度来看,只有他们或其他人(包括一些执行委员会成员)指出的最糟糕的问题得以解决,而其他问题则被消除了。”

您能否分享您在Java社区流程中的个人经历?

Keil: “前一段时间,我本人和共同规范负责人Antoine Sabot-Durand提出了一种JSR,用于基于标准化CDI的社交媒体连接器,以及类似的基于JSON,REST或OAuth等安全标准的类似API。 JSR被8:5的绝大多数拒绝。 鉴于Seam Social和Red Hat的整个Seam生态系统都被新项目取代,就像整个JBoss服务器在那个时候获得了一个新的名称和品牌(WildFly)一样,由此产生的开源项目Agorava很自然地替代了Seam我们为JSR 357提出的社交和许多想法。”

社交媒体API执行委员会投票结果

社交媒体API执行委员会投票结果

Tene: 作为JCP执行委员会的一部分,我不得不考虑批准新的JSR。 在不止一个案例中,我投票拒绝了我认为不属于平台的JSR(并主张其他人也这样做),但是大多数自然适合Java生态系统的JSR的门槛并不高。只要JSR负责人签署就可以完成所涉及的详细工作和流程。

Warburton: “我对日期和时间库有所帮助。 我认为这使我对需要完善功能或方法签名的每个单元的详细程度有了更多的了解。 人们花费大量时间尽最大努力使这些API正确无误。”

翻译自: https://www.javacodegeeks.com/2014/10/java-9-behind-the-scenes-where-do-new-features-come-from.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sudo apt-get install libstdc++6

sudo apt-get install libstdc6 yum install libncurses.so.5 sudo apt-get install libncurses.so.5 sudo apt-get install lib32ncurses5 apt-get update把源更新一下 使用gdb时的指令 (gbd) info line *0x08xxxx sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.…

AngularJS快速入门指南03:表达式

AngularJS通过表达式将数据绑定到HTML。 AngularJS表达式 AngularJS表达式写在双大括号中:{{ 表达式语句 }}。 AngularJS表达式绑定数据到HTML的方式与ng-bind指令的方式相同。 AngularJS会准确地将表达式“输出”为计算的结果。 AngularJS表达式与JavaScript表达式…

零基础快速上手HarmonyOS ArkTS开发2---ArkTS开发实践

ArkTS开发实践: 接着上一次零基础快速上手HarmonyOS ArkTS开发1---运行Hello World、ArkTS开发语言介绍继续, 在上一次对于ArkTS的基础知识进行了学习,依照官方的课程计划,还有两个具体的小案例需要来实践实践: 实践出…

八、VueJs 填坑日记之参数传递及内容页面的开发

我们在上一篇博文中&#xff0c;渲染出来了一个列表&#xff0c;并在列表中使用了router-link标签&#xff0c;标签内的&#xff1a;to就是链接地址&#xff0c;昨天咱们是<router-link :to"/content/ i.id">这样写的&#xff0c;今天我们来完成内容页面的渲染…

为Kindeditor控件添加图片自动上传功能

Kindeditor是一款功能强大的开源在线HTML编辑器&#xff0c;支持所见即所得的编辑效果。它使用JavaScript编写&#xff0c;可以无缝地与多个不同的语言环境进行集成&#xff0c;如.NET、PHP、ASP、Java等。官方网站可以查看这里&#xff1a;http://kindeditor.net/index.php Ki…

4个万无一失的技巧让您开始使用JBoss BRMS 6.0.3

上周&#xff0c;红帽发布了标记为6.0.3的JBoss BRMS的下一版本&#xff0c;已订阅的用户可以在其客户门户中使用。 如果您对该版本的新增功能感到好奇&#xff0c;请在客户门户网站上在线查看版本说明和其余文档 。 我们正在寻找一些简单的方法来开始使用此新版本&#xff0…

带有Angular JS的Java EE 7 – CRUD,REST,验证–第2部分

这是Angular JS承诺的Java EE 7的后续版本–第1部分 。 花了比我预期更长的时间&#xff08;找到时间来准备代码和博客文章&#xff09;&#xff0c;但是终于到了&#xff01; 应用程序 第1部分中的原始应用程序只是带有分页的简单列表&#xff0c;以及提供列表数据的REST服务…

Chrome不显示OPTIONS请求的解决方法2021版chrome90

在chrome90上之前展示跨域请求预检请求的方法失效了&#xff1a; 在chrome地址栏总输入 chrome://flags/#out-of-blink-cors 将其设置为Disabled后重启浏览器 在chrome://flags找不到选项out-of-blink-cors。取而代之的是chrome将预检请求放到了控制台网络面板的 OTHER 面板中。…

SVG实现波浪效果

SVG实现波浪效果 svg path&#xff1a;C 贝塞尔曲线绘制波浪形状 A 绘制圆弧形 svg animate&#xff1a;制作波浪动画&#xff0c;为了波浪动画效果自然&#xff0c;设置values关键点       attributeName&#xff1a;变化属性名 dur&#xff1a;动画时间 repeatCount&a…

使用WildFly 8在Java EE7中自举Apache Camel

从Camel版本2.10开始&#xff0c;支持CDI&#xff08;JSR-299&#xff09;和DI&#xff08;JSR-330&#xff09;。 这为在Java EE容器中以及独立Java SE或CDI容器中开发和部署Apache Camel项目提供了新的机会。 是时候尝试一下并熟悉它了。 骆驼到底是什么&#xff1f; 骆驼是…

好东西要分享

目录 矢量图标库$\text{pic}$图论神器$\text{bzoj}$离线题库打字速度表情包PPP矢量图标库 个人jio的这个阿里巴巴矢量图标库蛮不错的 上面这张就是去上面的网站找的。 $\text{pic}$ 来wallpaper abyss找点好康的图片吧。 图论神器 画图 $\text{bzoj}$离线题库 $\text{bzoj}$离线…

Vue2.0 全家桶开发的网页应用(参照吾记APP)

github链接 借鉴吾记APP&#xff0c;使用 vue2.0 vue-router vuex 为主要技术栈&#xff0c;elementui做为ui框架&#xff0c;多模块 spa 模式&#xff0c;webpack2.0 负责模块打包&#xff0c;gulp 负责处理静态资源打包、压缩&#xff0c;欢迎打赏star&#xff01;&#xff…

Java EE 7批处理和魔兽世界–第1部分

这是我在上一个JavaOne上的会议之一。 这篇文章将扩展主题并使用Batch JSR-352 API进入一个实际的应用程序。 此应用程序与MMORPG 魔兽世界集成。 由于JSR-352是Java EE世界中的新规范&#xff0c;所以我认为许多人不知道如何正确使用它。 确定本规范适用的用例也可能是一个挑…

学习笔记-AngularJs(十)

前面一直在说自定义指令&#xff0c;但是却一直没有一次系统地去了解&#xff0c;现在需要我们一起来学习如何去使用自定义指令&#xff0c;去丰富html标签、属性&#xff0c;实现多元化、多功能的标签&#xff08;或是属性&#xff09;。辣么&#xff0c;啥是指令&#xff1f;…

WildFly 9 –别希望您的控制台像这样!

每个人都可能听到这个消息。 周一发布了第一个WildFly 9.0.0.Alpha1版本。 您可以从wildfly.org网站上下载它&#xff0c;最大的变化是它是由一个新的功能配置工具构建的&#xff0c;该工具位于现在单独的核心发行版中&#xff0c;并且还包含一个新的Servlet发行版 &#xff08…

磁盘性能 -- IOPS 和 吞吐量 说明

一. Wikepedia上有关IOPS 的说明链接如下&#xff1a;http://en.wikipedia.org/wiki/IOPSIOPS (Input/Output OperationsPer Second, pronounced i-ops) is a common performance measurement used to benchmark computer storage devices like harddisk drives (HDD), solid s…

3使用Jsoup解析Java中HTML文件的示例

HTML是Web的核心&#xff0c;无论您是通过JavaScript&#xff0c;JSP&#xff0c;PHP&#xff0c;ASP还是任何其他Web技术动态生成的&#xff0c;您在Internet上看到的所有页面都是基于HTML的。 您的浏览器实际上是解析HTML并为您呈现。 但是&#xff0c;如果需要解析HTML文档并…

径向菜单的制作

最终效果&#xff1a; 在径向菜单的制作前&#xff0c;首先需要知道几点知识点&#xff1a; Math.sin(x) x 的正玄值。返回值在 -1.0 到 1.0 之间&#xff1b; Math.cos(x) x 的余弦值。返回的是 -1.0 到 1.0 之间的数&#xff1b; 这两个函数中的X 都是指的“弧度”…

OptaPlanner –具有真实道路距离的车辆路线

在现实世界中&#xff0c;车辆路径问题&#xff08;VRP&#xff09;中的车辆必须走这条路&#xff1a;它们不能在客户之间直线行驶。 大多数VRP研究论文和演示都乐于忽略此实现细节。 和我一样&#xff0c;过去。 尽管使用道路距离&#xff08;而不是空中距离&#xff09;不会对…

关于如何在PSA众多请求号中查找数据是属于哪一条。

其中有两个TCODE: RSTSODS与RSTSODS&#xff0c;我们可以查找数据源的PSA表&#xff0c;然后在SE16中可以看到。 另外我们对PSA点击管理&#xff0c;一般会出现在窗口上面出现PSA的表名。 当然有些不在的话&#xff0c;那就去查找那两个TCODE。转载于:https://www.cnblogs.com/…