关于 Eclipse 的一场 “三角关系”

上个世纪 90 年代,世界上的计算机要么不联网,要么在企业内部联网。但是,在互联网的概念下,计算机之间共享信息和资源的需求成为了必要。

1995 年 5 月,Java 横空出世。Java 的父亲是当时凭借 Solaris 操作系统风头正盛的 SUN 公司。当时,大多数高级语言的程序在运行前需要根据不同的计算机进行编译,然后才能运行。Java 这种高级程序语言不需要与硬件相关的编译器,而是在运行时边解释边运行。如此一来,Java 程序就不受计算平台限制,正好满足了共享的需求。

可想而知,Java 的流行是个必然。但是,Eclipse 的大火却是大家没想到的。Java 好用,但相应的编译器却不好用。而且,当时的编译器少得可怜,一款开源且好用的 Java IDE Eclipse 打遍天下无敌手。

那时候,开源基金会也少得可怜。2004 年,Eclipse 成立基金会,摇身一变成为全球知名的开源基金会。再然后,随着 SUN 被 Oracle 收购,Oracle 又将 Java EE 捐赠给 Eclipse,它由此成为 Java 大本营的重要基石。

如今,Java 已被唱衰多年,多少新涌现的语言说要取代 Java。现在,开源基金会也像雨后春笋一般,Eclipse 基金会几经重大变化。还会有人对他们的故事感兴趣吗?

一段三角关系

如果不去特意追溯,任谁也想不到 Eclipse 开源基金会背后站着的是蓝色巨人 IBM。

IBM 一直是专利大户,多年来都是拥有专利最多的公司,甚至没有之一。他们养了一支庞大的知识产权律师团队,对侵犯专利者重拳出击。似乎,IBM 与开源天生绝缘。

但利益是永恒的。1996 年,IBM 收购了开发 Smalltalk 和 Java 集成开发环境 VisualAge 的 OIT(Object Technology International)。据说,当时 VisualAge 的代码价值 4000 万美元,IBM 眼都没眨就说要消除不兼容的开发环境这个市场痛点,要增加这些环境中通用组件的重用性。2001 年,一个天生为开发环境集成平台而设计的产品诞生了,它日后成为了整个 IBM 工具策略的基础。

IBM 给这个产品取名为 “Eclipse”,有 “日食” 的意思。很多人说这个是非常糟糕的名字,在此之前有 Eclipse 汽车,有 Eclipse 口香糖,还有 Eclipse 女子足球组。IBM 的律师也反对这个已经烂大街的名字。 

但 IBM 一意孤行。2001 年 11 月,IBM 用一个让人无法拒绝的价格从足球队手里购买了 eclipse.org 域名,非要用这个名字。更想不到的是,Eclipse 是开源的,IBM 为它建立了开放源代码许可和运营模式,不仅贡献大量源码、开发者,还有关于开源协议的法律咨询援助。

这是 IBM 最大胆的开源 “赌注”。

—— IT 咨询公司 Illuminata 分析师 James Governor

IBM 的开源决定是一次革命性的举措。那个时候,软件开源协作开发还是十分新颖的想法,Eclipse 的成功展示了开源模式的优势。

—— Eclipse 基金会执行董事 Mike Milinkovich

话说回来,这个名字多少带点针对 SUN(太阳)公司的意思。SUN 对此一直耿耿于怀,与此同时,Eclipse 展现了强大的能力,让 SUN 自带的编译器 NetBeans 黯然失色,逐渐成长为 Java IDE 的老大。

2004 年,Eclipse 正式宣告独立出来,成立 Eclipse 开源基金会,而且总部设立是在加拿大渥太华,不再依赖于创始者 IBM,而是转向行业,让其它技术供货商、甚至是 IBM 的对手加入 Eclipse 董事会,协助决定未来方向。

