开源在中国——机会和挑战


——《开源技术选型手册》推荐序

作者:蒋涛

 

 


 

1999年,Eric S. Raymond在自由软件的范畴下提出了Open Source开源软件的概念,并出版了《大教堂和集市》(The Cathedral & the Bazaar)一书,这是开源软件发展的标志事件。

 
近10年过去,开源软件已成为软件行业,特别是互联网行业最重要和发展最快的领域,著名开源项目网站SourceForge在1999年还只有 数百个开源项目,到2008年初其开源项目数已经超过17万个,几乎覆盖软件应用的所有领域。大部分产品和技术基于开源平台的Google成为世界上最成 功的高科技公司。今天,从全球500强企业到中小企业,还有绝大部分的软件公司都在使用开源产品构建自己的信息系统或者产品。
  
为什么开源能取得如此的成功?第一:开源社区的协同模式改变和颠覆了软件业的工作方式,可以创造出高质量的软件产品。Raymond在《大教堂和集市》一书中有精彩的阐述。
 
第二:开源软件的商业模式也得到了验证,RedHat,MySQL,Asterisk都是非常成功的开源公司。第三,这也是最重要的一点:开源 软件真正释放了软件开发人员的创造力和生产力.全世界有上百万的程序员在参与开源软件的产品开发,国际软件巨头也纷纷加入开源阵营,IBM投资10亿美元 支持Linux,Sun也斥巨资收购MySQL。开源在全球的发展成沛不可挡之势。
    
但实际上,中国的开源却是这样一副景象:社区冷,企业热,使用热,开发冷。使用开源产品的公司和人员众多,但开源社区的发展并不顺利,真正参与开源产品开发和社区贡献的开发人员非常少。
 
原因何在?《程序员》杂志社组织过专门的研讨,总结下来有多方面的原因:
l 语言的障碍,阻碍了中国软件开发人员参与国际开源社区;
l 东西方文化的差异以及对开源文化的了解不足;
l 经济上的快速发展带来的工作和生活压力
l 中国软件开发发展的时间还不长,核心开发人员的积累还不够,缺乏开源关键人物;
l 大学教育在开源领域严重不足,教师也缺乏了解。

 

开源在中国的发 展意义重大:第一、开源软件集合了全世界软件技术的发展精华,可以让我们的开发人员和软件企业充分学习和吸收;第二、开源软件覆盖了软件应用各个领域,中 国的软件企业可以在此基础上发展增值应用,只要遵守其商业规则,就能创造出商业价值;第三、作为软件的用户都会更愿意自己用的系统是开源的,这样便于维护 升级和系统整合。

 

开源给中国的软件产业提供了加入国际软件大潮的极好机会,事实上中国互联网的蓬勃发展也是基于开源的产品带来的成效。但更重要的是:中国的软件开发人员能够参与开源社区和产品开发,打造中国开源社区的良性生态系统。

        
博文视点这次组织中国开源社区的多位专家策划《开源技术选型手册》,这是非常有意义的一件事情。美国开源发达的一个 重要原因:就是出版界特别是O’Reilly公司出版了大量的开源图书,推进了开源技术的普及和发展。中国软件界需要更多中文高质量的开源内容,使更多的 人了解开源的技术和价值,帮助有更多的人参与开源的使用和开发,有更多的企业采用开源的应用,反过来也会刺激更多的开发人员学习和参与开源。开源有着美丽 的风景,但也非常庞杂,超过17万个开源项目,巨细无遗,无所不包。初涉开源的人,无论是开发者还是使用者,都会有无处下手之感。这正是体现《开源技术选 型手册》的价值所在。作为一本开源技术和产品的导航手册,本书的作者都是浸淫开源多年的专家,他们为广大读者分门别类介绍了19类开源技术和产品,开源的 最大魅力在于提供给软件开发人员自由选择和使用的权利,读者按图索骥就可以参与开源项目。参与与回馈是开源成功的关键。衷心希望作者的努力能帮助更多读者 的参与。
  

开源在中国,有很好的机会和前景,希望我们的开发人员和软件企业能把握机会,去迎接这样的挑战。

 

============================================================================


目 录


