RIP GlassFish –感谢所有的鱼。

我们都听说过它的到来。 昨天,JavaEE和GlassFish的官方路线图更新已发布 。 从标题开始,整个帖子基本上都是关于一件事的:今天我们知道的GlassFish Server已从完整的产品转为玩具产品。

从Sun到Oracle的漫长道路

从一开始,GlassFish就值得担心。 合并后,花了一些时间使坚持“甲骨文杀死GlassFish”的声音保持沉默。 甲骨文在培养社区并将他们的东西保持在一起方面做得不错。 我自己写了两个博客,以帮助大家了解。 为期100天的发行版2.1.2和3.0.1已成为证明改进意愿的里程碑。 一段时间后,我们都对此感到满意。 甚至早在2013年1月,我就整理了一份开源应用服务器列表,并选择了其中一个。 最终标准是供应商支持。 这将WAS CE踢出了游戏。 从昨天开始,它还将删除GlassFish。 剩下的两个替代方案变成了一个:JBoss AS7 / WildFly。

客户需要对其服务器的支持

但是,来吧,这是什么问题? 谁想要支持? 甲骨文显然没有从商业许可证中赚到足够的钱,否则他们根本不会杀死该产品。 这可能不是很明显的原因,但我可以提供某种解释。 首先,如果供应商不仅在开发开源替代方案,而且还提供商业产品,那么将导致不同的事情,这些事情将被隐式地处理:

  • 客户发现的变更/错误进入oss版本
  • 变化需要具有体面的品质。 知道需要支持其解决方案的开发人员将(至少在一点点上)更加谨慎地实施工作。
  • 知道自己的东西在适当的负载下运行的开发人员会不同地实现它。 非功能性标准的完整列表随此移动而变化。
  • 客户需要更频繁的发行版和安全补丁,这些发行版和安全补丁也最终出现在oss版本中。
  • 与使用免费和开源服务器的客户相比,客户有不同的要求。 一个突出的例子是集群。 在OSS项目中很少使用。

另一个因素是经验。 我绝不会尝试在与生产环境完全不同的环境下开发项目。 即使WLS和GF都至少了解彼此的部署描述符,这里也存在着很高的风险,即这种设置是通往麻烦的道路。

我的论点基本上是,通过更改产品的一些相关非功能要求,提供商业分销的需求可以提高整体质量和可靠性。 如果不在那里,那么没人会照顾他们……他们将不会在那里。

为什么Java EE会死于GlassFish?

Java EE TCK的质量受到了很多质疑。 过去,许多人将GF用作不工作代码的展示。 最重要的是,某些生产场景和错误会导致不同的实现方式,最后但并非最不重要的是规格。 所有实际的现场知识都掌握在团队中。 我不知道Oracle在内部如何运行WLS开发,但我希望它与团队为GF做的工作有所不同,可能会更重。 从基于WLS的客户案例中提取规范边缘案例并删除产品特定零件肯定会比较棘手,而且不会经常发生。 因此,我希望规范在某种程度上不会受到Oracle驱动,而通常不会那么成熟。 这不是故事中最糟糕的部分。 但是考虑到在这一领域有一些非常聪明的人正在工作,我希望他们的激情和知识会被很多人遗漏。 而且没有人在那里赶上他们的下落。

GlassFish的哪一部分会死?

因此,GlassFish将保留即将发布的Java EE标准的参考实现。 出于这一原因,Oracle需要它在周围。 随着新兴的JCP越来越开放,他们不仅仅将WLS定义为RI也就不足为奇了。 但这将是将要死亡的事物和即将发生的事物之间的切入点。 我在这里没有任何见解,我只是在推测,我可以对这个博客上的第一条评论做出有根据的猜测,但是对我来说,最重要的是,Java EE规范未涵盖的所有内容都是很快就会老化。 这可能包括群集,并且可以肯定的是,某些管理功能和安全性也是不错的选择(PAM领域和其他)。 坦率地说,我无法确认其中任何一个。 纯粹是猜测!

这有什么好处吗?

好吧,是的:此举为加强竞争留下了广阔的空间。 这不仅是WildFly,而且肯定是TomEE和tomitribe。 恭喜他们。 进一步,许多客户将节省大量许可费用。 GF和WLS的许可不同,使用WLS标准为客户提供了选择正确许可的更多选择。 至少WLS团队将得到加强,而那些不必在不同产品上频繁工作的人不再需要改头换面。

甲骨文可以做些什么使之值得吗?