面对这一邀请,SUN 公司的第一反应是不。据知,在 Eclipse 基金会成立前夕,SUN 就在考量要不要加入,除了技术层面外,其中最主要的一个关注就是 Eclipse 这个名字。SUN 表示,如果基金会不同意改名字,他们就不准备加入。还有该公司高管也表示,不会加入一个名字中带有要消亡 SUN 公司的组织。

当时,业界普遍认为 IBM 独占 Eclipse 主导地位,想要推动自家的 Java 软件,这让 IBM 与 SUN 之间产生间隙。但那时,IBM 主管也曾驳斥传言,说取名 Eclispe 不是克制 SUN 的意思,请不要自作多情。

第三者微软,在 2005 年才浮出水面。2005 年 3 月 EclipseCon 大会的主题演讲中,IBM Rational 软件部门 CTO 兼设计、构建和测试工具副总裁的 Lee Nackman 表示,微软公司才是 IBM 想要 “吞噬” 的公司。

我们的目标是微软。微软是市场的领导者,并且正在成为主导市场的工具平台。显然,我们需要争夺更多的开发者群体。所以,在 1998 年左右,我们觉得应用服务器和中间件的竞争是关键,我们需要把开发者带回到基于 Java 的中间件上来。

2001 年初,IBM 看到 Visual Studio 和微软生态不断成长,非常困扰。我们决定与 Windows 和 Visual Studio 进行竞争。因此,Eclipse 的目标过去是,现在也是微软,而不是 SUN 公司。

好一出峰回路转的单箭头大戏,任谁都会说一句 IBM “不娶何撩”?但是,冷静想想,一切又似乎都有迹可循。

不谈 IBM 与微软那笔 DOS 操作系统的 “旧债”。21 世纪初,互联网爆发,依靠个人电脑崛起的微软如日中天,Windows 在手之外,它还要开发 C# 语言和 .Net 平台,要与 Java 一争高低。这在重仓 Java 的 IBM 眼里,可谓是 “旧债加新仇”。

2004 年 Eclipse 基金会成立,就有不少人猜测,这将有助于抵挡微软工具与 Windows-based 软件的竞争。要想增强竞争力,IBM 或者是 Eclipse 必须拿出更强势的产品。

然而,IBM、SUN 和微软之间的三角关系并没想象中那么简单。因为微软与 SUN 之间也曾有一段 “爱恨情仇”,这佐证了微软就是在打压 Java。

Java 一降生,SUN 就抱有通过 Java 实现跨操作系统平台的梦想,这让微软很是眼馋。1996 年,微软向 SUN 公司购买了 Java 的授权。但是,微软并没有依合同向用户提供用 Java 开发的产品,而是通过 SUN 的技术,搞自己的类似产品。

为此,SUN 把微软告上法庭。这场官司直到 2001 年才以 SUN 获得胜利告终,当时法院判定:微软误导 Java 开发者、阻碍他们开发兼容 Java 技术的产品,从而打压 Java。然而,此时微软的 ASP 已经获得了更大的市场占有率。

一滴时代的眼泪

战胜 Visual Studio 和微软生态那个点,Eclipse 曾经一度非常接近过。可惜,却无疾而终。在知乎相关问题中,排名第一的答案多少有点情怀向了。

的确,Eclipse IDE 是 Eclipse 基金会的第一个王牌项目。当年,Java 开发没有统一天下的 IDE,稀少又昂贵,Eclipse IDE 以开源和免费的姿态出现在大家面前,而且速度相对更快,又有 Google 支持,还在各种教科书中备受推崇,让不少人如获至宝,口碑极盛。

下面这两张图, Eclipse 基金会执行董事 Mike Milinkovich 在多个演讲中都拿出来过,以佐证 Eclipse IDE 曾经一骑绝尘:

转折点出现在 2014 年 Eclipse 4.4 Luna 的发行。如果说之前的 Eclipse IDE 瑕不掩瑜,那么后几年中发展中,它的弊端就渐渐显现出来了。曾有一篇唱衰 Eclipse 的文章直指这一版本:

