枫叶交流论坛



 
标题: Rails案例研究 RubyonRails开发和Java开发有着本质的不同。本文将概述使用Rails从头开发一个复杂、可伸缩的Web站点
admin





UID 1
精华 0
积分 4707
帖子 3656
阅读权限
注册 2006-12-23
状态 离线
发表于 2007-4-28 21:10  资料 短消息 
Rails案例研究 RubyonRails开发和Java开发有着本质的不同。本文将概述使用Rails从头开发一个复杂、可伸缩的Web站点

作者: Bruce Tate,  出处:developerWorks 中国, 责任编辑: 叶江, 
2007-04-27 13:00
  Ruby on Rails 开发和 Java 开发有着本质的不同。本文将概述使用 Rails 从头开发一个复杂、可伸缩的 Web 站点时所发现的二者的主要差异……

  Rails 开发人员常常把 Java 开发人员看作是沉闷而劳碌的老古董。而 Java 崇拜者则常常认为 Ruby on Rails 只是一个玩具,根本不能用于任何严肃的软件开发。作为一名对这两种技术都有着广泛使用经验的顾问,我认为真实的情形介于这两种观点之间。由于跨越边界 系列文章即将结束,因此我打算对它们再作一次比较。本文并非考察某种特殊的技术或语言,而是主要介绍我当前正在从事的项目,并将它与我以前从事的 Java 项目进行比较。

  业务问题

  不论是 Ruby on Rails 框架还是任何 Java 框架都不能解决所有问题。为了提高成功的几率,需要长期、细致地考察业务问题,理解周围的各种假定情况,以及了解您的团队。只有这样才能选出正确的语言来进行开发。

  去年,Arvato Systems 聘请我带领团队构建 ChangingThePresent.org,它是一种新平台,用于将非赢利性团体和捐赠人组织在一起。与很多 Internet 公司一样,我们向客户展示了可购买的实际产品。与其他公司不同的是,这些 “产品” 指的是提供机会,比如:一名癌症研究员一小时服务收费 50 美元、帮助盲人收费 30 美元,或者保护一英亩雨林一个月收费 20 美元。我们面临两大挑战:一份很紧凑的时间表和长期的复杂性。

  开发工作从九月份开始,要求必须在十一月份之前建立起一个站点,以便有机会赶上圣诞节期间的通信量高峰。(最终我们超出了十一月份这个期限两星期。)在其他开发语言中,基于 Java 的解决方案可能要花费 6 到 18 个月才能完成这一任务。因此生产力是一个很重要的考虑因素,这与 Java 部署思想相悖。

  通过对竞争对手和项目的考察,我们了解到:我们希望能够每天给站点带来几百万次点击的通信量。而我们需要每天有几十万次成功的点击,因此可伸缩性也是一个考虑因素。这与 Java 部署思想相符。

  最后,我们了解到:发布初始站点只是一个开始。我们只实现了总体规划的百分之三。因此我们所选的技术需要根据复杂性和负载作出一些调整。我认为 Ruby 语言在复杂性方面会更易于调整,因为它提供了对更高级语言和特性(如开放类)的支持,以及具有更少配置需求和更简单、集成化编程模型的 Rails 框架。

  虽然我们面临着时间和可伸缩性方面的挑战,但是也拥有一些其他的有利因素。我们拥有一张完全空白的候选名单:可以选择想要的任何技术、任何团队。可以定义项目、培训和全部的技术。我们可完全自由地作出选择。

  Java 语言是一种优秀的通用语言。它总是应用于新的技术领域,如嵌入式系统和移动设备。Java 语言在广泛关注的集成方面也表现优秀。它具有高性能、流行并受到平台的良好支持。但是正如您在本系列中所了解到的那样,Java 语言并不是用于数据库支持的 Web 应用程序的 green-field 开发的最佳选择。

  相比之下,Ruby on Rails 框架则是新的。并没有很多人使用 Rails 开发高通信流量的站点,并且几乎不存在什么使用 Rails 多年开发项目的经验。但它仍然是一种高生产力的数据库支持的 Web 应用程序开发的框架。最后,尽管我们对 Rails 缺乏开发长期项目的经验和并未得到广泛部署有所顾虑,但那份紧凑的时间表驱使我们选择了 Ruby on Rails。

  作出这个决定之后,我们发现招募项目人才非常容易。我们还发现早期的生产力优势非常显著 —— 甚至比预期的还要好。我们确实遇到了一些早期的稳定性问题,因此加强了测试工作的力度。此后稳定性得到了极大的改进。

  原理

  每个框架设计者都使用一组假定来构造该框架的重写原理。学习遵守该原理的约束可使您愉快地进行编程,而挑战这些约束则会使您的编程受挫。Rails 框架和 Java 框架拥有很多不同的原理。

  Rails 是一种集成框架,需要使用高度利用 Ruby 语言的动态本质。Rails 开发人员强调框架的生产力特性而不是工具特性,并且常常将 Web 架构看得非常简单。Java 设计者通常必须分块地组合开发环境,独立地选择持久性、Web 和集成层。他们通常严重地依赖工具来简化核心任务。Web 架构设计趋向于较为复杂。

