主题:【原创】开源的Eclipse(一) Eclipse的历史 -- 可爱的中国
看到有人在讨论开源软件如何成功,我也来凑热闹,胡扯一下Eclipse开源和在它之上的一些成功的商业例子。
大概写Java的大多都应该听说过Eclipse这个Java开发工具,其实Eclipse 不光是一个Java IDE,还是一个很大的开源平台,在Eclipse社区,你可以看到从Java,C/C++, PHP,Cobol 等语言的开发工具,到报表工具,到Nasa的卫星图片处理软件等五花八门的应用。 有兴趣的可以去Eclipse.org看看。
说到Eclipse, 要从IBM开始。不知道还有多少人知道Visual Age for Java这个东东,反正我是没有用过,只是看见过。 没见过的,可以去看Eclipse JDT, 它的图标很明显来自Visual Age for Java。Eclipse的前身就是IBM的Visual Age for Java。 按照IBM 内部某位大牛的说法,Eclipse 的起源应该IBM是需要一个可以把 Visual Age for Java 和 WebSphere Studio 集成到一起的开发环境。
“因此,1998 年,我们开始了下一代开发工具技术探索之路,成立了一个项目开发小组,经过两年的发展,2000年,我们决定给新一代开发工具项目命名为 Eclipse,Eclipse 叫法当时只是内部使用的名称。”[1] 瞧这名字起的,Eclipse 了, Sun 怎么办。 看来IBM的目的的确是达到了, Sun 马上就要成为明日黄花了。
“这时候的商业目标就是希望 Eclipse 项目能够吸引开发人员,能发展起一个强大而又充满活力的商业合作伙伴(独立软件供应商)社区。同时我们意识到需要用它来对抗 Microsoft Visual Studio 的发展,因此从商业目标考虑,通过开源的方式我们最有机会达到目的。此外,IBM 推出了 Eclipse 试用计划,允许 IBM 以外的开发人员使用 Eclipse。结果证明我们的决策非常正确,Eclipse 从此在开发社区广为流传。Eclipse 也就成为这个项目的正式名称。”[1]
我觉的,还有一个没有说出来的目标是和Sun 竞争,也就是在JDK之上提供一个 Rich Client SDK, 试图取代AWT和SWing。
“2001 年 12 月,IBM 向世界宣布了两件事,第一件是创建开源项目,既 IBM 捐赠价值 4 千万美元的源码给开源社区;另外一件事是成立 Eclipse 协会(Eclipse Consortium),这个协会由一些成员公司组成,主要任务是支持并促进 Eclipse 开源项目。”[1] 除了IBM,创始的公司还包括 Borland、Merant、QNX Software Systems、Rational Software、Red Hat、SuSE、TogetherSoft和Webgain。 很象是IBM纠集了一批破落户为其装声势, 这里面的公司在2001年的时候似乎日子都不是太好过,或者还在创业时期。
很多大的公司在这个时候还不愿意加入Eclipse, 因为他们认为Eclipse 是IBM控制的。于是,IBM在2004 年初,宣布成立独立的Eclipse 基金会来管理整个Eclipse 社区。 其实Eclipse 基金会的CEO还是来自IBM, 就是这个帅哥 Mike Milinkovich。
让我们看看现在Eclipse 的一些成员
Actuate, CA, IBM, Nokia, Oracle, SAP, Moto, BalckBerry, AdaCore, ADobe, AOL,ARM,Cisco,Ericsson,FreeScale, Google, HP, Intel, Redhat, Siemens,Sybase,Wind River,Zend 等等。 怎么样,够气势吧?
请出土鳖和铁牛吃太阳
References
1. Eclipse 的历史、现状和未来 By John Kellerman,IBM
本帖一共被 2 帖 引用 (帖内工具实现)
鲜花已经成功送出。
此次送花为【有效送花赞扬,涨乐善、声望】
Visual Age for Java & C++,用起来简直就是痛苦……我一度怀疑是IBM是把他们卖不出去了才开源的。
大概是98年出的吧,Beta时可以免费下载。用起来我觉得还方便,现在只记得它的一个个按钮都是圆形的,是拿Smalltalk写的。
我也是用过盗版的VAJ,当时怀疑IBM是不是脑子坏掉了,出这种烂货。所以很长一段时间,我都不看eclipse。现在我又用回了netbeans。eclipse也促进了netbeans的进化(当时叫Forte)。
所以我第一眼看到Eclipse JDT的圆图标,就想起了Visual Age,不过的Eclipse使用比Visual Age容易多了。
著名的Borland 被英国公司Micro Focus 买了, IDE 部门被Embarcadero Technologies买了。
当年那个创造了Turbo C/Pascal 辉煌的公司没有了。
Merant 现在是Serena Software的一部分。
QNX Software Systems 还在,不是很熟悉。
Rational Software 被IBM买了,IBM Rational Software 现在是IBM 主要软件产品包之一。
Red Hat 算是日子好过的,在开源这一块是为数不多的找到比较成熟的商业模式的公司之一。
SuSE被Novell买了,日子好像还过的去。
TogetherSoft 被Borland买了,现在随着Borland一起去了Micro Focus,还有未来么?不知道。
Webgain 在2002年关门了。
看来Eclipse并没有给这些公司带来太多的好处,反而是后来加入的一些公司沾了光,以后会谈到。
后来就少用了,界面很独特,使用习惯了也不错的
Eclipse的起源是一个IDE, 所以显而易见,他是一个Java开发工具。但是说实话,我觉的2.x的Eclipse是一个很好的IDE, 3.0以后呢就不那么好了,内存吃的厉害,也不够稳定,功能多而不实用。
那么,Eclipse的价值何在呢? 其实,我以为Eclipse的最大价值在于它为其他开发公司提供了一个商业友好的,功能齐全的,开源的开发平台。而这三个要素是Eclipse成功的主要原因。
第一,Eclipse的EPL协议是一个商业友好的协议。 EPL1.0 http://www.eclipse.org/legal/epl-v10.html 协议实际上允许用户自由的使用基于EPL的二进制程序,或者源码。除了要求用户必须保留原有的版权信息和一份EPL协议拷贝外,没有其他特别的限制。 也就是说,你可以把Eclipse 程序包含在你的产品中,也可以直接Copy Eclipse 的源代码并修改它,并把他集成到你的产品中去。而这个产品可以是开源的,也可以是商用的。 因此这就保证了Eclipse对商业公司有足够的吸引力。
第二,Eclipse 同时又提供了足够的功能来让你在他的基础上进行开发。
Eclipse 的基本功能划大致包括。
1. Eclipse Rich Client 平台
* Equinox OSGi – 这是一个符合OSGI的实现,它提供基础的资源生命周期的管理。
* Core platform – 负责启动和运行基础的Eclipse 服务。
* Standard Widget AWT 的对应物, 体统基础的界面功能,包括对话框,按钮等基础的界面组件。 SWT是和平台的组件一对一对应的,所以是依赖平台的。
* JFace – 对SWT的MVC 封装,文字处理,标准编辑器等功能。
* Eclipse Workbench – 提供Eclipse 标准界面。
2. 各种语言开发工具
* JDT - Java
* CDT - C/C++
* PDT - PHP
* ATF - Ajax
* ...
3. 针对具体应用的工具
* BIRT - 报表开发
* DTP - 数据库访问连接
* WTP - Java Web 开发
* TPTP - 测试和调试工具
* SOA Tools
* EMF - 自动模型生成
* GEF - 图形编辑界面框架
* DSDP - 嵌入开发
有了上述的这些丰富的功能,商业公司就没有必要再编写基础性的功能(实际上大多数公司来写的话,未必达的到Eclipse的水平。有几个能牛过IBM?),而是在Eclipse 的基础上扩展来提供专有的功能。 比如IBM Webshpere studio, Lotus, Actuate 的商业报表工具,Sybase 的继承开发环境,还有很多很多的商业产品都是基于Eclipse 平台扩展开发的。
第三,Eclipse 是开源的
作为开发人员一直面对的一个问题就是没有合适的文档。 特别是在使用第三方的平台的时候,经常会应为找不到文档和合适的运行范例而发愁。特别是在使用面向OO的API的时候,由于有大量的回调等功能,要正确的使用某些功能实在不是一个简单的任务。 而开源的Eclipse 带来的好处是,Eclipse 源代码本身就是最好的文档和例子。
另一个问题是虫虫。 使用一个商用的第三方平台的用户在遇到虫虫时,出了和提供商协商之外,别无他法。 而Eclipse 的开源特色使得用户可以自己杀虫, 并把补丁提交给Eclipse社区,这样对用户来说就拥有了足够的灵活性。
看上去不错,免费的馅饼,味道还好,还管够,共产主义终于实现了? 万恶的资本家是不会放弃对利润的无限追求的。
快看铁牛吃太阳啦
OSGi是Open Service Gateway Initiative的简称。
OSGi是一种服务运行平台。通过实现能够提供服务的符合OSGi规范的组件,用户可以将其组件发布到OSGi运行平台,供用户和其他组件使用。Eclipse equinox 是OSGi 规范的一种实现。Eclipse Plug-in的管理都是基于OSGi的。
OSGi规范的核心组件是OSGi框架。这个框架为应用程序(被叫做组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次:
* L0: 运行环境
* L1: 模块
* L2: 生命周期管理
* L3: 服务注册
L0 层执行环境是Java环境的规范。
L1 模块层定义类的装载策略。
L2 生命周期层增加了能够被动态安装、开启、关闭、更新和卸载的bundles。
L3 层增加了服务注册。服务注册提供了一个面向bundles的动态性的协作模型。
References: China OSGi User Group http://china.osgiusers.org/Main/Technology
这样理论性的讲法很象看手册啊
呵呵,原来是不准备多说OSGi,因为这个是Eclipse 很底层的东西。下面有人提意见了,那我就试着举个例子吧,希望有所帮助。
比如出过国的人大多遇到一个问题,就是你带出去/回来的电器没法直接插在电源插座上,因为不同国家的电源插座的标准和交流电的电压标准是不一样的。
OSGi 的运行环境就类似与供电系统,提供组件(bundle)可以运行的平台。
OSGi 模块管理就是类似的这么一个插座/电压标准,这样就可以保证所有的符合标准的组件(bundle)都可以插入到OSGi的运行平台上并能够运行。
可是呢电器插到插座里了,并不一定马上通电用, 而是一般需要一个开关来控制电器的运行。
OSGi的生命周期管理就是提供这么一个类似的功能,当组件需要运行的时候,这个层面负责装载和启动这个组件,而当组件不需要运行是负责卸载这个组件来减小系统的负担和资源占用。
OSGi服管理类似智能家电的通讯协议, 允许组件提供出了基础的生命周期管理之外的更复杂的通讯协作功能。
大概就是这样的,喝水看铁牛吃太阳去。
osgi可以走得远远超过eclipse可以达到的地步。
它不仅是种模块化的部署模型,也是一种模块化的运行时环境。
它的特点应该是,粒度位于组件和应用程序之间。
此外包之间强大的依赖管理和动态的卸载、装载能力,如果还加上eclipse的扩展点机制。
作为部署和运行环境应该是比较完美了。
顺便说一句,现在很多应用服务器也采用osgi技术。
VAJ是我用过最好的工具了,当然现在的elipse也不错。当时我刚开始学写程序。
1.GUI的开发是连线的。
2.它的代码的版本管理是内置的,很方便。
eclipse刚出来的时候功能比VAJ差远了,现在渐渐的不错了。