如果说有一个时间点,标志着 Eclipse 的死亡,那这个时间点一定是 Eclipse 4 的发布。在 Eclipse 3.x 时代,Eclipse 做的很不错,统治着所有开发工具。但是突然间,好像他们决定要亲手终结自己的生命,他们改写了所有 UI 代码。

在 3.x 时代,Eclipse 是一个速度非常快的 IDE,每一次 Release,它都添加了各种实用的功能。而 Eclipse 4,一切都变了,运行速度变慢,UI 错误不断,而且还很丑陋。好像 Eclipse 一下退步了好几年。

有些人将原因归结于 Eclipse 不再看重 IDE 产品,而更乐忠于推广 Eclipse 基金会;也有人认为 Intellij 才是 Eclipse 式微的真正元凶:“每一次在使用 Eclipse 的时候,你都会感到,你还在使用它的唯一原因,就是太穷,买不起 Intellij。”

此前,2013 年 6 月的 Google I/O 大会上,Google 推出新的 Android IDE “Android Studio”。本来,是与 Eclipse 合作开发;随后,谷歌 “反水”,投身 IntelliJ,打造出今天的 Android Studio。由此,这次大会上的 “Android Studio”,最大的转变就是从 Eclipse 切换到了 IntelliJ IDEA。

2013 年~ 2014 年,似乎成为了 Eclipse 及其基金会的分水岭。资料显示,2012~2014 年 Eclipse 基金会出于财务亏损状态。

旋即,2015 年 6 月,Google 重点决定建设 Android Studio,并宣布在年底停止支持其他集成开发环境,比如 Eclipse。8 月,Eclipse 基金会开始向个人或组织寻求捐助来为它的开源项目提供资金。

与此同时,Eclipse 基金会也表示,初期他们的重点放在改进核心 Eclipse 平台、JDT 和 Web 工具,未来会扩展到更多项目。这是一个转型的信号。

如今,据 2022 年 5 月份的数据来看,Eclipse IDE 依旧占据在榜单第二的位置,受到了 14.21% 份额的关注度,似乎并没有像别人所鼓吹的那般滑落神坛。

https://pypl.github.io/IDE.html

但是,他们似乎已经放弃了追赶微软的计划。在 2021 年的年度报告中,他们的战略目标包括:传达 Eclipse 基金会的差异化价值主张、将 Eclipse 基金会建立为卓越的欧洲 OSS 组织、培育新兴技术的项目和工作组等等。

要知道,曾经十余年中,他们的年度报告战略位置,排在第一的永远都是 “成为首选开发者平台” 这样类似的表述。

一场失败的谈判

2018 年是 Java 社区发生重大变化的一年,因为企业 Java 的管理权从 Oracle 和 Java Community Process (JCP) 手中被转移到了 Eclipse 基金会。有必要提一嘴的是,之所以是 Oracle,是因为 SUN 在 2010 年被它收购了。

Mike Milinkovich 在一场采访中如此表述这项转移:

我们绝对欢迎 Java EE 加入 Eclipse 基金会。虽然这是一项繁重的工作,但 Eclipse 基金会在 Java 社区和企业中有着深厚的根基。

我们觉得这是天作之合,也是我们的绝佳机会。除此之外,我认为 Jakarta EE 会促使许多开发人员最终认识到 Eclipse 基金会还有我们的 Java IDE 以外的项目。

很明显,在 Eclipse 基金会看来这是一件好事,这巩固了 Eclipse 基金会在 Java 世界中的重要地位。但不知道大家发现一个 “华点” 没有,转移后的 Java EE 被改名为 Jakarta EE 了。这缘于一次失败的谈判

简单来说,Oracle 捐赠 Java EE 给 Eclipse 基金会有几个条件:

