网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 核心技术 > 网络编程 > Rails 开发与 Java 编程的比较  

Rails 开发与 Java 编程的比较

2007-04-27  作者:bitsCN整理  来源:收集整理  点评 投稿 收藏

2007 年 4 月 24 日

    Ruby on Rails 开发和 Java™ 开发有着本质的不同。在跨越边界 系列的最后一期中,Bruce Tate 将概述使用 Rails 从头开发一个复杂、可伸缩的 Web 站点时所发现的二者的主要差异。

     Rails 开发人员常常把 Java 开发人员看作是沉闷而劳碌的老古董。而 Java 崇拜者则常常认为 Ruby on Rails 只是一个玩具,根本不能用于任何严肃的软件开发。作为一名对这两种技术都有着广泛使用经验的顾问,我认为真实的情形介于这两种观点之间。由于跨越边界 系列文章即将结束,因此我打算对它们再作一次比较。本文并非考察某种特殊的技术或语言,而是主要介绍我当前正在从事的项目,并将它与我以前从事的 Java 项目进行比较。另外,我建议您阅读“跨越边界”系列的前几期文章,对相关主题作更深入的了解。这种直接的说明可让您在二者之间权衡利弊,并可能使您在数据库 Web 应用程序 green-field 的开发中通过使用 Rails 获益。

网管下载dl.bitscn.com

业务问题 网管联盟bitsCN_com

关于本系列

在 跨越边界 系列文章中,作者 Bruce Tate 提出这样一种观点,当今的 Java 程序员们可以通过学习其他方法和语言更好地武装自己。自从 Java 技术明显成为所有开发项目最好的选择以来,编程前景已经发生了改变。其他框架影响着 Java 框架的构建方式,从其他语言学到的概念也可以影响 Java 编程。您编写的 Python(或 Ruby、Smalltalk 等语言)代码可以改变编写 Java 代码的方式。 本系列介绍与 Java 开发完全不同的编程概念和技术,但是这些概念和技术也可以直接应用于 Java 开发。在某些情况下,需要集成这些技术来利用它们。在其他情况下,可以直接应用概念。具体的工具并不重要,重要的是其他语言和框架可以影响 Java 社区中的开发人员、框架,甚至是基本方式。 网管论坛bbs_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 框架。

网管联盟bitsCN@com

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

网管下载dl.bitscn.com

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

网管bitscn_com

    相比之下,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 编程支持各种不同的框架,对于所有这些框架使用不同的集成策略。

网管联盟bitsCN@com

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

网管bitscn_com


TAGs
 上一篇:JavaMail发送中文邮件中主题乱码的解决方法   下一篇:使用Java NIO提高服务端程序的性能
Rails 开发与 Java 编程的比较 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: