tms tck

上个月,JPA 2.1专家组引发了有关用于JSR的技术兼容性套件(TCK)的可访问性的有趣辩论,该技术用于验证准确性的规范实施。 VMware的Oliver Gierke批评了当前的做法–我们与他谈了当前的情况,以及为什么他认为透明,开放的TCK流程才是答案。

贾克森特:嗨,奥利弗。 目前,JPA 2.1专家组中对TCK的可用性存在争议。 这些TCK实际上发挥了什么作用?

奥利弗·吉尔克(Oliver Gierke):在我加入JPA专家组之前,我希望专家组在规范的基础上定义TCK,以确保它们实际上彼此一致,并且确实实现了所指定的内容。

在处理Spring Data JPA时,我反复碰到各种持久性提供程序中的问题 ,这些问题表明API的核心方法未被TCK覆盖或测试不够严格。

我询问了如何改善TCK的方法,但没有得到答案。

这就是我加紧加入专家组的原因。 加入该小组后,令我惊讶的是,加入该小组并不意味着您也可以使用TCK。 我们所能做的就是编写一封邮件,指出问题并希望以某种方式解决。

JAX:因此,TCK因此完全由Oracle控制和开发吗?

究竟。 在规范的最终版本发布之前,专家组无法访问TCK。 之后,只有被许可方才能实际访问。 至此,JSR已经结束,关于TCK的问题很难确定。 只有模糊的反馈渠道:给规格负责人的电子邮件。

JAX:也许您可以举个例子来说明当前的问题是什么?

让我们假设以下情况:我们有一个由十个团队组成的团队来定义对软件的需求。 但是该团队没有定义测试用例。 除此之外,开发团队开始根据书面规范实施代码。 他们可以与规范团队讨论问题,但不能讨论他们最终必须遵循的测试套件。 他们本质上完全是在黑暗中射击。 在这些活动的同时,第三个利益相关者实施了规范的测试用例–完全隔离,完全没有任何反馈。

现在该规范已获得批准,这意味着从那时起它已经定型。 恰好在该时间点,实现者可以访问测试用例,而他们的主要任务现在是使实现在当前TCK上运行。 在任何时候都没有实际检查TCK遵守规范中定义的程度,规范中是否有未经测试的部分等等。

如今,我们会以这种方式运行软件项目吗? 我确信这样的项目存在于现实世界中。 我认为,这仍然不是运行软件项目的方式。 尤其是关于Java标准的开发人员将要使用多年甚至数十年的代码。

回到JSR,我们面临着另外的问题,即通常将对实现进行认证。 如果我们发现违反规范的故障导致TCK发生故障,我们该怎么办? 取消认证实施?

没有处理TCK中问题或缺少测试的过程,也没有纠正认证的方法。 首先确定可靠的TCK至关重要的另一个原因。

因此,我们有可能(但从我实际的角度来看)也面临着规定的内容与实施者必须遵守通过TCK的要求之间的巨大空白。 尤其对于持久性提供程序之间的应用程序可移植性而言,这是一个问题,最终导致了一个问题,即是否针对模糊地指定但有效地在所有持久性提供程序中使用完全不同的语义实现的方法进行编码是否有意义。 这是从根本上破坏规范值的地方。

而且,我想提出一个问题,即如果实施者和使用API​​的开发人员的唯一权威实例与规范完全分开定义,并且现在有一种方法可以控制它们与每个规范之间的关系,那么为什么有人希望按照规范工作其他。

JAX:您描述的这些问题是否与JPA特别相关? 或换种说法:其他专家组中是否正在进行类似的讨论?

这里的核心方面是,每个JSR都基于Java社区流程(JCP)的版本运行,该版本定义了如何运行JSR,在什么时间点需要生产什么以及拥有什么样的许可证的流程即将出版。 一些规范(例如JPA)非常接近这些规则。 但是我知道其他更开放地工作的规范(例如CDI)。 在整个规范过程中,已经获得Apache许可的CDI规范的TCK公开提供。 这避免了规范和TCK之间的差距,并同时整合了社区。 当然,这并不意味着可以完全避免规格中的歧义,但可能性很小。

JAX:您对改善当前状况有何建议?

我要拍摄两件事。 首先,规范和TCK应该彼此并存,例如,我们可以坚持不提供专用测试用例就不能指定API。 当然,这需要专家组成员访问TCK。 实现者将从中特别受益,因为他们无需执行超过两年的时间就可以对他们的代码进行测试。
我热烈欢迎的第二件事是如何处理TCK故障。 必须有一种持续改进测试套件的方法。

JAX:您是否希望看到TCK完全开源并免费提供给社区?

究竟。 已经提到的CDI规范表明这是可能的。 TCK在GitHub上可用 -每个人都可以使用“ forkable”和“ improveable”。 为什么这不适用于其他JSR?

JAX:Oracle的Linda DeMichiel最近在邮件列表中写道,Oracle没有专门的JPA TCK团队。 她提到其他JSR的TCK已提前完成。 其他专家组的服务时间更早了吗? 听起来好像Oracle的TCK团队并不大,所以准备工作只需要很多时间。

这是非常好的一点。 很难找到有关谁正在为JPA 2.1开发TCK的细节。 琳达还提到,到目前为止,还没有人真正对帮助TCK表现出兴趣。 重要的是要注意,我不想指责某人做不好的事情。

我的主要观点是,我认为当前流程存在缺陷,并且会对标准质量产生负面影响。 我知道更好的TCK首先意味着要做更多的工作,我当然愿意提供帮助。 也许我们甚至可以通过Adopt-a-JSR计划找到更多的志愿者。 但是我确实认为,如果流程不开放,实际上是不可能帮助的,那么很难吸引人们。 除此之外,我认为大多数使用像JPA这样的标准的开发人员都没有意识到差距以及为什么当前状态实际上是有问题的。

