`

另一只眼看Eclipse,所谓的开源

阅读更多
但凡有Java开发经验的同学,对Eclipse肯定不会陌生。出身名门IBM、精心设计的架构、强大的Community支持、Open Source、等等,这些数不尽的好处让Eclipse在短短几年之内横扫Java IDE领域,获奖无数,更是赢得了广大开发人员的尊重与爱戴。我自己就是和还算有经验的Java程序员,对Eclipse也算是比较熟悉。从Eclipse 2.1开始就一直密切关注着,不单单是使用,自己也做过Plug-in的开发,我想应该算有资格对Eclipse说两句。但是遗憾的是我要对Eclipse泼冷水了,虽然我打心眼儿里喜欢它,可这些话我还是要说。

仅仅从IDE的使用者角度上讲,Eclipse可以算是最接近完美的。虽然在其2.13.0版本上,会有狂吃内存、容易死机等缺点,但是到了如今稳定发布的3.1.x版本,这种现象已经很少,在即将发布的3.2版本中,还提供了手工激活垃圾回收的功能,我之前在Weblogic workshop中使用过这种功能,觉得是很实用的。

我今天的话主要是作为一个Eclipse Plug-in & RCP开发者而说的。Eclipse号称是一个开放的平台,任何人可以对其进行任何方面的扩展,这就是我们现在看到的成百上千的Plug-in;同时,Eclipse也允许用户裁减掉除核心模块外的任意组件,来构建自己的应用,这就是RCP。然而,这看似完美的flexibility后面隐藏着一些问题和不为人所知的秘密。

Eclipse Plug-in & RCP Development最大的问题就是版本不兼容性,在任意一个版本中开发的Plug-in都无法保证能在其他版本中正确运行。因此我们会发现,即使像MyEclipseSWT-Designer这样的商业Plug-in也摆脱不了版本的噩梦,它们不得不为2.13.03.1以及即将发布的3.2版本单独维护相应版本的Plug-in。同样的事情还发生在Plug-in之间的依赖上,如果一个Plug-in对其它一些Plug-in有所以来,那么必须保证使用了正确的版本,而其它Plug-in并不保证会版本兼容。所以想象一下,同学A很辛苦的写了一个以来于GEF的图形建模插件,花去了他6个月的时间,当他很高兴的宣布终于可以release的时候,他发现GEF有了新的版本,且与之前的版本不兼容。GEFEclipse的官方项目,同时Eclipse也推出了基于新GEF的官方Plug-in(不是图形建模),那么当同学B想同时使用同学APlug-inEclipse的官方Plug-in时,他应该怎么做?把这个scenario放到一个商业Plug-in中去,可以想象会有多痛苦。

然而这还不是最大的问题,真正让我决心写这片文章的并不是版本兼容性的不尽如人意,而是Eclipse背后隐藏的一些不为人知的秘密。之所以加引号是因为它并不是真正的机密,而是各位Eclipse的狂热追逐者没有看到的地方。

前一段时间,我参加了一个Eclipse官方项目JWT的建设与讨论,因此可以更深入的探究Eclipse Community内部的一些东东。为了技术准备,我开始在EMFGEFGMF三个newsgroup上发贴,提问,并很据自己尝试使用的经验说出自己的感受。我以一个Eclipse爱好者和开发者的身份问了许多问题,得到了许多帮助,这些我不会省略。EMFEclipse Modeling FrameworkGEFGraphical Editing FrameworkGEFGraphical Modeling Framework,大家可以看出,它们都跟建模和图形操作有关,实际上,GMF还以来于EMFGEF。这种依赖和重叠在Eclipse Community中比比皆是,所以我的问题是为什么不把它们做成一个项目。如果把这个问题退一步想,OK,现在是三个项目,那么它们可以无缝的交互衔接吗?答案是NO!这令我很惊讶,因为我觉得Eclipse作为一个设计如此之精巧的Platform理应有一个在后台一致的meta model,这也是.NET的做法。因此我在newsgroup上发贴说.NET有一致的meta model,就可以无缝的交互,为什么在Eclipse里面没有,为什么不设计一个,然后改变现在Eclipse及其Plug-in

然后,令我伤心的事情发生了,我的Gmail收到了一封匿名信,信中充满了羞辱和漫骂。我很震惊,我从没想过会发生这样的事情。在我心中,Eclipse Community即使不算是氛围最好,也至少是个风气健康的地方。这封Email极大的打击了我对Eclipse Community的积极性,然而,随后的另一封Email却改变了我对Eclipse Community和整个Open Source的看法。那是在辱骂信的第二天,一位好心的Eclipse员工写Email,他告诉我,Eclipse本身,包括其重要的官方项目如EMFGEF都在被一些大客户所以来,因此虽然你的建议是正确的,我们也无法作出任何改动。

就在那个时候,我明白了,所谓的Open Source,只是我们这些人的一厢情愿罢了。开源开源,开源并不仅仅是src-opened,当一个开源项目的代码积累的一定程度时,开放源代码其实没有任何意义,因为没有外人会读得懂它。我想,像MyEclipse这样以Plug-in为生的企业,一定花了不少钱在请Eclipse的人来培训和支持上面。开源更重要的是dev-opened,也就是说,左右开源项目发展方向的应该是任何一个参与开源项目的人的合理的、正确的idea,而不是依赖项目的客户。IBM现在的做法是把Eclipse的源代码开发出去,借此吸引广大的程序员为其免费开发Plug-in,而一些核心的东西,永远掌握在那么几个big fellow手中,他人无法触及。这就像一出滑稽的木偶戏,我们都是IBM手中的玩偶。

当我想到这些的时候,我开始问自己,世界上有真正的开源么?在当今的社会里,没有什么是永恒,只有商业价值,当我们再一次高呼开源的时候,是否应该想想自己是不是太疯狂了?


后记:这就是激起我学习.NET的直接原因。我关注.NET的有一阵子了,也告诉自己一定要学习.NET,然而无论怎样,这件事情算是导火索。
分享到:
评论
1 楼 yeshaoting 2010-11-28  
顶~~顶~~顶~~

相关推荐

    基于Eclipse的开源框架技术与实战 源代码

    《基于Eclipse的开源框架技术与实战》源代码是一份涵盖了多章节的编程学习资源,主要针对使用Eclipse集成开发环境进行开源框架的应用和技术实践。由于文件量较大,该资源被分成了三个部分进行上传,其中包括了从第2...

    基于Eclipse的开源框架技术与实战3(cd).rar

    【标题】:“基于Eclipse的开源框架技术与实战3(cd).rar”指的是一个关于使用Eclipse开发和应用开源框架的教程资源,这个资源可能是系列教程的第三部分,主要聚焦于实践操作。 【描述】:“基于Eclipse的开源框架...

    eclipse xml 开源 插件

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),主要用于Java编程,但它也支持其他语言,如XML。XML(可扩展标记语言)在软件开发中扮演着重要的角色,特别是在数据交换、配置文件和文档生成等方面。为了更好地在...

    一个开源的Eclipse rcp 项目Dengues

    Dengues Studio是由一群对Eclipse开发技术狂热的在职人员开发而成的JAVA 开源项目, 该项目基于Eclipse plug-ins技术,充分运用SWT/JFace/OSGI/EMF/GMF/GEF/JET等ECLIPSE核心技术进行开发,力图实现数据库的ETL功能,...

    基于Eclipse的开源框架技术与实战 源代码第18-21章

    在本资源中,“基于Eclipse的开源框架技术与实战 源代码第18-21章”提供了关于使用Eclipse开发和应用开源框架的实践经验。这个资料主要涵盖了四个章节的内容,分别是第18章至第21章,旨在帮助开发者深入理解并熟练...

    开源软件--Eclipse详析

    Eclipse 开源软件详析 Eclipse 是一种可扩展的开放源代码 IDE,自 2001 年 11 月由 IBM 公司捐出价值 4,000 万美元的源代码组建了 Eclipse 联盟,并由该联盟负责该工具的后续开发。Eclipse 允许在同一 IDE 中集成...

    Eclipse 开源项目 mywork 源代码

    Eclipse开源项目mywork是一个基于Java的开发平台,包含了多个模块化的工具和应用程序,旨在提供一个集成化的开发环境。这个项目展示了Eclipse平台的强大扩展性和灵活性。以下是对每个子文件的详细解读: 1. **...

    Android 开源的下拉刷新 Eclipse版本

    总的来说,这个开源项目为Eclipse用户提供了一个方便的下拉刷新解决方案,涵盖了ViewPager和ListFragment等多种场景,且附带了示例代码供学习参考。对于那些不使用Android Studio的开发者来说,这是一个非常有价值的...

    Eclipse 环境下的 ShowcaseView 开源项目

    1. **Eclipse IDE**:Eclipse 是一个流行的开源集成开发环境(IDE),广泛用于 Java 开发,包括 Android 应用程序。它提供了代码编辑、调试、构建和部署等功能,使得开发者能够高效地编写和管理项目。 2. **Android...

    eclipse配色方案 保护眼睛

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),它为各种编程语言提供了强大的支持。在长时间使用Eclipse进行编程时,合适的配色方案对于减轻视觉疲劳、保护眼睛至关重要。"eclipse配色方案 保护眼睛"这个主题...

    Eclipse 开源项目 mywork 安装程序

    Eclipse 开源项目 mywork 安装程序

    eclipse源代码

    Eclipse是一款著名的开源集成开发环境(IDE),广泛用于Java、C++、Python等多种编程语言的开发。源代码是任何软件的基础,它揭示了程序的工作原理和实现细节。Eclipse的源代码提供了对开发者开放的视图,使得程序员...

    eclipse乱码+开源转码插件+批量操作

    开源的Eclipse的文件转码插件,可以在不影响中文的情况下改变项目文件编码。 问题描述:我们项目开发都统一采用utf-8格式编码,但昨天研发部的一个产品要集成进来,他们是用gbk编码的,如果强行将文件设置成utf-8...

    Eclipse作为一个开源的集成开发环境(IDE),主要用于Java语言开发

    Eclipse作为一个开源的集成开发环境(IDE),主要用于Java...Eclipse作为一个英语词汇,意为“遮住”或“使黯然失色”,在天文学中,Eclipse指的是一种天文现象,即当一个天体移动到另一个天体的阴影中时发生的情况

    Eclipse Mosquitto一个开源的MQTT代理

    Eclipse Mosquitto是一个强大的开源MQTT代理,用于支持物联网(IoT)设备之间的消息传递。MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅式消息协议,特别适合资源有限的设备以及低带宽、高延迟...

    STM32开源开发环境的搭建eclipse

    通过上述步骤,我们已经成功搭建了一个基于Eclipse的STM32开源开发环境。这一环境不仅能够提供高效的代码编写和调试功能,还具有高度的灵活性和可扩展性。利用这些工具,开发者可以更轻松地完成STM32相关的项目开发...

    Eclipse-开源

    今天我们要探讨的,就是这样一款不仅免费,而且拥有开源特性的电脑游戏——Eclipse。这并不是那个为我们所熟知的开发工具IDE Eclipse,而是一款能够让玩家驾驶汽车、在月球上与叛军交火、支援联邦部队在宇宙间展开...

Global site tag (gtag.js) - Google Analytics