到今天为止,这已经是毫无意义的死亡。 用户可以简单地坐下来等待下一个次要版本的发布,该次发布可能每年一次。 如果您一直抱怨直到今天发布的频率不高,请准备以后再做。 实际上,甲骨文可以采取以下几项措施来使每个人(不仅限于他们自己)成为战略行动:

  1. 开发并支持明确的升级路径。 找到一种方法至少支持基于非常轻量级服务器的开发设置,并且仅在生产中部署到完全成熟的WLS。 鉴于给定的功能和两者之间的差异,到目前为止,这几乎不是一个可行的故事。
  2. 为GF用户提供有吸引力的许可产品。 不仅对于今天的客户而言,对所有人而言。 甚至更好:在OTN许可证中提出一系列许可条款,使NPO可以免费使用WLS。
  3. 因此,开源GF(获得了体面的许可)并吸引了社区的贡献。 到目前为止,使用的基础架构和OCA使得这一切成为不可能。 将服务器代码(包括模块)移至GitHub并任命一名变更经理,负责审查并提取建议的修订和变更。 让社区决定发布。

回声在大厅里消失了

基本上,这个消息并不令人惊讶。 我们都知道这一举动。 有两个服务器而不是一个是双重负担。 通过BEA合并,甲骨文杀死了自己的应用服务器。 现在轮到GlassFish了。 Oracle已经尝试通过合并团队来减少维护它所需的精力,并且还讨论了将WLS合并到HK2或扩展两台服务器使用相同组件的不同选择。 发生了一些事情,将昨天宣布的时间推迟了几个月,但最终没有阻止它。 所以。 RIP GlassFish。 很不错。 感谢所有的鱼。

参考: RIP GlassFish –感谢所有的鱼。 来自我们的JCG合作伙伴 Markus Eisele在Java的企业软件开发博客中。

翻译自: https://www.javacodegeeks.com/2013/11/r-i-p-glassfish-thanks-for-all-the-fish.html

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

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

相关文章

Nuxt中如何使用Vuex-Store异步获取数据

Nuxt是一个基于Vue.js的通用型框架,它集成了使用Vue开发的绝大数组件/框架。 长话短说如何在Vuex-store中获取异步数据呢? 在Nuxt中由于集合了Vuex还有其他的一些配置,大大的方便了我们使用Vuex;在Nuxt官方文档中写到:…

Struts2面试问答

Struts2是用Java开发Web应用程序的著名框架之一。 最近,我写了很多Struts2教程 ,在这篇文章中,我列出了一些重要的Struts2面试问题以及答案,以帮助您进行面试。 什么是Struts2? Struts1和Struts2之间有什么区别&…

php怎么改标题,PHP – 如何更改包含header.php的页面标题?

扩展Dainis Abols答案,以及关于输出处理的问题,考虑以下&#xff1a;你的header.php标题标签设置为< title>&#xff05;TITLE&#xff05;< / title&gt ;;“&#xff05;”很重要,因为几乎没有人输入&#xff05;TITLE&#xff05;所以你可以在以后使用str_repla…

基于canvas的骨骼动画

最近学习到了一种关于canvas的骨骼动画&#xff0c;听这个名字就知道他和canvas之前的动画不同&#xff0c;不知道你有没有兴趣了解一下呢&#xff1f;关于骨骼动画最初是无意间在腾讯团队上看到的&#xff0c;但是由于他官网的教程是在是少之又少&#xff0c;也就仅有一个小de…

Python APSchedule安装使用与源码分析

我们的项目中用apschedule作为核心定时调度模块。所以对apschedule进行了一些调查和源码级的分析。 1、为什么选择apschedule&#xff1f; 听信了一句话&#xff0c;apschedule之于python就像是quartz之于java。实际用起来还是不错的。 2、安装 # pip安装方式 $ pip install ap…

短信验证登录实现流程

以手机号码为参数调用后台接口发送登录验证码&#xff0c;注意同一号码发送短信的时间间隔和每日次数阈值后台接口按规则要求生成验证码将手机号码(Key)和验证码(Value)存入服务器缓存&#xff0c;同时设置缓存有效时间将验证码填充短信模板作为短信内容&#xff0c;调用第三方…

NetBeans 7.4的本机Java打包

成为“ NetBeans 74 NewAndNoteworthy ”页面的NetBeans 7.4的新功能之一是“本机打包 ”&#xff0c;在该页面上被描述为“ JavaSE项目现在支持使用JavaFX提供的本机打包技术来创建本机包。 ” 我将使用一个非常简单的示例来演示NetBeans 7.4中的本机打包功能。 下一个代码清…

基于Vue开发一个日历组件

最近在做一个类似课程表的需求&#xff0c;需要自制一个日历来支持功能及展现&#xff0c;就顺便研究一下应该怎么开发日历组件。 更新 2.23修复了2026年2月份会渲染多一行的bug&#xff0c;谢谢深蓝一人童鞋提出的bug&#xff0c;解决方案是给二月份的日历做特殊处理&#xf…

