﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Junky's IT Notebook-随笔分类-敏捷开发</title><link>http://www.blogjava.net/junky/category/23636.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 28 Jun 2007 14:35:06 GMT</lastBuildDate><pubDate>Thu, 28 Jun 2007 14:35:06 GMT</pubDate><ttl>60</ttl><item><title>Ruby，Java的劲敌</title><link>http://www.blogjava.net/junky/archive/2007/06/28/126703.html</link><dc:creator>junky</dc:creator><author>junky</author><pubDate>Thu, 28 Jun 2007 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/junky/archive/2007/06/28/126703.html</guid><wfw:comment>http://www.blogjava.net/junky/comments/126703.html</wfw:comment><comments>http://www.blogjava.net/junky/archive/2007/06/28/126703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junky/comments/commentRss/126703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junky/services/trackbacks/126703.html</trackback:ping><description><![CDATA[&nbsp;Bruce Tate的Beyond Java辩称，Java作为企业开发首选语言的统治最终会走向终结，企业创新也在十年内首次发生在Java的领域之外。在那本书中，他审视了那些让Java取得史无前例不同程度成功的特性，也思量了新语言超越Java要获得的特性。<br><br>后面的章节讨论了这个领域中竞争的其他语言，清楚的认为Ruby在独占鳌头。这些都来自于Tate自己的性能突破（由Ruby o&shy;n rails支持），Ruby语言的测试和来自于其他使用者也是有利的证据。<br><br>是不是Ruby将逐渐超过Java？Java中存在什么样的空白给Ruby填补？以及是否这两种语言将会水火不容？<br>为了调查这些状况，我们联系了几名最杰出的作者，博客和开发人员，得到了他们的见解。他们的回应全都会展现在这篇文章里了。<br><br><span style="COLOR: red">版权声明：任何获得Matrix授权的网站，转载时请务必保留以下作者信息和链接</span><br>作者:Chris Adamson；<a href="http://www.matrix.org.cn/user.shtml?username=ginge" target=_new><u><font color=#0000ff>ginge</font></u></a>(作者的blog:<a href="http://blog.matrix.org.cn/page/ginge" target=_new><u><font color=#0000ff>http://blog.matrix.org.cn/page/ginge</font></u></a>)<br>原文:<a href="http://www.onjava.com/pub/a/onjava/2005/11/16/ruby-the-rival.html" target=_new><u><font color=#0000ff>http://www.onjava.com/pub/a/onjava/2005/11/16/ruby-the-rival.html</font></u></a><br>译文:<a href="http://www.matrix.org.cn/resource/article/44/44288_Ruby+Java.html" target=_new><u><font color=#0000ff>http://www.matrix.org.cn/resource/article/44/44288_Ruby+Java.html</font></u></a><br>关键字:Ruby;Java<br><br><strong><span style="FONT-SIZE: 16px">Bruce Tate：一石激起千层浪</span></strong><br><br>&nbsp;&nbsp; Bruce Tate并不是作为一个局外者写就《超越Java》这边书的。他的顾问公司专注于Java 持久化框架和轻量级开发方法，同时他也是这些流行的Java图书的作者， Spring: A Developer's Notebook, Better, Faster, Lighter Java, 以及 Bitter Java。<br><br><strong>1，在《超越Java》中你花费了大量的时间在Ruby上面，看起来是它像在你说那些将超越Java竞争者中出类拔萃。你觉得是什么使Ruby比 PHP，Python这类语言优越？</strong><br><br>这些都是好语言，但是都有一些缺点。对大型应用，PHP和Perl不能连续地产生可读的代码。Lisp，Python和Smalltalk这些就缺少了伟大语言好像应该拥有的催化剂。Ruby是一种好语言，和催化剂（Rails）提供了引人注目得新价值（以效率的角度）以及还在飞速地增长。Ruby不一定是最好的语言，但是它将是我所见过最有可能的。Ruby不大可能在委员会那里超过Java。它很有可能首先在一个更小但是却重要的环境中取得好成绩。这个环境也就是一个有web UI大的胖关系数据库。<br><br><strong>2，是否Rails就意味着Ruby？其他语言包括Java难道就不能实现同样的思想？</strong><br><br>如今，Rails就是超过象Netscape之类语言的催化剂，具有Java一样的功能，可通过网络实现应用的传送。但是我认为Rails很有可能仅仅是Ruby元编程框架浪潮的第一波。<br><br><strong>3，你的书中很多都基于典型的&#8220;将一个web接口连接到数据库&#8221;场景，Ruby的成功案例看上去也仅仅是一两个开发人员的小项目。但是你也承认了Java的重量级企业框架对一些项目的价值（即大型系统上的大型应用）。什么情况下一个项目对于RoR来说过于大的呢？如果一个RoR在那方面的特性发展缓慢呢？</strong><br><br>有Ruby和小团队你可以做很多事情。基础代码几乎都是一个人写就的，但却关乎整个公司的生计。在一些主要的公司开始进行认真的尝试之前，我们不知道你可以利用ruby或者rails到什么程度。其中一个最吸引我的事情是经济的规模，更小的规模。万一生产力的数字是真实的呢？万一确实可以得到5X的增长？那么你可以在一个部门内划分工作，将工作划分给团队中的一个。交流将很少会成为问题。管理和疏忽也很少会成为问题了。我们都知道对于一间公司增长, tipping points意味着什么。因为增加沟通和管理的级别会产生很多的障碍, 所以一间公司增长要超过1，5，10，40，甚至100倍是很困难的。但是，在这一点上, Ruby o&shy;n Rails的可扩展性是非常的好。<br><br><strong>4，你是否看到Java开发人员转向Ruby吗，还是Ruby将会给新一代的开发人员采用？</strong><br><br>我觉得两者都有可能。有开发人员不能容忍学习servlets， Spring， XML， Hibernate， Struts 然后还要学习一些 UI 粘合的框架。在Rails中，他们将会完全给释放出来。同时也有Java开发人员已经在寻找更加优势的方法，他们发现了Ruby o&shy;n Rails。接受了Rails的Java梦想家们的数目是令人惊愕的，他们有Thought Works，James Duncan Davidson，Stuart Halloway 更有 David Geary。<br><br><strong>5，难道Java本身就不能做一些事情来维持它的杰出地位？如果过于复杂和膨胀，什么可以阻止开发人员倒退到jdk 1.4？</strong><br><br>Java将会继续处于顶峰,并在企业应用上保持良好的表现，但是时间不会停滞不前。在某种意味上它终将会给替代。我们将需要一个更高级别的抽象。我认为我们最好的希望就是在JVM上做充足的投入，更好地支持动态语言, 拥抱新的事物，对于旧有的java代码,则最好是保留保守的态度。<br><br><strong>6，我们应该期望Ruby在其他领域引起轰动？如果对于开发web应用它是如此不错，假如Ruby有的可以使用的合适的UI框架，会不会在桌面应用也实用呢？</strong><br><br>现在说什么还为时过早。如今，尽管Ruby是有催化作用(Rails)的语言，但是它仅仅是一个候选。以后将会发生什么？我想谁也不知道。<br><br><br><strong><span style="FONT-SIZE: 16px">James Duncan Davidson：尝试新事务</span></strong><br><br>如果你使用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》<br><br><strong>1，上一次我们见到你的时候，你还是那个《Mac desktop apps in Cocoa》家伙。而现在，我在你的blog上看到你已经深深地陷入了Rails。那是什么回事？</strong><br><br>我当时穷的要命和急切地需要钱。那时我刚刚买了一幢新房，并且抵押付款期限就快到期了――噢，<br>等会，你想我认真点吗？好吧，事实是我和我的几个朋友已经一直在想一起工作一段时间了。当恰当的时机到的时候，我们给项目做了技术评估，Rails成了首选。那时我还没用过Rails或者Ruby。但是我是不会让小小的需要学习阻碍我去做那个项目的。今年我已经学习了三种，可能四种语言了。我不再相信一种语言可以做任何事了。如果我需要学习一些新知识去一些事情，我将全力以赴去学好它。<br><br><strong>2，你对Rails有什么看法？</strong><br><br>主要是简单性。完成事情的容易程度。我做的那个应用的第一个项目原来是一个基于Java的web应用。每个人都知道一定会有一种更好，更快，更容易的方法的。Ruby一直都是一种好语言――并且是一种有趣的语言――因此建立于它之上的这个框架，它应得到关注。<br><br><strong>3，Ruby的晦涩和Rails的新颖对客户来说会不会是一个问题？</strong><br><br>不全是。如今事实上恰恰相反。有太多潜在的工作, 缺并没有足够的人在真正地开发Ruby o&shy;n Rails应用。<br><br><strong>4，为什么Ruby会如此特殊？难道Rails就不能在其他语言中实现？难道它就不能给Java实现？</strong><br><br>很少有其他语言可以完成Rails，或者像Rails那样的。Java不在他们之列。Rails从Ruby中获取了一些妙不可言的东西，尝试用另一种语言复制它不仅是对Rails所做的是一个浪费，对其他语言来说也是一个浪费。但是它的概念一定会在其他非常动态的，动态类型语言中得到很好的应用。<br><br>确实，我很兴奋的看到其他项目正实现一些从Rails衍生的主意到其他平台中。例如作为一个Python里的Rails版本，Django得到了一些固定的发展。但是，实际上它是Python自己的庞然大物，它如何成长将会非常有趣。<br><br>现在，我已经说过了你不能用Java来实现Rails。但却并不意味着你不能用Java做一些同样优秀的东西。Java的力量可以以一种有趣的，神奇方式应用到一种全新的框架上。只是还没人做那些事情。每个人都对J2EE这个糕点趋之若骛，以致于没人以一种更加激烈，更加动态的方式来重新考虑问题。尽管有人提出一个基于Java的杀手级的框架可以与Rails做同样多工作, 它一定也不能做的象Rails一样。<br><br><strong>5，具有良好设计的Java应用能够很好地支持特性的扩展――设计好你的类和包，那么你的心情将舒畅好长的一段时间。能否有团队编写出一个真正大型的Ruby应用？它是否具可维护性？或者还是RoR只能小打小闹？</strong><br><br>设计良好的应用无论是以何种语言编写的都能够很好地支持特性的扩展。糟糕的设计无论是何种语言就不能了。同时也有了如何才是大型应用的定义的问题。我用Ruby写的第一个rails应用部署到生产也不够5,000行代码，但是我之前用其他语言编写的同样大小的应用却达到了50,000行代码，所以如何定义大型是个问题。<br><br>有团队可以编写一个可以支持大量特性，运行良好，时间上具备可维护性的Ruby o&shy;n rails应用吗？是的，毫无疑问。在使用了Ruby o&shy;n Rails一段时间后，我将有信心用Rails解决任何尺寸的web应用问题。但是，那是因为我在它上面花费了一些时间，认识到编写一个具有良好设计的应用是有可能的。<br><br>也就是说，很有可能现在正有几十个垃圾的Ruby o&shy;n rails应用在编写中。几百或者几千个都有可能。如果你不知道你正在做什么，你将会编写一个垃圾的应用。<br><br><strong>6，那么我们回到了web应用，你可以在桌面上使用ruby，或者我们是否一直要用C#，面向对象C还是OS服务商支持的语言编写UI？</strong><br><br>嗯，我的生活的一部分就是回到web应用。它对我来说是一个很好的还环境，因为自从1994年开始我就一直在做基于web的工作。但是现在我将开发基于桌面的应用。而且人们对桌面应用的需求还很大。我可不想要一个网络的office。你也不想把一些象Aperture的东西建造成一个web应用吧。<br><br>你现在可以使用Ruby去建造一个引人注目的桌面应用吗？不，相关的工具包还不存在。但是如果存在了恰当的工具包――这是有可能的。那就没有什么东西可以阻止它成为一个好的桌面应用语言了。那是说，我已经发现利用平台的最好的方法就是尽量的本地化-贴近平台，不管它是一个操作系统或者还是一个web应用框架。当我在Mac上的桌面工作，我需要写面向对象C和Cocoa。当我用Rails的web工作，那意味着使用Ruby。而对于操作系统方面的工作，我需要用到C和shell。在这个讨论中不会只有唯一的答案。&nbsp;&nbsp;&nbsp;&nbsp;<br><br>我认为这就是最近对Ruby o&shy;n Rails关注和屏弃以有色Java眼镜看待世界的真正胜利。Ruby并不会成为下一个Java，完全不。而是Ruby o&shy;n Rails将会帮助打破了这样的一个观点-- &#8220;只有一个正确的方法&#8221;，不是的。解决问题的方法有千百条。真正的，他们中没有一个是明显的胜者。只有解决方案有优势的位置。<br><br>我想就像我们在其中工作，吃饭和居住的建筑物一样。一些建筑物最好是用水泥和钢筋筑造。其他的是用砌筑。还有其他的最好是用木材，并且那样做是有理由的。没有人会跳起来说&#8220;所有的建筑物一定要用砖头筑造！&#8221;，那样太愚蠢了！同样的道理，不是所以的应用都应该要用Ruby o&shy;n Rails或者Django或者J2EE或者Perl来编写的。对于任何一个特定的工作都有大量的工具。还有新的工具等待去发掘呢。诀窍就是决定最优秀的那个。<br><br>让我们从夸夸其谈回到你的问题：在web应用的范畴，很容易出现一个新的框架的，因为你并不是与视频卡，GUI和应用在上面跑的整个系统之类打交道。除非是你愿意开发一个自己的框架，你必须面对选择使用哪个框架的选择。在桌面上也是同样的道理。你可以创建你自己的框架，做任何你想要的做的，但是该建议却不比你自己为web创建一个新框架容易。<br><br><br><strong><span style="FONT-SIZE: 16px">Robert Cooper：带上利器</span></strong><br><br>ONJava的博客Robert Cooper最近在他的blog上撰写了<br>&#8220;It's the End of the World as We Know It."&#8221;来回应一些&#8220;Java时代末日&#8221;的言论。Cooper是亚特兰大地区致力于企业集成和web/web服务应用的J2EE开发人员，同时也是资讯和娱乐站点screaming-penguin.com的经营者。<br><br><strong>1，你曾经说过&#8220;长期以来&#8216;企业级&#8217;Java一直未能逃脱的一个很悲哀的事实是500个应用才需要&#8216;企业级&#8217;的功能。&#8221;为什么Java开发人员采用了比他们实际需要更加复杂的框架？</strong><br><br>好的，有一些因素导致了这样现象。一个是&#8220;buzzword compliance&#8221;. 你想使用你&#8220;应该&#8221;要使用的东西。我记得在99年一些大项目采用了entity bean作为数据模型，但是我们很快发现了性能是如此的恐怖以致于我们最终又转到了手写的DAO层。<br><br>最近对javax.persistence的修改，一定程度也表明了，EJB的失败一直都是缺乏不同级别的支持。理想的情况是，如果我仅需要基本的，简单的ORM-类型功能，我就能够很快的得到。如果我想深入真正复杂的东西，给我一个&#8220;更深层&#8221;的有分布式事务的视图。然而，尽管在那样高的层次上，在EJB1.1/1.2的世界里，看看你需要多少行代码1）从JNDI获得Home存根，2）做一个find by，3）做改变，4）提交事务。对于一般的应用，答案没有理由只应独一无&#8216;二&#8217;。然而更新颖的Java框架（阅读：Spring + Hibernate）使你获得了那一个&#8216;二&#8217;，但是你也要做一大堆的配置。那样，很多方面, 混淆了你的代码。大量的因素促成我我的演说&#8220;拥有一个有效的默认配置/操作&#8221;，但是那是不同的故事了。<br><br><strong>2，你一向不屑把Ruby o&shy;n Rails看作是technorati中的后起之秀。你是根本就不想接受还是只是厌恶这种夸夸其谈呢？</strong><br><br>并不是我真的这样不屑。Rails在很多重要的方面来说非常优秀。事实上，如果PHP是那要死的飞行意粉怪，并且要给Ruby替代，我想那将是一个大进步。然而，尽管Ruby确实扫除了过去的错误，它仍然缺乏Java那么多的功能，但是Ruby为快速开发提供了一个引人注目新的开发模型。你可能反对，这仅仅是时间问题，假以时日，它一定可以的。然而，我对Ruby/Rails有一些敌意, 是因为我一些一直都在希望java能够拥有的特性，一直长期希望J2EE能够拥有简单性。<br><br><strong>3，那么是什么促使你继续留在Java阵营，你看中它的什么呢？</strong><br><br>按照我日常的工作，在400上没有必要使用Ruby调用PCML/RPG程序。同样，那些大量的java拥有的 &#8220;企业级&#8221;特性很重要，更不用说它是一个统一的打包和部署的框架。<br><br><strong>4，你说&#8220;然而，Java像是变成了无所不包的了，它不是&#8216;web的语言&#8217;，也不是桌面应用的&#8216;一等公民&#8217;。&#8221;Java是否应该放弃一些野心，专注在一个更小应用空间集合里？如果那样，放弃哪个？</strong><br><br>你也知道，我在我的站点上和一个绅士有很长的讨论。他指出了Java在J2ME世界的成功，TME/TiVo，置顶盒--或许是下一代DVD的混战。这些对于开发来说都是有效的领域，但是我认为如果Java变成了这样的一个系统，那将是一个损失。<br><br>使我恼怒的是Java发明的&#8220;applet&#8221;，你看看Flash（加上Flex/Laszlo），它的&#8220;Cool&#8221;（快速的用户体验）和&#8220;强大的&#8221;（我免费的得到数据绑定/SOAP/XML-RPC等等）使applets无地自容。&#8220;强大的&#8221;缺不需要JRE的事实立马扼杀了applet的生存空间，如果有人能以接近数目的代码行数向我展示Laszlo Dashboard demo，我可能已经在那个方面得到了一个核心发展。Cool是需要很大的代价的.<br><br><strong>5，Java越来越多的复杂性，越来越多的竞争框架，这是你之前批评很多次的。我们用JDK 1.2的语义编码，手工编写servlet是不是更好呢？</strong><br><br>我认为的复杂性是很难管理。例如，如果你从一个VB背景开始关注使用Swing，那是非常令人难受的。当你需要做一些技巧性的东西，没有一个&#8220;简单&#8221;接口可以Cast成更加&#8220;高级&#8221;的接口。坦白的说，最近出现的一个有用的东西就是JAX-P了。在我头脑中，还有一些东西jre没有的，但是却是必须存在的。Swing存在有多久了？然而还没有东西可以给你像VB5的数据绑定表格控制的功能。<br><br>我想JDK 1.5的提升是非常显著的。当我谈到&#8220;降低复杂性&#8221;，我真正指的是A）对于一件事情, 给予更多标准的途径来完成，因此如果我真正需要一些不同的特性，我仅仅需要一个外部的框架。B）设计更加友好的API――认真的说，看看JavaMail的JavaDoc，看看研究出如何发送一个HTML格式的email要花费你多长时间。C）增加更加通用的功能到核心运行环境，提供一个可以分别与基于Flash，RIA和桌面领域的Avalon/Sparkle相比拟的风格和性能。同样的，我记得以前天真地从VB/VC++转到Java世界，想道&#8220;天哪，本来一直就应该是这样的。&#8221;几年前，我不能说我看到任何增加到Java的东西都是和我有同样的想法（除了将要来临的JAX-WS API）。看看Rails，你会有同样的感觉。看看Flex你也有同样的感觉。看看Avalon你也有同样的感觉。不是我不喜欢Ruby，只是看上去Java不再可以与时俱进让我很沮丧。<br><br><br><strong><span style="FONT-SIZE: 16px">Bill Venners：发行人的观点</span></strong><br><br>Artima是很多Java开发人员高度关注的站点。长久以来它的发行人Bill Venners是一个Java著作者和顾问。同时也是一个JavaWorld的专栏作家，Inside the Java Virtual Machine的作者。所以，当我们注意到Artima上的Ruby内容，我们必须找出背后的故事。<br><br><strong>1，Artima在很多人眼中一直都是作为一个Java站点，但是你刚创建一个一个新的Ruby版面， Artima当今很多的特色文章都是关于Ruby的，是什么促使了这种改变？</strong><br><br>没有改变。Artima曾经是一个清一色的Java站点，但是几年前我们扩展了更一般开发焦点，开始涵盖其他语言。例如，我们开始在&#8220;Python Buzz&#8221;集成Python Blogs，在&#8220;The C++ Source&#8221;刊发C++文章。我们创建了Ruby Code &amp; Style简报来作为Ruby社区通过高质量，编辑的文章分享信息的地方。<br><br><strong>2，你是否认为你的Ruby报道是作为一种趋势，或者服务已作出改变的开发人员？</strong><br><br>我们创建Ruby简报仅仅是为了服务Ruby社区。我不知道是不是有一个趋势，我也没有看到很多Java开发人员转到Ruby。人们并不只是仅仅需要用一种语言编程。我想掌握一种系统语言是有好处的，例如Java或者C++，和一种脚本语言，例如Ruby或者Python，而且能够用两者工作。那样的话你就可以使用你手中最好的工具来工作了。<br><br><strong>3，你的最初少数Ruby文章几乎没有涉及Rails。你是否认为Rails背后有一个大的Ruby故事？你还知道有什么东西使用了Ruby？</strong><br><br>除了知道Rails在市场上很有卖点，我对Rails了解的不多。Rails商人一遍又一遍传递了这样的一个信息，就是Rails能够助你很快的创建web应用。每个人都很清楚的收到了这个信息。我认为这是一个非常好营销工作。我也相信这个信息，但是快速的创建一个web应用不仅仅是人们所关心的。有时人们也关系与数据库的集成，应用服务器的集群，在这种情形，其他工具可能比Rails更有效率。就Ruby而言，我认为它是一种适合脚本和创建系统的多用途的编程语言，与Python同种类别。<br><br><strong>4，即使在Rails以前，对比于其他&#8220;敏捷&#8221;语言，人们都谈论到Ruby独特的吸引Java开发人员。你认为Ruby有什么特别之处呢？为什么它对于Java移民这么好？</strong><br><br>我不相信将会有很多Java移民或者Ruby尤其适合Java程序员。现在大肆宣称围绕着Ruby，或许是因为Rails的买卖，所以或许你印象中的移民就是来自于那些宣称的印象。Ruby是一种好的语言，但是Java也是，Python也是。<br><br><strong>5，你是否认为我们将会看到很多Java开发人员开始学习Ruby或者转到Ruby，或者我们将看到一个新一代直接跳过Java而用Ruby代之？</strong><br><br>Java不会离我们而去。在Artima，我们选择了Java作为新的体系架构，而不是Ruby，或者Python，就是因为它是一个成熟的拥有免费和商用的大量工具和API的生态系统。相对于Java，是的，当使用Ruby或者Python编程的时候是有一些速度的提升，但是有了现代的像IntelliJ，Eclipse和NetBeans的 Java IDE，你可以在Java里走的更快。但是用Ruby编程是很惬意的，同时，如果有人可以从Ruby中找到他们的职业生涯，那么请全力以赴去实现。<br><br><br><strong><span style="FONT-SIZE: 16px">结语</span></strong><br><br>是否Ruby将横扫Java？不仅仅是虔诚的Ruby狂热者在预言这个场景。开发人员的需要观点, 就像Venners提出的&#8220;手上对工作最优的工具&#8221;。 至关重要的是，开发人员必须对正确理解和使用这些工具负责。也就不难看出Coopper对于EJB 1.0的大肆宣称的记忆和Davidson的预言&#8220;如今很有可能有很多垃圾的Ruby o&shy;n Rails应用在编写中&#8221;的联系了。无视技术，让市场的浪潮冲走是很危险的。不仅如此，很多人正在告诉我们使用Ruby会有相当大的效率提升，它确实是一个理想的工具，因此我们应该给予一定的关注。<br><br>作者感谢Bruce Tate, James Duncan Davidson, Robert Cooper, 和 Bill Venners。感谢占用了他们的时间与ONJava的读者分享他们的思想。<br><br>Chris Adamson是ONJava和Java.net的编辑，专攻Java，Mac Os X和多媒体开发的亚特兰大地区的顾问。
<p><br>(转载文章请保留出处：<a href="http://www.javajia.com/"><u><font color=#0000ff>Java家(www.javajia.com)</font></u></a>)</p>
<img src ="http://www.blogjava.net/junky/aggbug/126703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junky/" target="_blank">junky</a> 2007-06-28 09:05 <a href="http://www.blogjava.net/junky/archive/2007/06/28/126703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby on Rails学习笔记 (一) </title><link>http://www.blogjava.net/junky/archive/2007/06/28/126702.html</link><dc:creator>junky</dc:creator><author>junky</author><pubDate>Thu, 28 Jun 2007 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/junky/archive/2007/06/28/126702.html</guid><wfw:comment>http://www.blogjava.net/junky/comments/126702.html</wfw:comment><comments>http://www.blogjava.net/junky/archive/2007/06/28/126702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junky/comments/commentRss/126702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junky/services/trackbacks/126702.html</trackback:ping><description><![CDATA[　过去的一年多时间里净忙着准备出国，学习法语，然后就是在做一些很杂的事情，一直没有花多少时间在编程上。我的博士论文课题是《社会语义WEB》，也看了不少关于本体论和语义WEB方面的论文。前几天看到一篇关于本体论的文章，里面提到了很多目前非常流行的WEB2.0、TAG、AJAX相关内容。文章中我看到非常有趣的一段，大概是说：&#8220;从书籍销售情况就可以看出那种技术是当前最流行的技术，具体的数据我不太记得了，只记得JAVA书籍的销售量是增长了4%，C#增长了16%，Python增长了20%，Perl下降4%，而Ruby书籍的销售量增长了1552%（没错，我没少打小数点）&#8221;，<a href="http://radar.oreilly.com/archives/2005/12/ruby_book_sales_surpass_python.html"><u><font color=#0000ff>原文在这</font></u></a>。虽然Java书籍销售量基数肯定是远远大于Ruby书籍，但是如此之大的增长量还是引起了我的好奇，到底是什么东西能使相关科技书以这么大销售量增长（洛阳纸贵）。于是就在网上搜索了一些相关的文章来看。发现Ruby的确是很有意思的东西。<br><br>
<h2>
<h3>什么是Ruby on Rails</h3>
</h2>
<div>让我们先来看一张图片：</div>
<div>&nbsp;</div>
<div></div>
<div>&nbsp;<img alt="" src="http://static.flickr.com/28/55632873_4c0eba44ec.jpg?v=0"></div>
<div>看完这张图片，我心里充满疑惑，难道Ruby + Rails真的能够有这么好吗？</div>
<div>
<div>&nbsp;</div>
<div>心里有这么几个疑问：</div>
<div>１、Ruby是谁开发的？</div>
<div>２、Ruby是什么？</div>
<div>３、Rails是什么？</div>
<div>４、Ruby on Rails与目前已经有的开发语言相比有什么优点？为什么要使用它？</div>
<div>５、Ruby on Rails稳定吗？效率高吗？能够承受大数据量的访问吗？</div>
<div>６、Ruby on Rails有长远的发展前景吗？</div>
<div>&nbsp;</div>
<div>让我们一个一个的解开这些疑问：</div>
<div>１、<em>松本行弘"Matz"(Matsumoto Yukihiro)</em><em>是Ruby</em><em>语言的发明人，他从1993</em><em>年起便开始着手Ruby</em><em>的研发工作。他一直想发明一种语言，使你既能进行高效开发又能享受编程的快乐。1993</em><em>年2</em><em>月24</em><em>日Ruby</em><em>诞生了，1995</em><em>年12</em><em>月Matz</em><em>推出了Ruby</em><em>的第一个版本Ruby 0.95</em><em>。不久Ruby</em><em>便凭借其独特的魅力横扫日本，相信在不久的将来，Ruby</em><em>将走向世界。</em>Ruby是日本人发明的，这点让我很不是滋味，人也是很奇怪的，美国，欧洲比我们强还能接受，而日本比我们强我就&#8230;.</div>
<div align=left>２、Ruby是一种有着超级清晰语法的纯面向对象的编程语言，它能够让编程变得有趣和优雅（这点在后面的内容中确实得到印证）。Ruby成功的组合了Smalltalk的优雅以及Python的易用性，还有Perl的实用主义。Ruby起源于９０年代的日本，在过去的几年时间里随着更多的英语资料的出现变得更加的流行。</div>
<div align=left>３、Rails是一个用来开发数据库后台的WEB应用的开源框架。</div>
<div>４、到目前为止我发现Ruby on Rails最大的优点就是在于简单！RoR的核心思想就是&#8220;更少的编程，更简单的配置！&#8221;</div>
<ul>
    <li>
    <div align=left>安装和配置非常简单，不象Java需要安装运行环境，安装应用服务器，然后再进行一大堆的配置。在安装上Ruby和Perl很象，只需要装一个简单的解释环境就可以了（和Perl很象的地方很多，例如正则表达式的支持）。RoR避免了繁杂的XML配置文件，一个Rails应用程序只需要简单编程就可以通过影射和发现配置好所有的东西。你的应用程序和数据库里已经包含了所有Rails需要的东西。</div>
    <li>
    <div align=left>编码简单，很多代码都是可以自动生成，可以自动生成MVC，可以自动生成框架、Web服务。甚至你只要写上一行代码就可以实现以前使用Java上百行代码的工作量，比其他开发工具速度快１０倍！。当然越少的编程量就意味着越少的bug。</div>
    </li>
</ul>
<div>５、关于稳定性目前还没有很全面的数据，暂时还不太清楚。关于效率，从相关的资料上可以看到：<a href="http://www.duduwolf.com/cmd.asp?act=tb&amp;id=273"><u><font color=#0000ff>有人说RoR的性能和开发效率比java的struts+spring+hibernate经典搭配还要快15%-30%</font></u></a>。</div>
<div>６、RoR目前发展势头强劲，在使用RoR的过程中你将会发现它已经具备了作为WEB开发语言的本质。如果它能够以简单为主的理念继续发展，相信它将象当年的PHP和Linux在网络上引起新的一轮革命。</div>
<div>
<div id=ftn1>
<div></div>
</div>
</div>
</div>
<div>图片和部分内容转自：</div>
<div><a href="http://www.duduwolf.com/cmd.asp?act=tb&amp;id=273"><font color=#0000ff><u>http://www.duduwolf.com/cmd.asp?act=tb&amp;id=273</u></font></a></div>
<div><a href="http://www.neokeen.com/mornlee/2005/07/06/1120663087531.html"><font color=#0000ff><u>http://www.neokeen.com/mornlee/2005/07/06/1120663087531.html</u></font></a></div>
<div><a href="http://dev.csdn.net/article/73751.shtm"><u><font color=#0000ff>http://dev.csdn.net/article/73751.shtm</font></u></a></div>
<img src ="http://www.blogjava.net/junky/aggbug/126702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junky/" target="_blank">junky</a> 2007-06-28 09:03 <a href="http://www.blogjava.net/junky/archive/2007/06/28/126702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷的奇迹</title><link>http://www.blogjava.net/junky/archive/2007/06/28/126701.html</link><dc:creator>junky</dc:creator><author>junky</author><pubDate>Thu, 28 Jun 2007 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/junky/archive/2007/06/28/126701.html</guid><wfw:comment>http://www.blogjava.net/junky/comments/126701.html</wfw:comment><comments>http://www.blogjava.net/junky/archive/2007/06/28/126701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junky/comments/commentRss/126701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junky/services/trackbacks/126701.html</trackback:ping><description><![CDATA[应用Rails进行敏捷Web开发》
<h1 style="MARGIN: 0cm 0cm 6pt; PAGE-BREAK-AFTER: auto; TEXT-ALIGN: right; mso-pagination: none; mso-line-height-alt: 15.0pt" align=left><span style="FONT-FAMILY: 幼圆; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia; mso-font-kerning: 1.0pt; mso-font-width: 120%">敏捷的奇迹</span><span lang=EN-US style="FONT-FAMILY: Georgia; mso-font-kerning: 1.0pt; mso-font-width: 120%; mso-fareast-font-family: 幼圆"><o:p></o:p></span></h1>
<h3 style="MARGIN: 6pt 0cm"><span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; mso-bidi-font-size: 16.0pt"><o:p><font face=隶书 color=#1c1c1c>&nbsp;</font></o:p></span></h3>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">捧在你手上的这本书算得上一个奇迹：仅仅一年前当我向出版社推荐它时，编辑们还担心这样一本关于&#8220;冷门主题&#8221;的著作是否能够在国内受到关注，甚至是否值得去引进翻译它；而当芷薰刚刚完成这个第一版的翻译，编辑们已经迫不及待地把尚未正式出版的第二版塞到了他的手上。当然，你知道，这都是因为</span><span lang=EN-US style="LETTER-SPACING: -0.1pt"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang=EN-US style="LETTER-SPACING: -0.1pt"><o:p></o:p></span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在过去的一年中，</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创造了太多让人瞠目结舌的奇迹。这个新鲜的框架在短短时间内极速窜红，不仅大有在</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发领域一举超越</span><span lang=EN-US><font face="Times New Roman">PHP/Perl/Python</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等&#8220;老前辈&#8221;之势，甚至还震动了</span><span lang=EN-US><font face="Times New Roman">Java</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的世界，让众多有着多年</span><span lang=EN-US><font face="Times New Roman">J2EE</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发经验的架构师相见恨晚，连</span><span lang=EN-US><font face="Times New Roman">.NET</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">社群也未能在这场风暴中幸免。老话说&#8220;模仿是最真诚的恭维&#8221;，那么看看</span><span lang=EN-US><font face="Times New Roman">Groovy on GRails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US><font face="Times New Roman">SQL on Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US><font face="Times New Roman">Lisp on Line</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US><font face="Times New Roman">Trails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US><font face="Times New Roman">MonoRails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这些连名字都萧规曹随的框架如同雨后春笋般层出不穷，开发者社群对</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的认可早已溢于言表了。</span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作为</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的作者，</span><span lang=EN-US><font face="Times New Roman">David Heinemeier Hansson</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也随着他的作品一道，迅速步入了顶尖程序员的行列。这个生于</span><span lang=EN-US><font face="Times New Roman">1979</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年的丹麦小伙于</span><span lang=EN-US><font face="Times New Roman">2005</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</span><span lang=EN-US><font face="Times New Roman">8</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月在</span><span lang=EN-US><font face="Times New Roman">Google</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang=EN-US><font face="Times New Roman">O&#8217;Reilly</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">共同举办的&#8220;全球开源大会&#8221;（</span><span lang=EN-US><font face="Times New Roman">OSCON</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）上被评为&#8220;年度最佳黑客&#8221;；《连线》杂志把他的大照片放上了封面，标题是&#8220;地球上最炙手可热的黑客&#8221;。</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">于</span><span lang=EN-US><font face="Times New Roman">2006</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</span><span lang=EN-US><font face="Times New Roman">3</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月获得了</span><span lang=EN-US><font face="Times New Roman">Jolt</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">大奖&#8220;最佳</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发工具&#8221;奖项，第一本关于</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的著作——也就是你手上的这本书——同时获得了</span><span lang=EN-US><font face="Times New Roman">Jolt</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">大奖&#8220;最佳技术类图书&#8221;奖项。如果把刚刚过去的一年称为&#8220;</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年&#8221;，我相信并不为过，而且这股热潮还在不断蔓延升温。</span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">究竟有什么神奇之处，让一干人等为它心醉神迷？最直观的原因是，它封装了很多关于</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发的知识——</span><span lang=EN-US><font face="Times New Roman">Struts</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也允许你实现各种各样的功能，但那只是&#8220;能力&#8221;，却不是&#8220;知识&#8221;。你可以有</span><span lang=EN-US><font face="Times New Roman">100</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">种方式来组织你的</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用，</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则把一种最合用的方式直接放到你的手上。在用</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用时，你会感觉事事都那么贴心、处处都那么顺手，仿佛每个问题都已经有一个解决方案就在手边。这就是&#8220;知识&#8221;，</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的开发者们已经把他们开发</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用的经验融入到了这个框架之中。</span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.2pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">另一方面——在我看来是更加重要的——原因就在本书的标题中：</span><span lang=EN-US style="LETTER-SPACING: -0.2pt"><font face="Times New Roman">agile</font></span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.2pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。平心而论，我并不完全赞同芷薰对本书标题的翻译，因为</span><span lang=EN-US style="LETTER-SPACING: -0.2pt"><font face="Times New Roman">agile</font></span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.2pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实在是&#8220;敏捷&#8221;而非&#8220;快速&#8221;。&#8220;快速&#8221;仅仅是指速度而言；&#8220;敏捷&#8221;则不仅意味着开发速度快，而且还意味着应用程序具有能够随时应对变化的灵活性、让修改既有代码与添加新功能易如反掌的优雅性、以及在快速迭代中反复折腾也不会散架的高质量。现代企业（尤其是从事互联网业务的企业）随时面对着全球化经济的机遇与挑战，飞速变化的商业环境和业务使他们对</span><span lang=EN-US style="LETTER-SPACING: -0.2pt"><font face="Times New Roman">IT</font></span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.2pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提出了更高的要求：他们不仅要快速，更要求敏捷。</span><span lang=EN-US style="LETTER-SPACING: -0.2pt"><o:p></o:p></span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">正是一个具备了敏捷特性的</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发框架。除了框架本身的设计之外，它也得益于</span><span lang=EN-US><font face="Times New Roman">Ruby</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语言本身：这种语言比之</span><span lang=EN-US><font face="Times New Roman">Java/C#</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等语言更具动态性，它的语法能够随着不同的应用场景而进化演变，这就使得开发者能够在</span><span lang=EN-US><font face="Times New Roman">Ruby</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基础上创造出形形色色的</span><span lang=EN-US><font face="Times New Roman">DSL</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——简单地说，也就是让</span><span lang=EN-US><font face="Times New Roman">Ruby</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序看起来更像是在描述问题领域，而不是&#8220;编写计算机程序&#8221;。实际上，</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架本身就是针对</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用的</span><span lang=EN-US><font face="Times New Roman">DSL</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其中的</span><span lang=EN-US><font face="Times New Roman">ActiveRecord</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则是针对数据库的</span><span lang=EN-US><font face="Times New Roman">DSL</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。此外，</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">还内建了对于测试驱动、自动构建等敏捷实践的支持。语言、框架、开发过程的三位一体，让</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">具备了敏捷</span><span lang=EN-US><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发的全部要素。在阅读本书的过程中，读者就可以亲身感受到这种敏捷的体验。</span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作为新技术最热心的尝试者与敏捷方法最忠实的推行者，</span><span lang=EN-US><font face="Times New Roman">ThoughtWorks</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已经在</span><span lang=EN-US><font face="Times New Roman">Ruby/Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方面积累了相当丰富的经验，并且已经用</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行了好几个真实项目的开发。从芷薰开始翻译本书起，</span><span lang=EN-US><font face="Times New Roman">ThoughtWorks</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中国公司就与他建立了紧密的联系，并全程承担了对译本的审阅工作。如果你在阅读本书之后需要更多关于</span><span lang=EN-US><font face="Times New Roman">Ruby</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、关于</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、关于敏捷方法的知识，也许</span><span lang=EN-US><font face="Times New Roman">ThoughtWorks</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以给你提供必要的帮助。更多关于</span><span lang=EN-US><font face="Times New Roman">ThoughtWorks</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的信息，请关注</span><span lang=EN-US><font face="Times New Roman">ThoughtWorks</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中文网站：</span><span lang=EN-US style="COLOR: windowtext; FONT-FAMILY: 'Arial Narrow'"><a href="http://www.thoughtworks.com.cn/"><span style="COLOR: windowtext"><u>www.ThoughtWorks.com.cn</u></span></a></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></font></p>
<p class=Agile style="MARGIN: 4pt 0cm 4pt 1cm; LINE-HEIGHT: 15pt"><font size=2><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我想，亲爱的读者现在大概已经迫不及待地要翻开手上的书一探究竟了。那么，就请你不要犹豫，立刻随着</span><span lang=EN-US><font face="Times New Roman">David Heinemeier Hansson</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和芷薰一起进入</span><span lang=EN-US><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的世界吧。最后，祝你阅读愉快、编程愉快。</span></font></p>
<img src ="http://www.blogjava.net/junky/aggbug/126701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junky/" target="_blank">junky</a> 2007-06-28 09:02 <a href="http://www.blogjava.net/junky/archive/2007/06/28/126701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>