BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

当Ruby比Java构建还快:Buildr

| 作者 Sebastien Auvray 关注 0 他的粉丝 ,译者 张凯峰 关注 1 他的粉丝 发布于 2007年5月22日. 估计阅读时间: 4 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Java构建系统Maven 1.0于三年前发布,并且已经在开源世界和行业内得到广泛采用;其后,2.0新的发布却并没有得到同等的赞誉。与此同时,Ruby变得越来越流行,而且通过像Rake这样的工具证明,内部DSL的概念是非常有效的。

另一方面,用通用语言编写的DSL即可运行。通过计算机所能达到的计算限度的扩展能力,你还能获得高级语言的简便性。
随着时间的过去,完全新的构建系统已由Ruby写成,比如BakeRant。还有些构件系统扩展了Rake,比如Raven,像Maven一样它也支持外部存储。

在这些系统中有个新的加入者,Buildr,尤其致力于简化Java构建。作者Assaf Arkin提倡建立能精简XML化和过度工程化的解决方案,你可以在他的blog或者他收集的tumblr引证中找到相关证据。这就是为什么他试图从他的项目中,比如Apache Ode,去掉Maven2的原因。
我们很快给它起了个绰号叫“Maven不可靠原则”,虽然公平一点说,我们知道它并没有什么不可靠,或者只是怀疑这个构建是否会运行:它不会。但最终,也许有一天我们获得了足够多的理由。测试案例停止运行。(……)总之,我们不得不做出选择。是敏捷还是Maven,必须使用它们其中的一个。

Assaf曾想到回到Ant:

于是我们开始想像没有Maven的幸福生活。也许我们应该转回到Ant?即使它有那么多缺点,但至少Ant构建可以运行。当然,Ant是不可声明的,而这是所有软件开发者的圣杯所在。但错误地使用声明性比任何套管程序(注:结构非常复杂的程序)还要糟糕。

……最终还是选择了Rake。

因此我们做到了,开始使用Rake。让我给你说说我的遭遇。Rake被证明是个非常棒的选择,它是个好的开始,但这并不是我们原本所期望的。我们运行的典型Java应用由一些模块组成,所有模块都有相同的普通生命周期任务:编译、测试、打包、部署。为每一个模块一遍又一遍地编写那些代码使得这并不比Ant好多少。我们有了一个更好的办法。
传奇(Saga)导致了Buildr的诞生,它具有容易实现的目标(也就是处理XMLBeans),并允许你依据普通的Ruby代码来完成基本的任务。性能可能是阻止Buildr得到更广泛采用的最后障碍,但“快速而猛烈的”Buildr证明自己是能够和Maven竞争的
我们正在构建相同的代码,运行相同的测试,编译相同的XMLBeans,创建相同的Hibernate schemas,共享相同的远程和本地数据存储。所有的这些是想说明,它们是功能相当的黑盒。给它们相同的项目,他们就能产生相同的JAR、WAR和分发文件等。
它能构建相同的项目,但脚本从52个泛滥的XML文件缩减到只剩一个脚本,缩减率达91%。但这还不是全部,Buildr设法把构建时间减少了50%!即使是部分构建,Buildr执行也类似或好过Maven。
当然,我们不是在估测原生的Ruby和纯Java。我们在比较一种实现和另外一种实现,它们完成的是相同的任务,黑盒是相当的。这是一个真实的基准对比。

Assaf以一个非常好的总结结束了采访:

Ruby可能会比较慢,但你通过它构建的应用可能非常非常快。
我们可以想像,看到Maven和Buildr短兵相接是多么有趣的事情。

这篇文档目前仅限于RDoc和一个Apache Rakefile示例,但有个完整的指南正在编写中。

查看英文原文:When Ruby Builds Faster Than Java: Buildr
译者简介:张凯峰,在Java和Web开发方面略有心得,现在IBM中国软件开发中心(CSDL)从事Lotus Forms的SVT、Automation相关工作,曾参与译著《Ajax实战》。与InfoQ中文站分享内容,请邮件至china-editorial@infoq.com

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

有没有最新进展? by lei zhao

RT

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT