`
世说新语
  • 浏览: 23634 次
  • 性别: 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则是从另外一个角度思考,找到了另外一种釜底抽薪的甚至是简单的可笑的“手段”——代码少。是啊,代码少当然写得快,当然改的也快,我们咋就没想到呢?

分享到:
评论
49 楼 key232323 2009-06-20  
ruby应该有个**大公司在商业运营上发力一下,
好东西光靠开源的,太慢了。
48 楼 check 2009-06-20  
我总觉得syntax应该和sematics剥离开来,最好以后能出现一种中间表示,无论什么样风格的代码,比如c式的或者脚本语言式的,都能够相互转换。我不是说想现在gcc统一IR这样的方式,而是语法上可以相互转换。

我觉得是否需要分号,是否换行,是否用def之类的东西实在是非常末节的事情。
47 楼 rrsy23 2009-06-20  
哎 技术  不是 最重要的

关键是 有IBM oracle等 忽悠 java才火

python有google忽悠还不是上升

跟着爱走 更着大家走


46 楼 jinleileiking 2009-06-19  
night_stalker 写道
xuby 写道
night_stalker 写道
反正我觉得 and、or 比 && 和 || 容易读

跟常人相反。
一般来讲,符号总是比英文单词更醒目,更有标识性。


这个各人爱好不相同。我学的第一门是 QBasic,所以觉得 and or not 很自然,而且讨厌行末加分号。

真是人人不一样阿。

我是C出身的,看  && || 要舒服的多

看def都觉得恶心。。。
45 楼 night_stalker 2009-06-19  
xuby 写道
night_stalker 写道
反正我觉得 and、or 比 && 和 || 容易读

跟常人相反。
一般来讲,符号总是比英文单词更醒目,更有标识性。


这个各人爱好不相同。我学的第一门是 QBasic,所以觉得 and or not 很自然,而且讨厌行末加分号。
44 楼 xuby 2009-06-19  
night_stalker 写道
反正我觉得 and、or 比 && 和 || 容易读

跟常人相反。
一般来讲,符号总是比英文单词更醒目,更有标识性。
43 楼 KimShen 2009-06-19  
火星叔叔马丁 写道
gigix 写道
KimShen 写道
总有人拿Ruby代码少说事,动态语言本身的特点加上Ruby封装的好.

what's your point?


认真你就输了 无脑不需要观点


这里是Ruby论坛,得罪不起.各位大牛 小的知错.面壁可否?
42 楼 gigix 2009-06-19  
KimShen 写道
总有人拿Ruby代码少说事,动态语言本身的特点加上Ruby封装的好.

what's your point?
41 楼 KimShen 2009-06-19  
总有人拿Ruby代码少说事,动态语言本身的特点加上Ruby封装的好.
40 楼 dvaknheo 2009-06-19  
<div class="quote_title">night_stalker 写道</div>
<div class="quote_div">
<p>java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ? </p>
<p>唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……</p>
<p> </p>
<p> </p>
<p>an_array.map {|e| params[:scale] * e}</p>
<p> </p>
<p> </p>
<p>Mappable&lt;int&gt; mi = new Mappable&lt;int&gt;(){</p>
<p>  public int scale;</p>
<p>  public int invoke(int v) {</p>
<p>    return v * this.scale;</p>
<p>  }</p>
<p>};</p>
<p>mi.scale = params.getAttribute("scale");</p>
<p>an_array.map(mi);</p>
<p> </p>
<p> </p>
<p>统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……</p>
<p> </p>
<p> </p>
<p> </p>
<p>Perl 欢迎你</p>
</div>
<p> </p>
39 楼 night_stalker 2009-06-19  
代码越长越难改,这道理太简单了 …… 修改的代价和创建的代价基本成正比。

有人可能不同意:myeclipse 生成代码也很容易啊,为什么改起来这么难。—— 因为它给了你生成的工具,没给你改的工具 ……

至于扩展 …… 和动态语言比灵活性不是自取其辱么 ……

代码是否易读,很大一部分是程序员的问题。

反正我觉得 and、or 比 && 和 || 容易读, def 比 public static void 容易读。


把充斥大量无用信息的代码换成空白,易读性绝对会增加 ……

如果觉得写太短浪费了 apm,多空几行,写段小诗吧。
38 楼 chandler 2009-06-19  
    不懂Ruby。但是就你说的代码少,写的是快,修改,扩展快我觉得难说。
     因为在业务逻辑简单的情况下是这样。但是一旦复杂。代码少,反而慢
37 楼 jinleileiking 2009-06-19  
<div class="quote_title">night_stalker 写道</div>
<div class="quote_div">
<p>java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ? </p>
<p>唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……</p>
<p> </p>
<p> </p>
<p>an_array.map {|e| params[:scale] * e}</p>
<p> </p>
<p> </p>
<p>Mappable&lt;int&gt; mi = new Mappable&lt;int&gt;(){</p>
<p>  public int scale;</p>
<p>  public int invoke(int v) {</p>
<p>    return v * this.scale;</p>
<p>  }</p>
<p>};</p>
<p>mi.scale = params.getAttribute("scale");</p>
<p>an_array.map(mi);</p>
<p> </p>
<p> </p>
<p>统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……</p>
</div>
<p>是闭包带来的优势么?</p>
<p> </p>
<p>我是刚来的初学RUBY者:)选ROR是因为讨厌jsp。</p>
<p> </p>
<p>现在看erb还不错!</p>
36 楼 huacnlee 2009-06-19  
"我觉得java中所谓的业务层中立根本就是个扯淡需求,是一个被过分夸大了的小概率事件!"
这句话对Java的框架设计过度的总结太好了!
35 楼 ray_linn 2009-06-19  
<div class="quote_title">night_stalker 写道</div>
<div class="quote_div">
<p>java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ? </p>
<p>唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……</p>
<p> </p>
<p> </p>
<p>an_array.map {|e| params[:scale] * e}</p>
<p> </p>
<p> </p>
<p>Mappable&lt;int&gt; mi = new Mappable&lt;int&gt;(){</p>
<p>  public int scale;</p>
<p>  public int invoke(int v) {</p>
<p>    return v * this.scale;</p>
<p>  }</p>
<p>};</p>
<p>mi.scale = params.getAttribute("scale");</p>
<p>an_array.map(mi);</p>
<p> </p>
<p> </p>
<p>统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……</p>
</div>
<p> </p>
<pre name="code" class="c#">            HashSet&lt;int&gt; set = new HashSet&lt;int&gt;(){1,2,3};
            var result = from item in set select item * scale;
------------------------------------------------------------------------------------</pre>
<pre name="code" class="c#">            这是ruby的源头perl的写法
         @set=(1,2,3)
            @set=map $_*scale.
</pre>
<pre name="code" class="c#">
</pre>
<p> </p>
<p>  </p>
<p>我觉得这个更像是掌握了那个语言的公司的态度问题。。。。</p>
<p> </p>
<p>        static void Print(string text, int offset)<br>        {<br>            text<br>            .Select((c, i) =&gt; new { Char = c, Index = i })<br>            .GroupBy(c =&gt; c.Index % offset, c =&gt; c.Char.ToString()).ToList()<br>            .ForEach(g =&gt; Console.WriteLine(string.Join("|", g.Reverse().ToArray())));<br>        }</p>
<p> </p>
<p>比如这个东西,只有一个方法,一行语句,很满足另外那个帖子,简约优雅 之类的,但三个月后,读起来就要花功夫了。</p>
34 楼 liusong1111 2009-06-19  
<div class="quote_title">世说新语 写道</div>
<div class="quote_div">
<p><span style="font-size: small;">1、从现实层面出发,java on rails基本不可能。因为一个庞大的产业链已经形成,java on rails会让很多人失业,会让IBM和BEA倒闭(从BEA已经倒闭的事实也可以看出来,所谓的app server在j2ee产业链中不过是二等公民)。</span></p>
<p><span style="font-size: small;"><br></span></p>
<p><span style="font-size: small;">2、</span><span style="font-size: small;">从技术层面讲,是有可能的。rails的代码量少主要是2方面,一是全栈式框架和约定优于配置的思想。二是动态语言本身的优势。java吸取第一点,同样可以有效的减少代码量。</span></p>
<p><span style="font-size: small;"><br></span></p>
<p><span style="font-size: small;">3、我觉得讨论使rails项目具备平滑更换持久层框架的事情是没有意义的。</span><span style="font-size: small;">全栈式框架和约定优于配置基本上是一体两面,正因为是全栈式的,大家都是一伙的,才能在大量共同约定的情况下合作无间。如果要保持业务代码完全不变的情况下,平滑切换到另外一个与ActiveRecord实现理念完全不同的持久框架,唯一的途径就是“加一层”,于是代码量必然增加,Java现在不就是这样吗。依赖于框架是一件很邪恶的事情吗,如果我们永远也不会换框架。</span></p>
<p><span style="font-size: small;"><br></span></p>
<p><span style="font-size: small;">你想要速度吗,OK,你必须接受约束;你想要自由吗,OK,把速度降下来。你自己选。<br></span></p>
</div>
<p> </p>
<p>1. BEA被收购的原因,主流说法是收购它的中间件和SOA产品有利于增强oracle产品线,以与SAP、IBM竞争。被收购 和 亏损倒闭 还是有很大区别的。这个事件不能证明“app serser在j2ee产业链中不过是二等公民”<span style="font-size: small;"><br></span></p>
<p>    java产业链上的公司做java on rails的驱动力在哪?障碍是什么?需要全面分析一下。</p>
<p>rails进入java领域会不会使大公司IT资产贬值,从而影响其既有市场地位?有可能。但由于jruby可以做到字节码兼容,并且还能带来新的增长点,因此,这种冲击不是致命,也不是绝对不可调和的。 “java on rails会让很多人失业,会让IBM和BEA倒闭”没有什么实质性的依据。</p>
<p>2. rails的优势确实是这两方面。“java吸取第一点,同样可以有效的减少代码量”,java经过rails的冲击,通过若干新兴框架已经充分证明了这一观点。但语言层面(第二点)跟不上,就不要幻想再有什么惊喜了,也不要幻想达到ruby同等代码量效果了。</p>
<p>3. 前面已经讨论过了,不改代码只换orm框架是个伪需求。同时,rails中“约定优于配置”这一思想发展至现在,已经有了新的迹象,那就是,一部分约定已经不局限于rails框架,而成为一种最佳实践或普通的编码风格,为rails之外的世界普遍接受,这时,某些框架绑定性就不存在了。</p>
<p>试过rails的都知道,很久以前它的几个功能组件都已经是可以替换的,DHH还为此专门写了一篇博客。唯一的问题是内部实现不好,所以要写rails3。一栈式只体现在新手友好性上,一装就全带了,上手快,两分钟就能运行起来。但这并不限制替换部分组件。很多人对一栈式的误解跟对代码生成的误解一样大。</p>
<p> </p>
33 楼 night_stalker 2009-06-19  
<p>java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ? </p>
<p>唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……</p>
<p> </p>
<p> </p>
<p>an_array.map {|e| params[:scale] * e}</p>
<p> </p>
<p> </p>
<p>Mappable&lt;int&gt; mi = new Mappable&lt;int&gt;(){</p>
<p>  public int scale;</p>
<p>  public int invoke(int v) {</p>
<p>    return v * this.scale;</p>
<p>  }</p>
<p>};</p>
<p>mi.scale = params.getAttribute("scale");</p>
<p>an_array.map(mi);</p>
<p> </p>
<p> </p>
<p>统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……</p>
32 楼 avaj 2009-06-19  
看看playframework。
http://www.playframework.org/
31 楼 世说新语 2009-06-19  
<p><span style="font-size: small;">1、从现实层面出发,java on rails基本不可能。因为一个庞大的产业链已经形成,java on rails会让很多人失业,会让IBM和BEA倒闭(从BEA已经倒闭的事实也可以看出来,所谓的app server在j2ee产业链中不过是二等公民)。</span></p>
<p><span style="font-size: small;"><br></span></p>
<p><span style="font-size: small;">2、</span><span style="font-size: small;">从技术层面讲,是有可能的。rails的代码量少主要是2方面,一是全栈式框架和约定优于配置的思想。二是动态语言本身的优势。java吸取第一点,同样可以有效的减少代码量。</span></p>
<p><span style="font-size: small;"><br></span></p>
<p><span style="font-size: small;">3、我觉得讨论使rails项目具备平滑更换持久层框架的事情是没有意义的。</span><span style="font-size: small;">全栈式框架和约定优于配置基本上是一体两面,正因为是全栈式的,大家都是一伙的,才能在大量共同约定的情况下合作无间。如果要保持业务代码完全不变的情况下,平滑切换到另外一个与ActiveRecord实现理念完全不同的持久框架,唯一的途径就是“加一层”,于是代码量必然增加,Java现在不就是这样吗。依赖于框架是一件很邪恶的事情吗,如果我们永远也不会换框架。</span></p>
<p><span style="font-size: small;"><br></span></p>
<p><span style="font-size: small;">你想要速度吗,OK,你必须接受约束;你想要自由吗,OK,把速度降下来。你自己选。<br></span></p>
30 楼 ssuupv 2009-06-19  
招聘网上,rails好像没有什么工作机会啊.用的人不多吧

相关推荐

    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