写点什么

当 Ruby 比 Java 构建还快:Buildr

  • 2007-05-21
  • 本文字数:1422 字

    阅读完需:约 5 分钟

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

另一方面,用通用语言编写的 DSL 即可运行。通过计算机所能达到的计算限度的扩展能力,你还能获得高级语言的简便性。

随着时间的过去,完全新的构建系统已由 Ruby 写成,比如 Bake Rant 。还有些构件系统扩展了 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

2007-05-21 21:091966
用户头像

发布了 127 篇内容, 共 44.7 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

【VueRouter 源码学习】第七篇 - 路由变化触发视图更新

Brave

源码 vue-router 9月日更

使用 Flink Hudi 构建流式数据湖

Apache Flink

大数据 flink

微信后台基于时间序的海量数据冷热分级架构设计实践

OpenIM

私有化部署竟是企业对低代码选型的重要要素

低代码小观

企业 开发工具 云服务器 低代码平台 私有化部署

百度混部实践系列 | 如何提高 K8S 集群资源利用率?

百度开发者中心

最佳实践 方法论 k8s

阿里最新21版Java面试系列手册已出炉,竟堪称GitHub面试杀手锏

Java~~~

Java 架构 面试 JVM 面经

初识FL Studio中的FLEX插件

懒得勤快

同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载

Java~~~

Java 架构 面试 分布式 微服务

Apache Flink 在京东的实践与优化

Apache Flink

大数据 flink

大厂炸锅了!这份全程无尿点的Java彩版面试开挂攻略在GitHub火了

Java~~~

Java MySQL 架构 面试 JVM

搞懂 ArrayBuffer、TypedArray、DataView 的对比和使用

每天进步亿点点

9月日更

白嫖!一口总结了金九银十(P5-P7级)1000多道Java面试题,20+大厂必考点及Java面试框架知识点!

Java 程序员 架构 面试 计算机

终于有人把操作系统,CPU,基础知识,网络一次讲清楚了,绝绝子

Java~~~

Java 架构 面试 操作系统 TCP/IP

重放浏览器请求多链路性能测试实践

FunTester

浏览器 性能测试 接口测试 全链路压测 FunTester

Flink 在顺丰的应用实践

Apache Flink

大数据 flink

数据结构是存储的基石

卢卡多多

数据结构 9月日更

腾讯质量效能提升最佳实践:智能自动化测试探索和建设

WeTest

Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务

阿里巴巴云原生

云计算 阿里云 云原生 可视化 Grafana

牛逼!从阿里大牛手里买到了1个G牛逼的Java面试题库,史上最强

Java~~~

Java 架构 面试 JVM 架构师

铁山靠!阿里P9架构师写的这份JDK源码笔记,竟直接带火了GitHub

Java~~~

Java 源码 架构 jdk 面试

阿里资深工程师写出这份Java异步编程指南,竟获GitHub百万点赞

Java~~~

Java 架构 面试 计算机 TCP协议

CV和NLP融合应用,百度联合国内外机构成功举办ICDAR 2021文档图像与语言研讨会

科技热闻

Flink 1.14 新特性预览

Apache Flink

大数据 flink

GitHub上火了的MySQL性能调优手册,全篇无废话不愧是清华神人

Java~~~

Java MySQL 数据库 架构 面试

阿里内网疯狂传阅的“M8级”分布式架构笔记,GitHub刚上线就霸榜

Java~~~

Java 架构 面试 分布式 微服务

伴鱼:借助 Flink 完成机器学习特征系统的升级

Apache Flink

大数据 flink

一文搞定Matplotlib各个示例

华为云开发者联盟

Python 深度学习 Numpy matplotlib 绘图库

GitHub上这份阿里的Java高并发核心手册,即使再过20年依然“NB”

Java~~~

Java redis 架构 面试 高并发

逮虾户!清华架构师吐血整理出这份多线程并发指南,带你弯道超车

Java~~~

Java MySQL 架构 面试 JVM

如何使用OkHttp实现websocket

Changing Lin

9月日更

Alibaba内网“疯狂”传阅的P8开源出的SpringBoot入门到进阶小册

Java~~~

Java 架构 面试 微服务 Spring Boot

当Ruby比Java构建还快:Buildr_Java_Sebastien Auvray_InfoQ精选文章