1)Eclipse 基金会发行的产品(如 Eclipse IDE)必须只能捆绑由 Oracle 认证(而不是任何其他供应商认证)的 Java 运行。这一条会损坏了该基金会 “供应商中立” 的立场。

2)Oracle 要求 Eclipse 基金会不能修改旧的代码,如需修改则要重命名,包括项目名称和软件包的名称。这意味着现有的应用程序无法在没有重构和重新编辑的情况下运行在更新后的平台上。

有点霸王条款的意思的了。不少人在当时劝 Oracle 允许 Eclipse 基金会继续使用 Java 的名字,毕竟 Java EE 之前就是从 J2EE 改名过来的,频繁地改名会造成使用者的困扰,导致市场混乱。

但 Oracle 没有让步。在长达数月的谈判之后,两者最后达成的共识是:Jakarta EE 不能发布针对基础库 javax 的修改包,Jakarta EE 规范也不能使用包括 Java 商标的现有规范名称。

因此,有人担忧 Oracle 会在一定程度上杀死 Java EE。但最重要的是,这凸显了开源基金会在大企业面前的弱势地位。

一次搬家的背后

2020 年 5 月,Eclipse 基金会宣布将总部搬往欧洲的比利时布鲁塞尔。

在计划中,2020 年 7 月这一搬迁就要完成。届时,Eclipse 基金会将在比利时、加拿大和美国设立总部,但其官方总部将设在欧洲。而 Eclipse 和 Eclipse Foundation 的名称、商标和品牌将由新的比利时实体控制。而且,未来 Eclipse 基金会的会费以欧元计价。

除此之外,Eclipse 基金会还正在建立一个基于 GitLab 的新平台,托管在欧洲的服务器上。

这让人不得不联想到 2019 年的微软收购 GitHub 事件。当时,微软 —— 这个 Eclipse 的宿敌正在史无前例地加大对开源的支持力度。这让 Mike Milinkovich 感到担忧:

微软正在走向另一种形式上的完全垄断,可能危及包括 Eclipse IDE 等在内的其它公司和项目。GitHub + VS Code 的组合已经非常流行,这种单一性文化会引发忧虑。 

当然,我们也不能将 Eclipse 基金会的这次搬家归结于微软,这次行动的确有战略上的必要性:

首先,Eclipse 基金会有三分之二的提交者位于欧洲国家。Mike Milinkovich 表示, Eclipse 基金会已经是欧洲最大的开源组织;

其次,Mike Milinkovich 认为欧洲越来越重视开源和开发的价值,而且尽管欧洲有一些开源组织,但它们主要坚持单一项目,并没有托管数百个项目这样体量的开源基金会。这对 Eclipse 基金会是个机会,让它建立起一个真正的全球开源机构。

我们(Eclipse Foundation)在美国的工作多少有些局限了自己。在美国,我们的确和一定数量的研究实验室和政府机构和合作,一些美国资助的研究机构也和我们有联系。

然而,在我看来,欧洲在政策层面上是要比美国先进的,欧洲的研究机构更加愿意从外部去拥抱开源。近来,欧洲越来越倾向于使用开源的方法来达成研究成果的发表和传播。多年来,他们一直鼓励研究者或者开发者建立社区。

—— Mike Milinkovich

结语:物是人非,分久必合。

日转星移。IBM/Eclipse、SUN 和微软之间的爱恨情仇,似乎已经随风飘散了。

2010 年,SUN 公司被 Oracle 公司收购。2018 年那场与 Oracle 谈判虽然失败,但那早已与 SUN 无关了。Eclipse 拿到了 Java EE,进一步巩固了自己在 Java 社区中的权威。

2021 年 8 月,微软宣布
将成为 Eclipse 基金会的战略成员,并且加入其董事会。

其实,早在 2016 年,微软就以解决方案成员的身份加入了 Eclipse 基金会,并在当时提供了一套开发工具和服务。现在,两者之间的合作更加紧密了。微软盛赞 Eclipse 基金会:

