`
世说新语
  • 浏览: 23635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

为什么没有java on rails——代码量少才是王道

 
阅读更多

    java web开发的框架很多,但都专注于J2EE分层结构的某一层,比如展示层的struts/jsf;业务层的spring/guice;数据层的 hibernate/ibatis等。J2EE充血模型项目追求业务层的独立,追求框架的低侵入性,在业务层不变的情况下,随便更换数据层或展示层被认为 是灵活性较高的设计,也是很多项目追求的目标。


    但rails则追求完全不同的目标——开发快、代码少。事实上rails的业务代码对 ActiveRecord是高度依赖的,所有业务类都必须显示的继承ActiveRecord::Base类。在这种情况下,维持业务类的框架中立是不可能的。我们没有办法在保持业务类基本不变的情况下改用另外一个ruby写的持久框架。从java的角度看,这是非常愚蠢的行为,是已经被EJB2.0证明了的垃圾实践。

    我觉得java中所谓的业务层中立根本就是个扯淡需求,是一个被过分夸大了的小概率事件。实际项目中几乎没有看到更换持久层框架和展示层框架这种事的(如果真的换也跟重写差不多了),但实际中却有百分之60%甚至更多的项目对这种1%都 不到的小概率需求提供支持。我觉得开发快、应变快是web开发的终极目标,而所谓的业务层中立只是为了实现这一目标的“手段”,而 java的开发现在就是错误的把“手段”当成了“目的”,在追求“手段”完美的过程中迷失了方向。J2EE刚开始以所谓企业级为目标,唯恐摊子铺的不够 大,唯恐不够复杂,拍脑袋居多,严重脱离实践,充满了过度设计,是造成现在这种状况的罪魁祸首。更可恶的是他还限制了我们的思想,在开发中把这一切视为天经地义的,把所有人套在了过度设计当中,即使是天才的Spring/Hibernate也是在J2EE的框架内思考问题。而rails则是从另外一个角度思考,找到了另外一种釜底抽薪的甚至是简单的可笑的“手段”——代码少。是啊,代码少当然写得快,当然改的也快,我们咋就没想到呢?

分享到:
评论
69 楼 pipilu 2009-06-23  
ninini 写道
“啊,代码少当然写得快,当然改的也快,我们咋就没想到呢?”
写的快 =》改的快?
很幼稚的说法
请不要说我们

    同意。
    我原来待过的一家公司自己有套框架,把很多东西封装了,招一堆毕业生,根本不用写多少代码就可以构建出原型,但根据用户的需求进行修改时,却费老劲儿了。这是一个典型的代码量少,但改的并不快的例子。
    另外,一个设计的很灵活的程序,它会比一个“写死”了的程序,代码量要多出好多,但改的时候,“写死”的那个程序,改起来可谓是伤筋动骨的。而设计灵活的程序,所做的可能仅仅是修改一个配置,或者加几个适配器。这也是代码少并不代表改的快的例子。

此外:
引用
我觉得java中所谓的业务层中立根本就是个扯淡需求,是一个被过分夸大了的小概率事件。

这个根本就不是导致java代码多的因素。随便一个普通的应用程序(不是Web程序),动态语言的都可以比java语言的代码少很多。
我不认为是扯淡需求,松耦和很好,一个很明显的好处就是:测试起来方便,搭建测试环境很容易。因此也容易查错。
68 楼 night_stalker 2009-06-23  
Martian 叔叔不要悲观,强子对撞实验不会导致地球毁灭的 —— 就算会,也是秋天的事 ……
67 楼 ninini 2009-06-22  
“啊,代码少当然写得快,当然改的也快,我们咋就没想到呢?”
写的快 =》改的快?
很幼稚的说法
请不要说我们
66 楼 richyzhang 2009-06-22  
不过确实没人问过为啥ruby没有struts1.
有人问,确实因为有需求.
65 楼 冉翔 2009-06-22  
这种帖子为什么总能喷这么长?

OMG,我又顶贴了,罪过罪过。
64 楼 刑天战士 2009-06-22  
java方面的hibernate已经有至少9年了,谢谢
63 楼 richyzhang 2009-06-22  
5年了, java版的activerecord那么多年了都没可以真正一用的, 所以java版的rails至少10年.
62 楼 zbird 2009-06-22  
perl常常可以写出很少的代码
61 楼 airport 2009-06-22  
java和ruby语言的特性不同,一个是静态语言,一个是动态语言

所以无法要求java和ruby那样去构架rails框架,有得必有失。
60 楼 ray_linn 2009-06-21  
night_stalker 写道
ray_linn 写道
C#已经具备了转移ruby program的能力,不知道有什么特别好玩的来练练手? 我只想到了active record,不过现在时间很紧,可能还没空做activerecord,还有什么特别有意思的?


你可以山寨 irb 写个交互式解释器 ……

还有些推荐如下。

测试框架 cucumber:
Scenario: See all vendors
    Given I am logged in as a user in the administrator role
    And There are 3 vendors
    When I go to the manage vendors page
    Then I should see the first 3 vendor names


rest-client 最简单:
require 'rest_client'
r = RestClient
r.get 'http://example.com/resource'
r.get 'https://user:password@example.com/private/resource'
r.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' }
r.delete 'http://example.com/resource'


锯子 nokogiri (不过 ms 有自己的一整套 xml 工具了吧)
require 'nokogiri'
require 'open-uri' # 扩展 open 方法,可来打开 url 或者本地文件
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
doc.css('h3.r a.l').each do |link|
  puts link.content
end
doc.xpath('//h3/a[@class="l"]').each do |link|
  puts link.content
end


选rest client吧,xml工具好像ms的已经挺完美的了,加上linq to xml,我再折腾也没什么新意。
59 楼 night_stalker 2009-06-21  
ray_linn 写道
C#已经具备了转移ruby program的能力,不知道有什么特别好玩的来练练手? 我只想到了active record,不过现在时间很紧,可能还没空做activerecord,还有什么特别有意思的?


你可以山寨 irb 写个交互式解释器 ……

还有些推荐如下。

测试框架 cucumber:
Scenario: See all vendors
    Given I am logged in as a user in the administrator role
    And There are 3 vendors
    When I go to the manage vendors page
    Then I should see the first 3 vendor names


rest-client 最简单:
require 'rest_client'
r = RestClient
r.get 'http://example.com/resource'
r.get 'https://user:password@example.com/private/resource'
r.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' }
r.delete 'http://example.com/resource'


锯子 nokogiri (不过 ms 有自己的一整套 xml 工具了吧)
require 'nokogiri'
require 'open-uri' # 扩展 open 方法,可来打开 url 或者本地文件
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
doc.css('h3.r a.l').each do |link|
  puts link.content
end
doc.xpath('//h3/a[@class="l"]').each do |link|
  puts link.content
end


sinatra 轻量 web 框架
get '/posts/:id' do |id|
  @post = Post.find id
  haml :post
end


还有个 nb 的是 adhearsion,语音处理框架,可是估计山寨起来工程很大 ……
58 楼 ray_linn 2009-06-21  
night_stalker 写道
其实 DHH 一开始想写个 java 框架的,后来发现没有 php 爽,但是 php 也有很多问题,于是就在朋友的怂恿下开始学 ruby 了。自那两个月后 rails 就差不多成型了。



C#已经具备了转移ruby program的能力,不知道有什么特别好玩的来练练手? 我只想到了active record,不过现在时间很紧,可能还没空做activerecord,还有什么特别有意思的?
57 楼 night_stalker 2009-06-21  
其实 DHH 一开始想写个 java 框架的,后来发现没有 php 爽,但是 php 也有很多问题,于是就在朋友的怂恿下开始学 ruby 了。自那两个月后 rails 就差不多成型了。
56 楼 lonlyleo 2009-06-21  
火星叔叔马丁 写道
不是流氓 写道

rails的维护成本要比java的高很多


你维护过几个rails项目? 和java相比成本高在哪里?
用数据说话 而不是臆想

不是流氓 写道

没有一成不变的系统,也没有一成不变的需求,能快速适应需求才是最好的


很好 还知道快速适应需求 那你说一个10w行代码的系统能快速应变 还是1w行代码的系统更能快速应变

先打一板,不带这么回答问题的,装two
55 楼 userya 2009-06-21  
rainv 写道
没见过不代表没有吧。
呵呵。

见过的不吝说下撒.
54 楼 rainv 2009-06-20  
没见过不代表没有吧。
呵呵。
53 楼 t0uch 2009-06-20  
koalant 写道
key232323 写道
补充一句……希望37signals走得更快……



感觉 engine yard 比 37 signals 要靠谱一些。

这两家公司做的东西都不一样吧,何来更靠谱一说?
我看到ls诸位总有不喜欢符号,不喜欢and之类的一说,我也是C出身,也做过java/C++,甚至写过些asm。总觉得有这样的倾向很奇怪,爽不就可以了吗?诸位?每个语言总有自己的长处,这样做无异于为了一片树叶而放弃整片森林。
52 楼 koalant 2009-06-20  
key232323 写道
补充一句……希望37signals走得更快……



感觉 engine yard 比 37 signals 要靠谱一些。
51 楼 下一站,火星 2009-06-20  
key232323 写道
ruby应该有个**大公司在商业运营上发力一下,
好东西光靠开源的,太慢了。


哈哈,你恰恰搞反了,ruby on rails的发展就是太快了,很多人都跟不上它的脚步,不过就现在的水准,在互联网开发这个领域足以甩开其他类似东西好几条黄浦江的距离,所以很多人都希望它能够发展的慢一点平稳一点。

靠大公司未必靠的住,开放才最有竞争力,所以如果一个纯正开放的东西,比如rails,再加上开源社区良好先进的推广方式,想不成功都难!可以注意到,rails team的成员大部分都不是ruby出身,巧合的是,都是来自各个领域的一等一高手,比如php java .net perl jquery python,所以这也是ror为什么可以保持这么高水平的创新能力,集各家之所长嘛
50 楼 key232323 2009-06-20  
补充一句……希望37signals走得更快……

相关推荐

    Ruby on Rails入门经典代码

    通过学习和实践压缩包中的"Ruby on Rails入门经典代码",新手不仅可以了解Rails的基本概念,还能掌握实际项目中的应用技巧,逐步成长为一名熟练的Rails开发者。记得不断探索、实践和学习新的Rails知识,以适应不断...

    jRuby On Rails WEB2.0

    《jRuby on Rails WEB2.0》:将Ruby on Rails融入Java平台的实践指南 《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的...

    ruby on rails 101

    《Ruby on Rails 101》是一本介绍Ruby on Rails(简称RoR或ROR)的基础书籍,旨在为初学者提供一个全面而深入的学习框架。本书由Peter Marklund编写,包含了五天课程的演示文稿和相关资料,覆盖了从安装到实际应用...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    Ruby on Rails源代码

    Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性。Rails的哲学强调“约定优于配置”和“Don't Repeat Yourself”(DRY...

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    《Ruby on Rails与MySQL环境配置详解》 在开发基于Web的应用程序时,Ruby on Rails(简称Rails)框架和MySQL数据库的结合是常见的选择。本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及...

    ruby on rails最新版

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。Rails以其“约定优于配置”(Convention over Configuration)...

    Ajax on Rails (PPT)

    ### Ajax on Rails 知识点解析 #### 一、引言 在当今的Web开发领域,Ajax技术已经成为了提升用户体验的重要手段之一。Rails作为一种高效、优雅的Web开发框架,与Ajax技术结合能够创造出功能强大且易于维护的应用...

    Beginning Ruby on rails 源代码

    《初识Ruby on Rails:源代码解析》 Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。本资料包包含了...

    ruby_on_rails 源代码上

    Ruby on Rails,简称Rails,是基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,同时强调“约定优于配置”的原则。Rails的核心理念是“开发应该是一种...

    提升Ruby on Rails性能的几个解决方案

    Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...

    ruby on rails for dummies

    《Ruby on Rails for Dummies》是一本专门为初学者设计的Ruby on Rails教程,它旨在帮助新手快速理解并掌握这个强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby编程语言构建的一个开源Web应用程序框架,它...

    基于ruby on rails开发示例源码

    Ruby on Rails,简称Rails,是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。本示例源码提供了使用Ruby on Rails进行实际项目开发的具体...

    ruby on rails 3 tutorial.pdf

    《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...

    Ruby on Rails中文指南

    Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在提升开发效率和代码的可读性。Rails以其“约定优于配置”的设计理念,以及“DRY(Don't Repeat ...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    Ruby on Rails实践

    Ruby on Rails,简称Rails,是由David Heinemeier Hansson基于Ruby语言开发的一个开源Web应用程序框架。这个框架遵循“约定优于配置”(Convention over Configuration)的原则,致力于简化Web应用的开发流程,提高...

Global site tag (gtag.js) - Google Analytics