InfoQ第三季度原创新闻汇总

第三季度在InfoQ中文站投稿了三篇本地新闻,汇总一下放在这里。在”时刻关注企业软件开发领域的变化与创新”理念驱动的同时,更重要的是,有了一个可以很好的交流思想和技术的平台,继续努力。

开源项目在中国:从关注到参与

以”让你梦想成真(Make your dream come true)”为主题的软件自由日在清华大学信息楼举行,来自北京Linux用户组中国开源软件推进联盟Ubuntu-cn的技术专家齐聚在软件自由日,演讲嘉宾包括SCIM输入法的作者苏哲、Discuz!创建者戴志康,红旗中文贰仟CEO胡才勇等人,为开发者分享各自在参与自由软件过程中的经验与获益。

关注:InfoWorld年度最佳开源软件尘埃落定

InfoWorld日前公布了2007年的Bossie Awards奖项,评选出各个领域中最佳开源软件。这些面向企业应用的最佳开源软件,是通过InfoWorld测评中心编辑与评论家悉心评选得出,涵盖了从CRM和ERP应用,到开源中间件、存储及安全方面的各类开源软件。奖项共分为6个大类,共36个获奖的项目。

观点:Rails还是PHP?适合才是最好

随着大举进军Rails号角的吹响,Rails成为Web 2.0中小型站点开发的框架新宠。一夜间rails与敏捷开发的思想逐步深入人心,在这个技术浪潮中涌现出的成功站点也不在少数。然而,Derek Sivers最近在O’Reilly站点上发表的一篇名为两年RoR开发付之东流,重返PHP的七大理由的文章,激起了rails开发者们强烈的反响。

迷人的Mac OS X

看到了Mac OS X新版操作系统Leopard的发布说明,不由得越来越迷恋Mac了。在Leopard的发布公告中写道:拥有300 多种新功能的Leopard是迄今为止最出色的Mac OS X版本。尽管之前看到有用户抱怨Mac系统对中文支持仍存在的不足,但无疑,面向64位处理器的作业环境的Leopard,其魅力实在是无法抗拒的。

更吸引人的是,在Mac OS X Leopard之上进行应用开发,可以获得如同使用Mac系统般的轻松体验。在Leopard之中,提供了针对于程序开发的编译器、调试工具及性能最优化工具。对于Xcode桌面应用程序开发和Dashboard Widget应用开发,Leopard都提供了完善的支持。特别是对于动态语言编程,Leopard为其提供了真正易用的开发环境。

Leopard操作系统集成了Ruby的1.8.6版本,同时包含了Ruby程序包管理器RubyGems,Ruby on Rails框架,轻量级服务器Mongrel,Rails项目构建部署工具Capistrano,全文检索工具ferret/acts_as_ferret,并且还集成了提供Ruby与标准C语言之间接口的RubyCocoa项目,使得Ruby语言通过ScriptingBridge来开发Mac桌面应用成为可能。

在InfoQ上的Mac发布新闻中,更深入的总结了Leopard对于DTrace动态跟踪,XCode编程以及Interface Builder提供的新特性,不仅如此,在Leopard下使用NetBeans的Ruby IDE进行开发,应该也会有非常流畅的体验。

Ubuntu 7.10也在不久前发布,桌面版改进了用户界面,并完善硬件支持和集成的桌面搜索。以前还在OSGeo的那台服务器上尝试安装过Compiz Fusion的3D旋转桌面,在Demo上要比Vista的效果靓丽很多,只是估计由于显卡驱动的问题,一跑起来就会当机。新版的Mac OS和Ubuntu究竟哪个会获得更高的用户满意度,还需要实践来检验。如果有了下一代,一定要让孩子从Mac或Linux之中选一个来开始学习电脑的启蒙,呵呵。

统计分析利器——R语言

项目实践中,具体的业务应用常常以数据为中心展开,数据本身代表着应用系统价值的核心。然而仅仅是大量庞杂的数据,还无法直接体现自身的价值,数据通常需要经过多层分析过滤和处理,才会去粗取精,挖掘出数据所蕴含的信息。

GNU麾下的开源项目R语言是专门解决数据统计与分析相关问题的一把利剑。R语言使得基于数理统计思想的数据分析过程得到了极大的简化。通过简洁的语法和强大的命令让我们专注于数据本身,而非羁绊于具体处理过程的实现,减轻了数据统计分析的编程与操作负担。

R语言提供基于命令行的使用方式,内建一系列数据统计分析和图形显示工具,可以实现统计检验、矩阵计算、线性和非线性模型、分类聚类等各项数据统计处理功能。在Windows平台下,还可以通过RGui这样的图形化交互界面,完成数据统计、分析甚至数据挖掘工作,并且提供如MetaPost般强大的作图能力。

R语言的编程环境拥有非常好的一致性和拓展性,简单的数据统计计算可以直接在命令控制台中执行,如果需要编写R的程序段,WinEdt、Emacs和Vi等常用的编辑器都提供了对R语言的语法加亮支持。RGui环境已经集成了基本函数、数据集、标准统计和图形工具等26个针对不同应用的基本程序包,更多的程序包可以在CRAN项目中得到并载入使用。