第1章 闲话开源社区篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 1
第2章 Web框架篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5
2.1 Struts ………………………………………………………………………………………… 7
2.2 Spring ………………………………………………………………………………………… 14
2.3 Seam ………………………………………………………………………………………… 26
第3章 开源Web服务器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯41
3.1 Apache ………………………………………………………………………………………… 43
3.2 Lighttpd ……………………………………………………………………………………… 46
3.3 Nginx ………………………………………………………………………………………… 49
第4章 应用服务器篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯51
4.1 JBoss ………………………………………………………………………………………… 53
4.2 Geronimo ……………………………………………………………………………………… 60
4.3 JFox …………………………………………………………………………………………… 66
第5章 开发平台篇(IDE) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯81
5.1 Eclipse ………………………………………………………………………………………… 85
5.2 NetBeans ……………………………………………………………………………………… 96
ii
第6章 动态语言篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 105
6.1 Python ……………………………………………………………………………………… 107
6.2 Ruby ………………………………………………………………………………………… 112
6.3 Groovy ……………………………………………………………………………………… 118
第7章 Ajax开发篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 123
7.1 Buffalo ……………………………………………………………………………………… 125
7.2 Dojo ………………………………………………………………………………………… 133
7.3 Prototype …………………………………………………………………………………… 141
7.4 JQuery ……………………………………………………………………………………… 149
7.5 DWR ………………………………………………………………………………………… 158
第8章 富互联网应用篇(RIA) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 163
8.1 Adobe FLEX ………………………………………………………………………………… 165
8.2 OpenLaszlo ………………………………………………………………………………… 175
第9章 版本控制篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 183
9.1 CVS ………………………………………………………………………………………… 185
9.2 Subversion ………………………………………………………………………………… 199
9.3 Git …………………………………………………………………………………………… 209
第10章 项目管理篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 217
10.1 Mantis …………………………………………………………………………………… 220
10.2 Bugzilla …………………………………………………………………………………… 230
10.3 Scarab …………………………………………………………………………………… 235
10.4 Teamwork ………………………………………………………………………………… 245
第11章 面向方面编程篇(AOP) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 253
11.1 AspectJ …………………………………………………………………………………… 255
11.2 Spring AOP ……………………………………………………………………………… 261
11.3 JBoss AOP ……………………………………………………………………………… 267
iii
第12章 反向控制容器篇(IOC) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 273
12.1 NanoContainer …………………………………………………………………………… 276
12.2 Equinox …………………………………………………………………………………… 281
12.3 HiveMind ………………………………………………………………………………… 286
12.4 Guice ……………………………………………………………………………………… 291
12.5 JBoss MicroContainer …………………………………………………………………… 296
第13章 用户界面篇(UI) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 303
13.1 Script aculo us …………………………………………………………………………… 305
13.2 YUI ………………………………………………………………………………………… 313
13.3 Ext ………………………………………………………………………………………… 324
13.4 Echo2 ……………………………………………………………………………………… 334
第14章 商业智能篇(BI) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 343
14.1 分析工具——Mondrian ………………………………………………………………… 345
14.2 分析工具——JPivot ……………………………………………………………………… 352
14.3 报表工具——BIRT ……………………………………………………………………… 359
14.4 ETL 工具——Kettle ……………………………………………………………………… 371
14.5 开源商业智能解方案——Pentaho ……………………………………………………… 378
第15章 建模工具篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 389
15.1 ArgoUML ………………………………………………………………………………… 391
15.2 Poseidon ………………………………………………………………………………… 395
15.3 Jude ……………………………………………………………………………………… 398
15.4 StarUML ………………………………………………………………………………… 403
15.5 Trufun ……………………………………………………………………………………… 406
15.6 EclipseUML ……………………………………………………………………………… 411
第16章 对象关系映射篇(ORM) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 415
16.1 Hibernate ………………………………………………………………………………… 418
16.2 TopLink Essentials ……………………………………………………………………… 426
iv
16.3 iBATIS …………………………………………………………………………………… 433
第17章 数据库篇(DB) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 443
第18章 软件测试篇 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 451
18.1 JUnit ……………………………………………………………………………………… 454
18.2 JMock …………………………………………………………………………………… 465
18.3 Selenium ………………………………………………………………………………… 472
第19章 面向服务架构篇(SOA) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 479
19.1 Apache CXF ……………………………………………………………………………… 481
19.2 Apache ODE ……………………………………………………………………………… 489
19.3 Apache Tuscany ………………………………………………………………………… 497
第20章 工作流篇(Workflow) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 507
20.1 jBpm 工作流系统 ………………………………………………………………………… 511
20.2 OSWorkflow 工作流系统………………………………………………………………… 517

20.3 Tempo 工作流系统 ……………………………………………………………………… 522

 

 

推荐阅读:

 

本书总策划霍泰稳的写作感言:《开源技术选型手册》的遗憾之美

 

作者之一柯自聪的写作感言:开源的思想,社区的力量

 

作者之一高昂的写作感言:开源技术选型手册推荐

 

作者之一张凯峰的写作感言:《开源技术选型手册》编写手记

 

作者之一刘长炯的写作感言:欢迎关注《开源技术选型手册》

 

作者之一杨泳的写作感言:开源选型的黄页

 

 

 

 


posted @ 2008-07-28 14:02  博文视点  阅读(514)  评论(1编辑  收藏  举报