共2页。 1 2 :
顶部
[广告] 全新不用K线图的傻瓜股票分析软件财富股市侦探准确性高www.cf008.com
admin





UID 1
精华 0
积分 4707
帖子 3656
阅读权限
注册 2006-12-23
状态 离线
发表于 2007-4-28 21:10  资料 短消息 


作者: Bruce Tate,  出处:developerWorks 中国, 责任编辑: 叶江, 
2007-04-27 13:00
  Ruby on Rails 开发和 Java 开发有着本质的不同。本文将概述使用 Rails 从头开发一个复杂、可伸缩的 Web 站点时所发现的二者的主要差异……

  完全集成

  Java 框架往往是解决一个小问题(比如持久性或查看组织),而 Rails 则是一个集成环境。Rails 开发人员的优势在于不必解决与许多不同框架集成的问题。大多数 Hibernate 开发人员陷入了过早关闭与 Java Web 框架之间的连接的陷阱。Rails 视图框架是从头构建的,以便与 ActiveRecord 集成(Rails 持久性框架)。当您考察用于 Web 服务、配置和插件的 Rails 框架时也会发现类似的经验。Java 编程支持各种不同的框架,对于所有这些框架使用不同的集成策略。

  Java 开发人员的优势在于选择。如果您需要从头构建一个框架,则可能要考虑使用基于 SQL 的解决方案用于数据库集成(如 iBATIS 或 Java 编程中基于 JDBC 的包装框架之一)。反过来,如果要使用一种古老的模式进行编程,则可能要使用对象关系映射框架(如 Hibernate)。相比之下,如果您使用 Rails,则拥有一个主要选择:ActiveRecord。这意味着 Java 框架提供了更多的选择,有时能提供更好的集成开发项目的解决方案。但是由于我们要开发一个 green-field 项目,因此选择算不上是一个问题。

  一种动态语言

  Rails 原理的下一个主要部分是动态编程语言。Java 工具往往可以有效地使用 Java 类型模型提供的额外信息。工具可以识别错误和有效地重构代码。Rails 还可有效地利用编程语言的优点。Ruby 是一种构建特定于域的语言(DSL)的理想语言。Rails 集中使用 DSL 来完成从构建模型对象之间的关系到指定自定义组件(如状态机器或可上传的图像)的所有工作。动态语言常常更加简洁,因此 Rails 项目比 Java 项目要简练得多,可让用户更简练地表达代码和配置。在 ChangingThePresent.org 项目中,我们发现技术顶尖的程序员可达到更高的生产力,但是我们确实需要招募经验更丰富的开发人员。我对这种妥协非常满意。

  传统的 Java 程序员对 IDE 有着近乎虔诚的热爱,造成这一现象有充分的理由。IDE 提供了语法的完整性检查、修正了小错误并提供了增量编译以便更快地完成编码、编译、部署和测试这样的周期。最近几年来,开发环境开始更好地利用编译循环和静态类型提供的信息。IDE 现在编辑抽象语法树(AST),而不是(或者同时)编辑代码的文本表示。这一策略允许使用强大的代码重构工具,而使用静态类型语言的同样方法来实现此功能则困难得多。

  静态类型确实能更好地使用工具,但是也存在缺点。强制使用静态类型通常需要编译器,而编译步骤必然会降低生产力。使用 Rails,我可以更改一行代码并重新加载浏览器,就可立即看到更改的结果。与 Java 开发人员相比,大多数 Ruby 开发人员只使用一种很好的编辑器。TextMate 是最流行的 Ruby on Rails 编辑器,它提供了语法突出显示、代码完整性检查,以及一些频繁使用的结构的良好的模板支持。而当发现可将所有简单的基于 Ruby 的脚本(用作基本的 Rails 工具包)放入编辑器中时,您会更加喜出望外。与纯粹的调试器不同的是,我可以使用断点脚本,该脚本可停止特定的应用程序,进入一个 Ruby 解释程序,我可在其中调用方法、检查变量的值,以及甚至在恢复执行之间修改代码。

……

共2页。 9 1 2
顶部
[广告] 全新不用K线图的傻瓜股票分析软件财富股市侦探准确性高www.cf008.com
 


当前时区 GMT+8, 现在时间是 2008-12-2 04:38

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.116553 second(s), 6 queries

清除 Cookies - 联系我们 - 枫叶技术支持. - Archiver - WAP