R语言的语法在形式上类似C语言,语义上倾向于LispAPL(Array Processing Language)语言并与其有较强的兼容性。R语言允许把表达式作为函数的输入参数,这样极大方便了使用R语言进行统计模拟和绘图的工作。在R语言中,内置有众多数据处理相关的函数,并且用户可以创建自己的函数对象。函数一般以对象的形式在R工作空间中加载和使用,同时R的部分内部函数还可以用在表达式中,使得R程序的功能性和便利性得到极大扩展。

数学是任何科学的基础,在开放源码领域中,面向科学计算方面的项目十分广泛,为各种特定数学领域的问题提供了辅助工具。数据统计分析主要研究不确定性数据中所蕴含的规律性,在众多学科专业领域里都得到越来越广泛的应用。通过R语言来完成数据统计和处理将会极大提高效率,并对数据统计分析得出的定量决策,避免主观判断的随机性。(本文全文参见《程序员》07年9月刊。)

开放的地图服务器

地图服务器的比较与选择,似乎是个永不过时的主题,OSGeo的讨论组里也常涉及到相关的话题。一般说来,构建基于FOSS的地图数据中心,除去服务器之外都有较固定的解决方案,浏览器的地图客户端可以选用Ka-MapOpenlayers,而数据库方面Postgresql+PostGIS的使用常常是不二之选。

先看历史悠久产品成熟的MapServer。Mapserver在国内用户广泛,其内核使用C++编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并且对OGC的WMS和WFS规范提供支持。Map文件是Mapserver工程中关键的结构配置文件,定义了地图范围、数据源、地图图层、投影方式以及符号标记等内容。如果在Linux平台下快速配置MapServer地图服务器,使用Maptools发布的 FGS(FOSS GIS Suite)套件无疑是最佳方案,套件集成了整套的MapServer、Apache、PHPMapScript以及GDAL库等众多内容,并且提供安装后就可直接浏览的地图DEMO。

另一款开源服务器GeoServer也是非常好的选择,基于Java和Geotools库开发的Geoserver功能全面且遵循OGC开放标准,并由同时拥有PostGIS与uDig的Refractions公司提供支持。GeoServer对发布WFS-T和WMS服务提供便捷的支持,并以XML文件描述所有地图服务。GeoServer的开发组很活跃,邮件咨询的问题很快会得到 Jody Garnett和组内其他成员的回复,GeoServer对OGC规范提供了全面的支持,除WMS和WFS之外,即将加入的FROGS(Framework for Open Geospatial Services)项目将着重提供对WPS规范的支持。

比较来说,Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。当然,对于使用者来说,最主要的区别还是传统CGI脚本与J2EE在技术上的分歧。但就发展趋势来看,J2EE的架构明显要占据优势,并且Geoserver拥有基于Eclipse RCP平台的开源客户端uDig。随着Geoserver的版本更新,相信其有实力成为今后开源WebGIS解方案的主流选择。

Netbeans平台的Web Service开发

印象里SUN的软件产品接触都比较少,主要是感觉针对企业级的产品定位往往对于一般用户实用性并不强,然而SUN的Java集成开发环境Netbeans却改变了自己一贯的看法。

同样,在Sun开源政策的支持下,Netbeans遵循 CDDL 开源协议,NetBeans可以在Solaris、Windows、Linux和 Macintosh OS X等各种平台下进行开发,作为全功能的Java IDE,编写、编译、调试和部署Java桌面和移动应用都十分顺手,并且Web可视化开发以及C和C++语言的开发包都包括在新一代的Netbeans中,用来在Windows平台上构建本地代码。值得一提的是,Netbeans国际化十分出色,不仅IDE环境可以切换为中文界面,附带的所有帮助文档也是中文撰写。

针对Web Service的企业应用在Netbeans环境下开发十分便捷,Web容器可使用已集成的Tomcat,同时Netbeans企业包(Enterprise Pack)中提供的Application Server也是不错的选择。目前已经测试Netbeans平台下生成并发布WebService的流程,感觉比用Eclipse、AxisWST结合实现的解决方案要方便不少。让我感到惊喜的是,Netbeans下不仅可以将Java代码生成Service发布,还可将已有的WSDL描述文件逆向生成Java接口,发布为Service进行接口调用。在目前火热的SOA领域,Netbeans对基于BPEL的Web Services商业过程语言也提供支持,开发者可以轻松定义组件之间协作的工作流,集成在应用当中。

Netbeans确实带来了不少惊喜,记得06年软件技术大会时,和Sun的白剑波老师说起Netbeans的发展及其与Eclispe的比较,大致认为,Netbeans如果要超过Eclipse的势头,仅靠Sun提供插件开发包是远不够的,还需要众多第三方插件提供商的支持,在迁移Eclispe平台上优秀插件的同时,开发更多独具特色的Netbeans插件,来丰富用户的选择。 希望Netbeans带来的好感可以持续下去,并且在后续的版本中体验到更多的令人着迷的功能。