科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Ruby,Java的劲敌?1

Ruby,Java的劲敌?1

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

是否Ruby将横扫Java?不仅仅是虔诚的Ruby狂热者在预言这个场景。开发人员的需要观点, 就像Venners提出的“手上对工作最优的工具”。 至关重要的是,开发人员必须对正确理解和使用这些工具负责。

来源:IT专家网 2008年6月2日

关键字: 劲敌 RUBY java

  • 评论
  • 分享微博
  • 分享邮件
 Bruce Tate:一石激起千层浪

  Bruce Tate并不是作为一个局外者写就《超越Java》这边书的。他的顾问公司专注于Java 持久化框架和轻量级开发方法,同时他也是这些流行的Java图书的作者, Spring: A Developer's Notebook, Better, Faster, Lighter Java, 以及 Bitter Java。

  1,在《超越Java》中你花费了大量的时间在Ruby上面,看起来是它像在你说那些将超越Java竞争者中出类拔萃。你觉得是什么使Ruby比 PHP,Python这类语言优越?

  这些都是好语言,但是都有一些缺点。对大型应用,PHP和Perl不能连续地产生可读的代码。Lisp,Python和Smalltalk这些就缺少了伟大语言好像应该拥有的催化剂。Ruby是一种好语言,和催化剂(Rails)提供了引人注目得新价值(以效率的角度)以及还在飞速地增长。Ruby不一定是最好的语言,但是它将是我所见过最有可能的。Ruby不大可能在委员会那里超过Java。它很有可能首先在一个更小但是却重要的环境中取得好成绩。这个环境也就是一个有web UI大的胖关系数据库。

  2,是否Rails就意味着Ruby?其他语言包括Java难道就不能实现同样的思想?

  如今,Rails就是超过象Netscape之类语言的催化剂,具有Java一样的功能,可通过网络实现应用的传送。但是我认为Rails很有可能仅仅是Ruby元编程框架浪潮的第一波。

  3,你的书中很多都基于典型的“将一个web接口连接到数据库”场景,Ruby的成功案例看上去也仅仅是一两个开发人员的小项目。但是你也承认了Java的重量级企业框架对一些项目的价值(即大型系统上的大型应用)。什么情况下一个项目对于RoR来说过于大的呢?如果一个RoR在那方面的特性发展缓慢呢?

  有Ruby和小团队你可以做很多事情。基础代码几乎都是一个人写就的,但却关乎整个公司的生计。在一些主要的公司开始进行认真的尝试之前,我们不知道你可以利用ruby或者rails到什么程度。其中一个最吸引我的事情是经济的规模,更小的规模。万一生产力的数字是真实的呢?万一确实可以得到5X的增长?那么你可以在一个部门内划分工作,将工作划分给团队中的一个。交流将很少会成为问题。管理和疏忽也很少会成为问题了。我们都知道对于一间公司增长, tipping points意味着什么。因为增加沟通和管理的级别会产生很多的障碍, 所以一间公司增长要超过1,5,10,40,甚至100倍是很困难的。但是,在这一点上, Ruby on Rails的可扩展性是非常的好。

  4,你是否看到Java开发人员转向Ruby吗,还是Ruby将会给新一代的开发人员采用?

  我觉得两者都有可能。有开发人员不能容忍学习servlets, Spring, XML, Hibernate, Struts 然后还要学习一些 UI 粘合的框架。在Rails中,他们将会完全给释放出来。同时也有Java开发人员已经在寻找更加优势的方法,他们发现了Ruby on Rails。接受了Rails的Java梦想家们的数目是令人惊愕的,他们有Thought Works,James Duncan Davidson,Stuart Halloway 更有 David Geary。

  5,难道Java本身就不能做一些事情来维持它的杰出地位?如果过于复杂和膨胀,什么可以阻止开发人员倒退到jdk 1.4?

  Java将会继续处于顶峰,并在企业应用上保持良好的表现,但是时间不会停滞不前。在某种意味上它终将会给替代。我们将需要一个更高级别的抽象。我认为我们最好的希望就是在JVM上做充足的投入,更好地支持动态语言, 拥抱新的事物,对于旧有的java代码,则最好是保留保守的态度。

  6,我们应该期望Ruby在其他领域引起轰动?如果对于开发web应用它是如此不错,假如Ruby有的可以使用的合适的UI框架,会不会在桌面应用也实用呢?

  现在说什么还为时过早。如今,尽管Ruby是有催化作用(Rails)的语言,但是它仅仅是一个候选。以后将会发生什么?我想谁也不知道。

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创建一个新框架容易。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章