如果您现实地看待这种情况,您是否认为当前情况会很快改变? Oracle准备好进行建设性的对话了吗?

我已经提到过,即使作为JPA专家组的成员,获取信息也不容易。 另一方面,我看到它适用于其他规范。 在这方面,我认为这次讨论是创造透明度并希望同时引起人们对社区参与的兴趣的机会。 最终,它是关于一个设计良好且可用的API。 有太多的API可供开发人员狂奔。 因此,每一项微小的改进都是重要的。

因此,您想扩大对此问题的讨论-我们的读者可以在这里发表评论并分享他们的观点。 他们还可以做些什么来参与讨论?

首选方式当然是用户的邮件列表 。 除此之外,我们还维护一个JIRA实例,以收集针对专用工作块的反馈。

翻译自: https://jaxenter.com/tck-access-controversy-chat-with-jpa-2-1-expert-group-member-oliver-gierke-105703.html

tms tck

tms tck_TCK访问争议–与JPA 2.1专家组成员Oliver Gierke聊天相关推荐

  1. SpringBoot22-spingboot数据访问-Spring Data JPA

    一:点睛Spring Data JPA 1,什么事Spring Data JPA 我们知道Hibernate是数据访问解决技术的绝对霸主,使用O/R映射技术实现数据访问,o/r映射即将领域模型类和数据 ...

  2. java的继承和访问_Java基础篇:如何解决成员的访问和继承?

    Java基础篇:如何解决成员的访问和继承? 尽管子类包括超类的所有成员,它不能访问超类中被声明成private的成员.例如,考虑下面简单的类层次结构: /* In a class hierarchy, ...

  3. Java EE 8停步不前:Java社区能否扭转乾坤?

    最近大家围绕Oracle对Java EE的承诺有很多顾虑.InfoQ上个月通过一篇Java EE守护者联盟的报道介绍了相关新闻.Pivotal公司Spring Data项目主管兼JPA 2.1专家组成 ...

  4. 使用 Spring 构建 REST 服务

    注:本文章是 spring 官网 guide Tutorials 部分的第一篇文章(Building REST services with Spring)的中文翻译版本.因为译者并非专业翻译因此其中必 ...

  5. Spring Boot访问关系型数据库三剑客JDBC、JPA、Mybatis

    文章目录 背景 配置数据源 引入mysql yml文件配置项 Spring Data JDBC 添加依赖 新建Entity 控制器演示代码 浏览器访问结果 Spring Data JPA 添加依赖 新 ...

  6. Spring Data:企业级Java的现代数据访问技术(影印版)

    <Spring Data:企业级Java的现代数据访问技术(影印版)> 基本信息 原书名:Spring Data:Modern Data Access for Enterprise Jav ...

  7. jpa findone怎么用_Jpa VS MyBatis,你用哪个?

    经常看到有小伙伴在讨论 JPA 和 MyBatis 这两个孰优孰劣的问题,其实松哥觉得这是一个伪命题,没必要为这种问题争个面红耳赤,每种框架有它存在的道理,也有各自擅长的事情,今天松哥就和大家来聊聊这 ...

  8. Spring Data JPA简单学习

    从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...

  9. JPA学习笔记---JPA实体Bean的建立---链接上一个博文:对实体Bean中属性进行操作:保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;可以存放二进制数据,可以存放

    3.给上述生成的那个name字段:更改数据库中的字段名,是否为空,字段长度的设定,只需要   在Person.java文件中,加上 @Column(length=10,nullable=false,n ...

最新文章

  1. Asp.net控件开发学习笔记(九)----服务器控件事件
  2. 角色管理与今日内容介绍
  3. 多个线程对串口读取 modbus_看完这个,如果还不懂Modbus,那您去撞豆腐吧
  4. OpenStack_Swift源代码分析——Ring基本原理及一致性Hash算法
  5. python中while true的用法_解析Python中while true的使用
  6. 使用Crash工具查看一个TCP listen sock内存布局实例
  7. Faster RCNN论文总结
  8. leapftp,如何实现leapftp download
  9. 网易云音乐歌曲评论爬虫
  10. 笔记本无线上网卡怎么用?
  11. C#搞工控的一些代码
  12. 《Excel大神上分攻略》学习笔记1——填充、行列操作、数据格式
  13. 用matlab调节窗宽窗位的代码,基于HTML5的PACS HTML5图像处理(7)实现客户端JS调整窗宽窗位...
  14. C++相关问题笔记(一)
  15. 猫掉进山洞C语言随机数,《小猫出生在秘密山洞》读书心得最新范文五篇
  16. 咸鱼Micropython— network
  17. 番茄社区多门店系统介绍
  18. 对自己狠一点,开始写作吧
  19. unity 2D动画控制一些小技巧
  20. 每天读论语《论语·学而》02

热门文章

  1. 抖音爬虫挑战一------------模拟器安装
  2. 博后招募 | 新加坡科技与设计大学段凌杰教授招收人工智能方向博士后
  3. RTMP使用流程文述
  4. 51单片机风扇转动c语言代码,基于51单片机的c语言程序 电机转速测量与PWM控制...
  5. 树莓派Odroid等卡片式电脑上搭建NAS教程系列6-miniDLNA
  6. 教大家怎样成功地刻录PS1游戏碟
  7. 华为手机到底用了多少美国芯?
  8. Tornado training:1_Get Started
  9. jlink ob最新固件提取
  10. SSH连接服务器出现@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDEN