| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
2007 年 4 月 24 日
Ruby on Rails 开发和 Java™ 开发有着本质的不同。在跨越边界 系列的最后一期中,Bruce Tate 将概述使用 Rails 从头开发一个复杂、可伸缩的 Web 站点时所发现的二者的主要差异。
Rails 开发人员常常把 Java 开发人员看作是沉闷而劳碌的老古董。而 Java 崇拜者则常常认为 Ruby on Rails 只是一个玩具,根本不能用于任何严肃的软件开发。作为一名对这两种技术都有着广泛使用经验的顾问,我认为真实的情形介于这两种观点之间。由于跨越边界 系列文章即将结束,因此我打算对它们再作一次比较。本文并非考察某种特殊的技术或语言,而是主要介绍我当前正在从事的项目,并将它与我以前从事的 Java 项目进行比较。另外,我建议您阅读“跨越边界”系列的前几期文章,对相关主题作更深入的了解。这种直接的说明可让您在二者之间权衡利弊,并可能使您在数据库 Web 应用程序 green-field 的开发中通过使用 Rails 获益。
业务问题 网管联盟bitsCN_com
|
不论是 Ruby on Rails 框架还是任何 Java 框架都不能解决所有问题。为了提高成功的几率,需要长期、细致地考察业务问题,理解周围的各种假定情况,以及了解您的团队。只有这样才能选出正确的语言来进行开发。 网管bitscn_com
去年,Arvato Systems 聘请我带领团队构建 ChangingThePresent.org,它是一种新平台,用于将非赢利性团体和捐赠人组织在一起。与很多 Internet 公司一样,我们向客户展示了可购买的实际产品。与其他公司不同的是,这些 “产品” 指的是提供机会,比如:一名癌症研究员一小时服务收费 50 美元、帮助盲人收费 30 美元,或者保护一英亩雨林一个月收费 20 美元。我们面临两大挑战:一份很紧凑的时间表和长期的复杂性。
中国网管论坛bbs.bitsCN.com
开发工作从九月份开始,要求必须在十一月份之前建立起一个站点,以便有机会赶上圣诞节期间的通信量高峰。(最终我们超出了十一月份这个期限两星期。)在其他开发语言中,基于 Java 的解决方案可能要花费 6 到 18 个月才能完成这一任务。因此生产力是一个很重要的考虑因素,这与 Java 部署思想相悖。
中国网管论坛bbs.bitsCN.com
通过对竞争对手和项目的考察,我们了解到:我们希望能够每天给站点带来几百万次点击的通信量。而我们需要每天有几十万次成功的点击,因此可伸缩性也是一个考虑因素。这与 Java 部署思想相符。 网管联盟bitsCN_com
最后,我们了解到:发布初始站点只是一个开始。我们只实现了总体规划的百分之三。因此我们所选的技术需要根据复杂性和负载作出一些调整。我认为 Ruby 语言在复杂性方面会更易于调整,因为它提供了对更高级语言和特性(如开放类)的支持,以及具有更少配置需求和更简单、集成化编程模型的 Rails 框架。
虽然我们面临着时间和可伸缩性方面的挑战,但是也拥有一些其他的有利因素。我们拥有一张完全空白的候选名单:可以选择想要的任何技术、任何团队。可以定义项目、培训和全部的技术。我们可完全自由地作出选择。
网管下载dl.bitscn.com
Java 语言是一种优秀的通用语言。它总是应用于新的技术领域,如嵌入式系统和移动设备。Java 语言在广泛关注的集成方面也表现优秀。它具有高性能、流行并受到平台的良好支持。但是正如您在本系列中所了解到的那样,Java 语言并不是用于数据库支持的 Web 应用程序的 green-field 开发的最佳选择。
相比之下,Ruby on Rails 框架则是新的。并没有很多人使用 Rails 开发高通信流量的站点,并且几乎不存在什么使用 Rails 多年开发项目的经验。但它仍然是一种高生产力的数据库支持的 Web 应用程序开发的框架。最后,尽管我们对 Rails 缺乏开发长期项目的经验和并未得到广泛部署有所顾虑,但那份紧凑的时间表驱使我们选择了 Ruby on Rails。 网管联盟bitsCN@com
作出这个决定之后,我们发现招募项目人才非常容易。我们还发现早期的生产力优势非常显著 —— 甚至比预期的还要好。我们确实遇到了一些早期的稳定性问题,因此加强了测试工作的力度。此后稳定性得到了极大的改进。 网管下载dl.bitscn.com
原理 网管网www.bitscn.com
每个框架设计者都使用一组假定来构造该框架的重写原理。学习遵守该原理的约束可使您愉快地进行编程,而挑战这些约束则会使您的编程受挫。Rails 框架和 Java 框架拥有很多不同的原理。 网管联盟bitsCN@com
Rails 是一种集成框架,需要使用高度利用 Ruby 语言的动态本质。Rails 开发人员强调框架的生产力特性而不是工具特性,并且常常将 Web 架构看得非常简单,在本系列的前几篇文章中您已了解到这一点。Java 设计者通常必须分块地组合开发环境,独立地选择持久性、Web 和集成层。他们通常严重地依赖工具来简化核心任务。Web 架构设计趋向于较为复杂。 网管网www_bitscn_com
完全集成 网管bitscn_com
Java 框架往往是解决一个小问题(比如持久性或查看组织),而 Rails 则是一个集成环境。Rails 开发人员的优势在于不必解决与许多不同框架集成的问题。大多数 Hibernate 开发人员陷入了过早关闭与 Java Web 框架之间的连接的陷阱。Rails 视图框架是从头构建的,以便与 ActiveRecord 集成(Rails 持久性框架)。当您考察用于 Web 服务、配置和插件的 Rails 框架时也会发现类似的经验。Java 编程支持各种不同的框架,对于所有这些框架使用不同的集成策略。
Java 开发人员的优势在于选择。如果您需要从头构建一个框架,则可能要考虑使用基于 SQL 的解决方案用于数据库集成(如 iBATIS 或 Java 编程中基于 JDBC 的包装框架之一)。反过来,如果要使用一种古老的模式进行编程,则可能要使用对象关系映射框架(如 Hibernate)。相比之下,如果您使用 Rails,则拥有一个主要选择:ActiveRecord。这意味着 Java 框架提供了更多的选择,有时能提供更好的集成开发项目的解决方案。但是由于我们要开发一个 green-field 项目,因此选择算不上是一个问题。 网管u家u.bitsCN.com
|
0
|
评论加载中…