两个用于Eclipse的TCK –开源到底有什么?

早在5月,Oracle就向Eclipse Foundation 授予了兼容性测试奖学金 。 在过去的几天里,这引起了媒体的关注,我只是想确保我对整个过程和详细动作有所了解。 看起来像是一见钟情的简单诚实的礼物实际上具有更多的方面。 但让我们从头开始:

技术兼容性套件

由Java社区流程(JCP)覆盖,开发了Java语言和最上层的各种平台(Java SE,Java EE,Java ME)。 每个JSR(Java规范请求)包括EG(专家组)一堆文件,当然还有参考实现(RI)和相应的TCK(技术兼容性套件)。 可以对照实现执行TCK,并检查它们是否符合规范。 因此,它基本上是规范文档的代码等效项。 大多数TCK包含一堆测试用例以及执行测试的“测试工具”。 如果每个JSR有一个TCK,可以安全地假定至少有与我们在JCP中拥有活动JSR一样多的TCK。 但这只是理论上的想法。 实际上没有。 至少没有公开可用。 除了JBatch,CDI和Bean验证之外,我想不得多了。 这些只是Java EE平台的一部分,该平台至少具有28个规范。 不幸的是,大多数TCK都在Oracle的控制之下。 但为什么? 这样做的主要原因是,TCK还用作平台认证的工具。 针对实现成功运行TCK证明了它的正确性以及某种程度上的合规性。

平台认证实际上是什么意思?

平台兼容性是产品的绝佳广告。 Java EE兼容性列表是Java EE服务器市场的“谁是谁”。 如果您的产品不在该列表中,则基本上没有机会被认可。 Apache Tomcat是该规则的唯一已知例外。 但是,获得认证需要什么呢? 对于Java EE,有一个Java EE兼容性测试套件(CTS),可能只包含各个TCK的总和。 老实说我没看过。 您必须成为Oracle的被许可方才能访问它。 而这正是它开始变得昂贵的地方。 我不知道到底有多贵,但是一旦付款,您就可以通过Java Partner Engineering网站访问CTS。 只有一种方法可以使用CTS。 通过兼容性测试奖学金计划 ,这是非营利组织和个人申请免费CTS的一种方式。 这些请求由审查委员会进行判断。 那里有一个PDF ,解释了此过程的工作原理。 截止到今天,除ASF之外,其他各种组织和个人也可以使用个人TCK和CTS。 现在,您已经了解了基本程序和认证,现在可以更轻松地查看已获得CTS奖学金的两个Eclipse项目的详细信息。 我需要在下面加上一些免责声明。 我只能从众所周知的结论中得出结论。 对于背后的原因,我没有任何见解或进一步的信息。 它可能比我想出的要简单得多……

EclipseLink – JPA参考实现

根据5月初的新闻稿,Oracle通过向Eclipse Foundation授予对两个TCK的访问权限和相关的支持服务来展示其“对Java开发人员和开放源代码社区的承诺”。 是时候开始思考了。 EclipseLink不是JPA的RI吗? 如果不自己为JPA构建TCK,他们到底在做什么? 他们为什么需要许可证?

EclipseLink的根源于TopLink。 任何了解TopLink历史的人都知道,这是一个相对较旧的产品,在被Oracle收购之前,它属于WebGain。 WebGain曾是Eclipse的强大支持者,甚至在2002年还是董事会成员。仅在Oracle TopLink收购WebGain五年后,WebGain便被捐赠给Eclipse Foundation。
从此 。 EclipseLink在EPL 1.0下可用。 项目本身不包含TCK。 RI的困境。 查看提交者列表并不十分令人兴奋。 30个人 而且只有一个非Oracle。 我为什么认为这个团队实际上拥有TCK(内部是Oracle)甚至开发它? 严格来说,EclipseLink的许可不符合TCK许可规则。 此处授予奖学金许可证只是纠正了该星座中的一些法律问题。

处女座– Java EE Web Profile Server

但是对于处女座,授予的许可确实会有所作为,对吧? 也许。 处女座是以前的Spring dm服务器,由SpringSource在2010年捐赠给Eclipse Foundation。 提交者列表绘制的图片与TopLink列表不同。 每个名字背后都不仅仅是SAP。 提交者在三家公司之间平均分配。 SAP,Pivotal和Tasktop技术。 后者有一个有趣的管理委员会。 SpringSource前首席运营官Neelan Choksi和Rod Johnson本人也是成员。 这可能表明Pivotal对项目的影响要比SAP多。 无论如何,两家公司很可能不是甲骨文的大伙伴。 奖学金许可证显然不是送给他们的礼物。 实际上,处女座已经通过Java EE 6认证。 但是,用另一个名字。 SAP NetWeaver Cloud在处女座上建立了Java EE 6 Web Profile产品。 因此,SAP可能已经从Oracle获得了许可证,并自己获得了Virgo的认证。 我不确定,但有人可能会想到,使用已经认证的服务器比逐年支付年度专利费便宜。 鉴于Eclipse基金会是一个非营利组织,因此很容易申请奖学金计划来进行排序。 至少在这种情况下有积极的副作用。 处女座现在有机会成为另一个获得Java EE认证的服务器。 SAP已经证明了这是可能的。 不久以后,社区可能会通过拥有新的EE 7认证的OSS服务器来获利。