1)Eclipse 基金会在供应商中立治理、基础设施、营销、社区建设和开发人员倡导工作方面拥有深厚的专业知识。

2)Eclipse 基金会仍然是 Java 生态系统的重要基石,与 Java 社区的核心部分有着密切的联系。

3)Eclipse 基金会正在通过工作组扩大其作用,其中许多工作组对 Microsoft 及其合作伙伴很重要。

果然啊,三十年河东,三十年河西。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go初识iris框架(二) - get,post请求和数据格式

继初步了解iris后 文章目录 获取url路径获取数据get请求post请求获取JSON数据格式JSON返回值获取XML数据格式XML返回值 获取url路径 package mainimport "github.com/kataras/iris/v12"func main(){app : iris.New()app.Get("/hello",func(ctx iris.Conte…

Vue 安装 Vue-router 路由安装以及使用

vue-router 是 Vue 的一个插件库,适用于构建单页面应用。 单页面应用:整个应用中只有一个完整的页面,切换页面就是替换页面中的内容。 工作原理:当浏览器的路径发生改变时,路由器会自动显示路径所对应的组件。 嵌套…

Redis的数据淘汰策略了解吗?

面试官:Redis数据淘汰策略了解吗? 我:知道。嗯~~ 当Redis中的内存不够用时,此时再向Redis中添加新的key,Redis就会按照某种规则将内存中的数据删除掉。这种数据的删除规则被称为内存的淘汰策略。 面试官:…

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景: 最近在发布一个web项目,在测试环境都是可以的,发布到生产环境通过IP访问也是可以的,但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通,域名却不行&…

C#List转IList方法

最近工作中使用到了C#的List和IList。 这里参考百度上的资料&#xff0c;总结一下。 IList使用命名空间&#xff1a; using System.Collections; List<T>类:表示可通过索引访问的对象的强类型列表&#xff0c;提供用于对列表进行搜索、排序和操作的方法。 IList<T&…

3.10 Bootstrap 标签

文章目录 Bootstrap 标签标签 Bootstrap 标签 下面将讲解 Bootstrap 标签。标签可用于计数、提示或页面上其他的标记显示。使用 class .label 来显示标签&#xff0c;如下面的实例所示&#xff1a; <span class"label label-default">Label</span></…

Docker 应用容器引擎 (一)

Docker 应用容器引擎 Docker是什么 是一个开源的应用容器引擎&#xff0c;基于GO语言开发并遵循了apache2.0协议开源 是在linux容器里运行应用的开源工具 是一种轻量级的“虚拟机” Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的…

23款奔驰S400豪华型升级4D旋转高音,提升车内氛围

奔驰加装4D旋转高音&#xff0c;让高音“有型有色”,高端4D环绕立体声音响系统的视觉效果同样令人印象深刻&#xff1a;系统启动时&#xff0c;安装在前车门后视镜三角板中的两个高音头会与同色车内氛围灯一块亮起&#xff0c;同时向外旋出10mm至最佳效果位置&#xff0c;以提高…

阿里云声音复刻

阿里云声音复刻 个性化人声定制 阿里云个性化人声定制是智能语音交互产品自学习平台下的一部分 使用方式&#xff1a;https://help.aliyun.com/document_detail/456006.html 方式一&#xff1a;控制台界面定制使用方式 方式二&#xff1a;通过OpenAPI定制&#xff1a;在该页…

matplotlib从起点出发(1)_Tutorial_1

0 系列简介 这个系列&#xff0c;小白从起点出发开始整理matplotlib库的基本使用及相关技巧。小白的主要思路是沿着官网的tutorials先学习matplotlib的基础功能&#xff0c;然后针对官网总结的Cheat Sheets及其中的知识点查漏补缺。作为一个工具库&#xff0c;小白认为只要能够…

NodeJS实现支付宝沙箱支付②③

文章目录 前言版权声明Alipay SDK 沙箱环境简介Node环境要求沙箱环境配置下载所需模块准备前端静态页面以及Node服务器文件夹规范AlipaySdk 配置准备AlipaySdk 代码演示 Alipay实例化 ~ alipay.sdk 文件 AlipayForm ~ alipayForm文件 AlipayFormStatus ~ alipayForm文件 …

长城汽车Hi4技术品牌成果初现,大象转身必将势不可挡

今年1-6月&#xff0c;长城汽车销售52万辆&#xff0c;新能源车型销售9.3万辆&#xff0c;同比增长47%&#xff1b;智能新能源新产品密集上市&#xff0c;新能源销量与占比逐月攀升&#xff0c;6月销售超2.6万辆&#xff0c;占比突破25%&#xff0c;皆创历史新高&#xff1b; 全…

智慧数据驱动:基于smardaten构建多维数据可视化大屏

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【uni-app】常用图标、头像汇总

在做小程序的时候&#xff0c;有时候需要各种图标和头像素材&#xff0c;而百度一堆基本都是收费的。所以&#xff0c;整理一些免费好用的图标&#xff0c;头像库&#xff1a; 1、iconfont-阿里巴巴矢量图标库 基本上常用的矢量图标&#xff0c;在这儿都有&#xff0c;而且可…

【极简 亲测】已拦截跨源请求:同源策略禁止读取位于....的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)

CORS是Cross-Origin Resource Sharing。 解决 首先这个是浏览器层面的拦截。下面的方法都是解除浏览器拦截的方式。 解除了之后还是有可能其他方面有问题的&#xff0c;但是那个会提示其他错误。 比如CORs Failed之类的&#xff0c;这个是没收到response&#xff0c;大概率是…

【go】xorm分类统计及多表联查

文章目录 1 分类统计2 多表联查 1 分类统计 1 sql SELECT grade_protection_level AS type, count(grade_protection_level) AS count FROM vital_7jvebmrryff3_asset WHERE (field_group 应用信息)AND (asset_life_cycle 正式)AND (status 1) GROUP BY grade_protection…

微服务系列文章 之SpringBoot之定时任务详解

序言 使用SpringBoot创建定时任务非常简单&#xff0c;目前主要有以下三种创建方式&#xff1a; 一、基于注解(Scheduled)二、基于接口&#xff08;SchedulingConfigurer&#xff09; 前者相信大家都很熟悉&#xff0c;但是实际使用中我们往往想从数据库中读取指定时间来动态…

实现 Rollup 插件alias 并使用vitest提高开发效率

本篇文章是对 实现 Rollup 插件 alias | 使用 TypeScript 实现库的基本流程 | 使用单元测试提高开发效率 的总结。其中涉及到开发一个组件库的诸多知识点。 实现一个经常用的 rollup 插件 alias 首先执行npm init命令初始化一个package.json文件&#xff0c;因为插件使用了ty…

【ARM Cortex-M 系列 1 -- Cortex-M0, M3, M4, M7, M33 差异】

文章目录 Cortex-M 系列介绍Cortex-M0/M0 介绍Cortex-M3/M4 介绍Cortex-M7 介绍Cotex-M33 介绍 下篇文章&#xff1a;ARM Cortex-M 系列 2 – CPU 之 Cortex-M7 介绍 Cortex-M 系列介绍 Cortex-M0/M0 介绍 Cortex-M0 是 ARM 公司推出的一款微控制器&#xff08;MCU&#xff0…

AIGC之文本内容生成概述(下)——Transformer

在上一篇文章中&#xff0c;我们一口气介绍了LSTM、Word2Vec、GloVe、ELMo等四种模型的技术发展&#xff0c;以及每种模型的优缺点与应用场景&#xff0c;全文超过一万字&#xff0c;显得冗长且繁杂&#xff0c;在下文部分我们将分开介绍Transformer、BERT、GPT1/GPT2/GPT3/Cha…