利用Ruby简化你的Java测试
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
作者 高昂 发布于 2007年12月5日 上午3时58分
Ruby的下一个重大版本Ruby 1.9已经整装待发,新版本预计将在08年元旦到来之前发布。目前,一份关于Ruby 1.9版本的更新记录详尽的列出了1.9版本在语言特性方面的完善。这份列表在接近四万行的Ruby 1.9更新记录之中凝练而出,为即将转向Ruby 1.9的开发者提供了最佳的实践参考。尽管Ruby 1.9给出了诸多的改进,但仍旧不能完全代表未来Ruby 2.0版本发布时的模样。在Ruby的SVN存储库的HEAD版本之中,Ruby开发团队正在不断尝试一些新奇的改进和完善。
Ruby 1.9的新特性一经公布就引起了Ruby开发者们的关注。在同样来自于InfoQ的一篇新闻中,曾谈到Ruby 1.9加入纤程(Fiber)后实现轻量级并发的相关特性。不仅如此,Ruby 1.9版本让开发者们最为激动的改进,来自对Ruby语言编译器性能的大幅度提升。
Antonio Cangiano在一份关于各种Ruby实现的性能对比报告中,对不同版本Ruby实现进行了性能测试与比较。在不同应用场景下,Antonio分别对Ruby 1.9版本、Ruby 1.86版本、以及JRuby、XRuby、Ruby.Net、Rubinus等Ruby实现的性能差异进行了测试。结论是,Ruby 1.9在运行时间上要远远少于其他的版本,在效率和表现性上有了显著的提升。在性能测试的总结中,Antonio Cangiano这样写到:
众所周知,Ruby并不是一门解释执行速度非常高——尽管这并非是Ruby语言设计初衷——的程序设计语言,但对于Ruby语言来说,运行速度慢是其一个不可忽视的弱点,任何一处性能上的改进都会使得Ruby语言在现实世界中的应用越来越广泛。抛开性能表现方面的问题不谈,Ruby动态语言的特性及其实现方式,的确为开发者带来了诸多的益处,比方说可以方便的将Ruby代码与Java或.Net现有基础设施进行集成......如今,Ruby的使用者可以自豪的宣布,Ruby已经在性能提升方面做出了重大的改进,Ruby社区的开发者将会一如既往的关注Ruby这门强大的编程语言。
有趣的是,Antonio Cangiano不仅针对Ruby的各个版本实现进行了比较,他同样也进行了Ruby 1.9.0版本、Ruby 1.8.6版本以及Python 2.5.1之间的性能对比测试。Antonio在Mac OS X 10.5系统之下,使用斐波那契递归函数对三者的递归与函数调用进行了测试。同样的循环次数中,Ruby 1.8.6用时158.869秒、Python 2.5.1用时31.507秒,而Ruby 1.9.0仅用时11.934秒。Ruby 1.9版本相对于Python,性能的超越大致在三倍左右。尽管这样的测试并不能代表所有的性能指数,但从一个侧面来看,即将到来的新版Ruby 1.9.0的确是在程序解释运行方面有了巨大的性能提升。
在令人期待的十二月份,除了即将发布的Ruby 1.9,Ruby社区还将迎来新版Rails 2.0的发布。可以预计、随着新版Ruby与Rails的发布,Ruby社区将会掀起新一轮的开发热潮。在新的编程语言使用广泛度排名中,Ruby语言由去年底的排名第十二上升到排行第九名,位列在Java、C、(Visual)Basic、C++、PHP、Perl、Python、C#之后,并且Ruby一直呈现强劲的增长势头,Ruby语言独有的特性一直在不断吸引着开发者的加盟,正如在《Programming Ruby》一书的序言中,孟岩针对Ruby语言描述的那样:
Ruby实现了最纯粹意义上的面向对象,让Smalltalk、Perl和Lisp的灵魂在新的躯壳里高歌。相比于Python,Ruby的思想更加清晰一致,形式更加灵活;相比于Perl,Ruby更简单质朴,绝少光怪陆离之举;相比于Smalltalk和Lisp,Ruby更富有现代感和实干气质;相比于庙堂之上的“工业语言”,Ruby自由挥洒、轻快锐利;而相比于JavaScript和PHP,Ruby从Smalltalk继承而来的深厚底蕴又大占优势。面对执行性能与开发效率的谜题,Ruby毫不犹豫地选择了开发效率,选择了对人脑的友好。Ruby的基本思想非常简单淳朴,对于基本原则的坚持非常彻底,毫不打折扣,而在具体应用中又集各家所长,实现了巧妙的平衡。
如今,在充满热情和创造力的开发者社区的带动之下,Ruby语言已经成为程序设计语言中发展最快的热门语言之一,扎实勤恳的开发者使用Ruby语言进行着孜孜不倦的实践和创新。同时,Ruby on Rails的迅猛势头,无疑在极大程度上推动了Ruby语言的普及与使用,使得Ruby与Rails相辅相成,朝着开发者所期待的方向,不停歇的迈进脚步。
在解决了性能问题后的Ruby,还有什么可以疑虑的呢?赶快加入Ruby阵营吧! ------------------------------------------------ [Ruby中文社区] - www.ruby-lang.org.cn
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。
在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。
本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。
人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。
在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。
1 条回复
回复