但这是线下的正数,对吗?

两个新项目可以访问他们正在实施的规范的TCK。 那是积极的。 从公开可用的TCK总数来看,仍然令人沮丧。 尤其是在EclipseLink的情况下,这令人沮丧,因为TCK可能根本不公开。 去年对JPA邮件列表进行的冗长讨论稍微讨论了此问题并说明了缺点。 尽管随着JSR-348的更改而变得越来越好。 我们还不在那里。 实际上,我希望所有相关方都可以使用TCK。 通过在规范中以及在RI的测试区域不足的地方发现漏洞,可以提高规范和参考实现的质量。 两者都可以防止许多错误影响用户。 作为针对TCK的新许可模型的工作,是JSR 358的关键部分。 随附的Java.net项目包含所有讨论资料,并且可以公开访问。 每个人都可以自由参加讨论并发表自己的意见。 观察者邮件列表可用于任何已注册的java.net用户。 如果您对CloudBees,Red Hat和IBM对许可问题的看法感兴趣,可以在演示页面上找到更多资料。 Oracle本身建议在JCP的未来版本中继续使用标准的TCK许可模型:


“必须根据一项或多项已批准的开源许可证和/或标准商业TCK许可证,为将来的所有JSR提供TCK,以用于认证和商标目的。 必须根据标准的JCP社区TCK许可证,将所有未来非伞式JSR的TCK提供给相关RI开源项目的所有参与者。 ”(来源: Oracle针对JSR 358的提案 ,PDF,第15 +16页)

这将是朝着正确方向迈出的一步,并且将对开源社区产生真正的帮助。 如果授予的TCK不能作为礼物:仅仅解决目前的问题还不够。 如果将来会更好,我们需要进行总体更改。

参考: Eclipse的两个TCK –开源的真正含义是什么? 来自我们的JCG合作伙伴 Markus Eisele在Java的企业软件开发博客中。

翻译自: https://www.javacodegeeks.com/2013/08/two-tcks-for-eclipse-what-is-really-in-it-for-open-source.html

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

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

相关文章

尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...

Hyper-V尝试连接到服务器出错无效类的解决方法Windows10安装Hyper-V后没有自动连接到本地计算机,手工连接失败,提示:引用内容尝试连接到服务器"DESKTOP-6P9L2HB"时出错。请检查虚拟机管理服务是否正在运行以及是否授权你连接到此服…

Flask和mysql多线程_Flask解析(二):Flask-Sqlalchemy与多线程、多进程

Sqlalchemyflask-sqlalchemy的session是线程安全的,但在多进程环境下,要确保派生子进程时,父进程不存在任何的数据库连接,可以通过调用db.get_engine(appapp).dispose()来手动销毁已经创建的engine,然后再派生子进程。…

深入理解redis数据类型

转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9720033.html redis的存储模型 redis不是普通的键值对存储,它实际上是一个数据结构存储服务器,可以支持不同类型的值。这意味着redis相比传统键值对字符串key和字符串value存储来说&…

centos7 登陆报错 grep:write error

出现这个原因是因为磁盘空间满了 通过df -h查看存储空间 发现磁盘空间满了,可以用 find / -type f -size 1000M 查找大于1000M的文件删除 然后找到用rm -rf 命令删除 然后就不会出现这个问题了!转载于:https://www.cnblogs.com/lxs1314/p/8961113.html

你敢在post和get上刁难我,就别怪我装逼了

> 掘金编辑提醒:本文疑似有误,参考 听说「99% 的人都理解错了 HTTP 中 GET 与 POST 的区别」 之前好几次面试都被问到post和get有什么区别,肯定很多同学和我一样说了一大堆什么post比get安全,get比post传的少乱起八糟这样的答案…

昂首阔步:让开发人员喜欢使用您的REST API

随着JAX-RS API的发展,以及今年早些时候在JSR-339下发布的2.0版本,使用出色的Java平台创建REST服务变得更加容易。 但是,极大的简化带来了巨大的责任:记录所有这些API,以便其他开发人员可以快速了解如何使用它们。 不…

