技术开发 频道

Ruby,Java的劲敌

  James Duncan Davidson:尝试新事务

  如果你使用Tomcat或者Ant(认真地说,什么Java开发人员什么使用过?)那么你就熟悉了James Duncan Davidson的工作了。在Sun,他致力把这些项目开源并且把他们捐献给Apache基金会。并且他也编写了Servlet API的最初两个版本,还有处理XML的Java API.离开Sun之后,他做起了Mac OS 的X开发。编写《Running Mac OS X Panther》和参与编写了《Running Mac OS X Tiger》,《 Mac OS X Panther Hacks》,《 Cocoa in a Nutshell》和《Learning Cocoa with Objective-C, 2nd Edition》

  1,上一次我们见到你的时候,你还是那个《Mac desktop apps in Cocoa》家伙。而现在,我在你的blog上看到你已经深深地陷入了Rails.那是什么回事?

  我当时穷的要命和急切地需要钱。那时我刚刚买了一幢新房,并且抵押付款期限就快到期了――噢,等会,你想我认真点吗?好吧,事实是我和我的几个朋友已经一直在想一起工作一段时间了。当恰当的时机到的时候,我们给项目做了技术评估,Rails成了首选。那时我还没用过Rails或者Ruby.但是我是不会让小小的需要学习阻碍我去做那个项目的。今年我已经学习了三种,可能四种语言了。我不再相信一种语言可以做任何事了。如果我需要学习一些新知识去一些事情,我将全力以赴去学好它。

  2,你对Rails有什么看法?

  主要是简单性。完成事情的容易程度。我做的那个应用的第一个项目原来是一个基于Java的web应用。每个人都知道一定会有一种更好,更快,更容易的方法的。Ruby一直都是一种好语言――并且是一种有趣的语言――因此建立于它之上的这个框架,它应得到关注。

  3,Ruby的晦涩和Rails的新颖对客户来说会不会是一个问题?

  不全是。如今事实上恰恰相反。有太多潜在的工作, 缺并没有足够的人在真正地开发Ruby on Rails应用。

  4,为什么Ruby会如此特殊?难道Rails就不能在其他语言中实现?难道它就不能给Java实现?

  很少有其他语言可以完成Rails,或者像Rails那样的。Java不在他们之列。Rails从Ruby中获取了一些妙不可言的东西,尝试用另一种语言复制它不仅是对Rails所做的是一个浪费,对其他语言来说也是一个浪费。但是它的概念一定会在其他非常动态的,动态类型语言中得到很好的应用。

  确实,我很兴奋的看到其他项目正实现一些从Rails衍生的主意到其他平台中。例如作为一个Python里的Rails版本,Django得到了一些固定的发展。但是,实际上它是Python自己的庞然大物,它如何成长将会非常有趣。

  现在,我已经说过了你不能用Java来实现Rails.但却并不意味着你不能用Java做一些同样优秀的东西。Java的力量可以以一种有趣的,神奇方式应用到一种全新的框架上。只是还没人做那些事情。每个人都对J2EE这个糕点趋之若骛,以致于没人以一种更加激烈,更加动态的方式来重新考虑问题。尽管有人提出一个基于Java的杀手级的框架可以与Rails做同样多工作, 它一定也不能做的象Rails一样。

  5,具有良好设计的Java应用能够很好地支持特性的扩展――设计好你的类和包,那么你的心情将舒畅好长的一段时间。能否有团队编写出一个真正大型的Ruby应用?它是否具可维护性?或者还是RoR只能小打小闹?

  设计良好的应用无论是以何种语言编写的都能够很好地支持特性的扩展。糟糕的设计无论是何种语言就不能了。同时也有了如何才是大型应用的定义的问题。我用Ruby写的第一个rails应用部署到生产也不够5,000行代码,但是我之前用其他语言编写的同样大小的应用却达到了50,000行代码,所以如何定义大型是个问题。

  有团队可以编写一个可以支持大量特性,运行良好,时间上具备可维护性的Ruby on rails应用吗?是的,毫无疑问。在使用了Ruby on Rails一段时间后,我将有信心用Rails解决任何尺寸的web应用问题。但是,那是因为我在它上面花费了一些时间,认识到编写一个具有良好设计的应用是有可能的。

  也就是说,很有可能现在正有几十个垃圾的Ruby on rails应用在编写中。几百或者几千个都有可能。如果你不知道你正在做什么,你将会编写一个垃圾的应用。

  6,那么我们回到了web应用,你可以在桌面上使用ruby,或者我们是否一直要用C#,面向对象C还是OS服务商支持的语言编写UI?

  嗯,我的生活的一部分就是回到web应用。它对我来说是一个很好的还环境,因为自从1994年开始我就一直在做基于web的工作。但是现在我将开发基于桌面的应用。而且人们对桌面应用的需求还很大。我可不想要一个网络的office.你也不想把一些象Aperture的东西建造成一个web应用吧。

  你现在可以使用Ruby去建造一个引人注目的桌面应用吗?不,相关的工具包还不存在。但是如果存在了恰当的工具包――这是有可能的。那就没有什么东西可以阻止它成为一个好的桌面应用语言了。那是说,我已经发现利用平台的最好的方法就是尽量的本地化-贴近平台,不管它是一个操作系统或者还是一个web应用框架。当我在Mac上的桌面工作,我需要写面向对象C和Cocoa.当我用Rails的web工作,那意味着使用Ruby.而对于操作系统方面的工作,我需要用到C和shell.在这个讨论中不会只有唯一的答案。

  我认为这就是最近对Ruby on Rails关注和屏弃以有色Java眼镜看待世界的真正胜利。Ruby并不会成为下一个Java,完全不。而是Ruby on Rails将会帮助打破了这样的一个观点—— “只有一个正确的方法”,不是的。解决问题的方法有千百条。真正的,他们中没有一个是明显的胜者。只有解决方案有优势的位置。

  我想就像我们在其中工作,吃饭和居住的建筑物一样。一些建筑物最好是用水泥和钢筋筑造。其他的是用砌筑。还有其他的最好是用木材,并且那样做是有理由的。没有人会跳起来说“所有的建筑物一定要用砖头筑造!”,那样太愚蠢了!同样的道理,不是所以的应用都应该要用Ruby on Rails或者Django或者J2EE或者Perl来编写的。对于任何一个特定的工作都有大量的工具。还有新的工具等待去发掘呢。诀窍就是决定最优秀的那个。

  让我们从夸夸其谈回到你的问题:在web应用的范畴,很容易出现一个新的框架的,因为你并不是与视频卡,GUI和应用在上面跑的整个系统之类打交道。除非是你愿意开发一个自己的框架,你必须面对选择使用哪个框架的选择。在桌面上也是同样的道理。你可以创建你自己的框架,做任何你想要的做的,但是该建议却不比你自己为web创建一个新框架容易。

0
相关文章