php 打开word乱码怎么办,如何解决php word 乱码问题

php word乱码的解决办法&#xff1a;首先打开“/Writer/Word2007/Base.php”文件&#xff1b;然后添加“$objWriter->writeAttribute(‘w:eastAsia’, $font)”内容&#xff1b;最后保存修改即可。PHPword解决中文乱码一、增加东亚字体支持打开并编辑路径/Writer/Word2007/B…

MySQL5.7本地首次登录win10报错修改

1、打开MySQL目录下的my.ini文件&#xff0c;在文件的最后添加一行“skip-grant-tables”&#xff0c;保存并关闭文件。&#xff08;Win10默认安装&#xff0c;my.ini在C:\ProgramData\MySQL\MySQL Server 5.7&#xff09; 2、重启MySQL57和MySQL Router服务。 3、通过命令行窗…

Python-函数的参数

Python定义函数非常简单&#xff0c;而且具有很高的灵活度。函数的参数传递方式多种多样。需要记忆和理解。 1.位置参数&#xff1a; 举例&#xff0c; def power(x): return x * x power&#xff08;x&#xff09;函数中&#xff0c;x就是一个位置参数。调用时&#xff0c;必须…

Java开发人员访谈的MindMap

多年来&#xff0c;我曾在许多Java开发人员访谈中担任小组成员。 之前&#xff0c;我曾写过一篇标题为“成功进行软件工程师技术面试的7大技巧”的文章&#xff0c;其中涵盖了很少的一般准则。 在本文中&#xff0c;我将分享一个思维导图&#xff0c;其中包含Java开发人员访谈中…

php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法

首先打开文件&#xff1a; /member/resetpassword.php 这是织梦会员找回密码的核心文件&#xff01;在148行有这么一句&#xff1a; showmsg(对不起&#xff0c;临时密码错误, -1); 看来问题就在这了&#xff01; 但是怎么引起的呢&#xff0c;别急继续看代码从125行往下看&a…

送给大家一个好看的简历神器

很多人看到里边有好看的东西就习惯性的点进来看看&#xff0c;还一边点一边想 —— 好看的简历我见多了&#xff0c;你这个又能好看到哪里去。我想差不多可以&#xff1a; 哪里吧因为最近有在准备简历&#xff0c;就习惯性的找一找有没有现成的简历模板。结果全是付费的&#x…

PHP简单实现单点登录功能示例

1.准备两个虚拟域名 127.0.0.1 www.openpoor.com127.0.0.1 www.myspace.com 2.在openpoor的根目录下创建以下文件 index.PHP 123456789101112131415161718<?phpsession_start();?><!DOCTYPE html><html><head><meta charset"UTF-8"/&…

JUNG 计算图属性,中心度,偏心率,直径,半径

本文介绍利用Java的第三方API JUNG 计算图中&#xff1a; closeness centrality&#xff1b;// 图中某节点的 接近中心性/亲密中心性 betweenness centrality&#xff1b;// 图中某节点的 中介中心性/介数中心性 distance; // 图中两节点的最短距离 eccentricity; // 图中某节…

Java VM –提防YoungGen空间

您可能从我们以前的面向性能的文章中看到&#xff0c;健康的JVM是实现最佳应用程序性能和稳定性的最重要目标之一。 这样的健康评估通常仅关注主要收集的频率&#xff08;避免&#xff09;或检测内存泄漏的存在。 年轻一代空间或短寿命物体的大小和足迹如何&#xff1f; 本文…

小程序绘图工具painter-json文件绘制保存分享图-可点击任意元素触发函数

Painter是由酷家乐移动前端团队打造的一款小程序绘图组件。 原项目地址&#xff1a;https://github.com/Kujiale-Mobile/Painter 新版地址&#xff1a;https://github.com/shesw/Painter 这款交互版原来是为了针对业务中的新需求而由我自己开发的&#xff0c;后来需求改动&a…

sweetalert php,SweetAlert插件

用户#姓名操作{% for user in all_user %}{{ forloop.counter }}{{ user.username }}编辑删除{% endfor %}var _thisthis;swal({title:"你确定要删除吗&#xff1f;",text:"删除可就找不回来了哦&#xff01;",type:"warning",showCancelButton:…

python集合以及编码初识

一.集合 set 集合是无序的,天然能去重,是可变的.例:s {1,2,3,4,5}   1 s {} 2 s1 {1} 3 print(type(s)) # 空{}就是字典 4 print(type(s1)) #集合 集合的基本操作: 1.增 s {1,2,3,22,,ss,(3,4)} s.add(元素) s.update(alex) #迭代添加 alex会被分割添加 2.删 s…