thinkphp mysql 更新_THINKPHP5修改数据库数据出现“缺少更新条件”的错误

查询数据库的数据分配显示在页面山修改后的数据准备传递到第三章图里接收数据,然后修改到数据问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)第一张图代码public function edit(){$db_01new DB();$id_editRequest::…

angular ajax get post 参数,Angular的Post 传递参数问题及解决方法

一、传递参数过程中POST会出问题,问题来源:我们都知道向后台传参可以使用get、post,其形式类似于nameiyy&id001 。但是在angular中却发现使用$http post 进行异步传输的过程中后台是接收不到数据的,其实这个问题就是因为请求头…

[No0000187]可能是把Java内存区域讲的最清楚的一篇文章

写在前面(常见面试题) 基本问题: 介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式&#xff…

Java语言基础及java核心

一、Java语言特点 1、 简单 2、 面向对象 3、 分布式 4、 健壮 5、 安全 6、 中性架构跨平台 7、 超强的可移植性 8、 高性能 9、 多线程 二、java的环境变量 JAVA_HOMEC:\Program Files\Java\jdk1.8.0_101 (到你的安装目录下) CLASSPASH./ &#xff0…

如何使用Quartz Scheduler和日志记录创建Web应用程序

我有时会在Quartz Scheduler论坛中为用户提供帮助。 有时,有人会问他/她如何在Web应用程序中设置Quartz。 实际上,这是一件相当简单的事情。 该库已经带有一个ServletContextListener ,您可以使用它启动调度程序。 我将在这里向您展示一个简单…

移动端日期选择插件rolldate

rolldate为上一版jquery移动端时间插件的全新版本,目前保留了上一版的大部分功能,并且增加了回调函数,以及主题风格选取,最重要的是解决了上一版本的遗留问题,依赖jquery、滑动不够流畅、参数设计不够合理等等。开发日…

ik分词器 mysql php_php环境下使用elasticSearch+ik分词器进行全文搜索

首先需要说明的一点是,如果需要启用ik分词器,那么分词器的版本必须与es版本一致,即6.3.0的分词器需要同样6.3.0版本的es支持。安装javawin-64bit的安装包需要去java英文官网查找安装ES6.3.0版本es下载地址:https://www.elastic.co…

服务器如何查看gpu型号,linux 查看服务器gpu

linux 查看服务器gpu 内容精选换一换本节操作介绍通过华为云APP连接Linux实例的操作步骤。云服务器状态为“运行中”。已获取Linux云服务器用户名和密码,忘记密码请参考在控制台重置云耀云服务器密码重置密码。云耀云服务器已经绑定弹性公网IP。所在安全组入方向已开…

Antd-Select组件的深入用法

一、Antd-Select提供几种类型 最基础版只提供下拉功能的选择器带搜索功能的下拉选择器可多选的下拉选择器可搜索、可多选、可随意输入内容的tag下拉选择器(支持自动分词)多级联动下拉选择器搜索远程数据下拉框二、一些潜在用法 如果Select.Option选项的数量特别大:2k、3k... 假…

WS-Security:使用BinarySecurityToken进行身份验证

众所周知,WS-Security设定的目标之一是对SOAP消息强制执行完整性和/或保密。 在完整性的情况下,添加到SOAP消息的签名是数学过程的结果,该过程涉及发送者的私钥,从而导致加密的消息摘要。 默认情况下,大多数框架&…

Vue(ES6)中的data属性为什么不能是一个对象?

以下引官网原文:当一个组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数&#xff…

echarts vue 柱状图实例_VUE中使用Echarts绘制柱状图

在main.js中引入echartsimport echarts from ‘echarts‘Vue.prototype.$echarts echarts在相应的vue中导入echartsimport echarts from ‘echarts‘;实现柱状图显示mounted: function () {// 基于准备好的dom,初始化echarts实例let myChart echarts.init(documen…

从计算机体系结构方面思考深度学习

今年 1 月,谷歌人工智能负责人 Jeff Dean(当时还是谷歌大脑负责人)与 2017 年图灵奖得主、体系结构巨擘 David Patterson(当时获奖结果尚未公布)联合发表了题为《计算机体系结构黄金时代:赋能机器学习革命》…

使用Apollo通过WebSocket通过STOMP轻松进行消息传递

在我以前的文章中,我介绍了几个有趣的用例,这些用例使用著名的消息代理HornetQ和ActiveMQ通过Websockects实现STOMP消息传递。 但是我没有介绍的是Apollo,因为我个人认为它的API是冗长的,并且不像Java开发人员那样表现力强。 尽管…