论坛首页 编程语言技术论坛

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

浏览 23105 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-06-19  
招聘网上,rails好像没有什么工作机会啊.用的人不多吧
0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19

1、从现实层面出发,java on rails基本不可能。因为一个庞大的产业链已经形成,java on rails会让很多人失业,会让IBM和BEA倒闭(从BEA已经倒闭的事实也可以看出来,所谓的app server在j2ee产业链中不过是二等公民)。


2、从技术层面讲,是有可能的。rails的代码量少主要是2方面,一是全栈式框架和约定优于配置的思想。二是动态语言本身的优势。java吸取第一点,同样可以有效的减少代码量。


3、我觉得讨论使rails项目具备平滑更换持久层框架的事情是没有意义的。全栈式框架和约定优于配置基本上是一体两面,正因为是全栈式的,大家都是一伙的,才能在大量共同约定的情况下合作无间。如果要保持业务代码完全不变的情况下,平滑切换到另外一个与ActiveRecord实现理念完全不同的持久框架,唯一的途径就是“加一层”,于是代码量必然增加,Java现在不就是这样吗。依赖于框架是一件很邪恶的事情吗,如果我们永远也不会换框架。


你想要速度吗,OK,你必须接受约束;你想要自由吗,OK,把速度降下来。你自己选。

2 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19
看看playframework。
http://www.playframework.org/
0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19

java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ?

唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……

 

 

an_array.map {|e| params[:scale] * e}

 

 

Mappable<int> mi = new Mappable<int>(){

  public int scale;

  public int invoke(int v) {

    return v * this.scale;

  }

};

mi.scale = params.getAttribute("scale");

an_array.map(mi);

 

 

统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……

1 请登录后投票
   发表时间:2009-06-19  
世说新语 写道

1、从现实层面出发,java on rails基本不可能。因为一个庞大的产业链已经形成,java on rails会让很多人失业,会让IBM和BEA倒闭(从BEA已经倒闭的事实也可以看出来,所谓的app server在j2ee产业链中不过是二等公民)。


2、从技术层面讲,是有可能的。rails的代码量少主要是2方面,一是全栈式框架和约定优于配置的思想。二是动态语言本身的优势。java吸取第一点,同样可以有效的减少代码量。


3、我觉得讨论使rails项目具备平滑更换持久层框架的事情是没有意义的。全栈式框架和约定优于配置基本上是一体两面,正因为是全栈式的,大家都是一伙的,才能在大量共同约定的情况下合作无间。如果要保持业务代码完全不变的情况下,平滑切换到另外一个与ActiveRecord实现理念完全不同的持久框架,唯一的途径就是“加一层”,于是代码量必然增加,Java现在不就是这样吗。依赖于框架是一件很邪恶的事情吗,如果我们永远也不会换框架。


你想要速度吗,OK,你必须接受约束;你想要自由吗,OK,把速度降下来。你自己选。

 

1. BEA被收购的原因,主流说法是收购它的中间件和SOA产品有利于增强oracle产品线,以与SAP、IBM竞争。被收购 和 亏损倒闭 还是有很大区别的。这个事件不能证明“app serser在j2ee产业链中不过是二等公民”

    java产业链上的公司做java on rails的驱动力在哪?障碍是什么?需要全面分析一下。

rails进入java领域会不会使大公司IT资产贬值,从而影响其既有市场地位?有可能。但由于jruby可以做到字节码兼容,并且还能带来新的增长点,因此,这种冲击不是致命,也不是绝对不可调和的。 “java on rails会让很多人失业,会让IBM和BEA倒闭”没有什么实质性的依据。

2. rails的优势确实是这两方面。“java吸取第一点,同样可以有效的减少代码量”,java经过rails的冲击,通过若干新兴框架已经充分证明了这一观点。但语言层面(第二点)跟不上,就不要幻想再有什么惊喜了,也不要幻想达到ruby同等代码量效果了。

3. 前面已经讨论过了,不改代码只换orm框架是个伪需求。同时,rails中“约定优于配置”这一思想发展至现在,已经有了新的迹象,那就是,一部分约定已经不局限于rails框架,而成为一种最佳实践或普通的编码风格,为rails之外的世界普遍接受,这时,某些框架绑定性就不存在了。

试过rails的都知道,很久以前它的几个功能组件都已经是可以替换的,DHH还为此专门写了一篇博客。唯一的问题是内部实现不好,所以要写rails3。一栈式只体现在新手友好性上,一装就全带了,上手快,两分钟就能运行起来。但这并不限制替换部分组件。很多人对一栈式的误解跟对代码生成的误解一样大。

 

0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19
night_stalker 写道

java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ?

唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……

 

 

an_array.map {|e| params[:scale] * e}

 

 

Mappable<int> mi = new Mappable<int>(){

  public int scale;

  public int invoke(int v) {

    return v * this.scale;

  }

};

mi.scale = params.getAttribute("scale");

an_array.map(mi);

 

 

统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……

 

            HashSet<int> set = new HashSet<int>(){1,2,3};
            var result = from item in set select item * scale;
------------------------------------------------------------------------------------
            这是ruby的源头perl的写法
         @set=(1,2,3)
            @set=map $_*scale.

 

  

我觉得这个更像是掌握了那个语言的公司的态度问题。。。。

 

        static void Print(string text, int offset)
        {
            text
            .Select((c, i) => new { Char = c, Index = i })
            .GroupBy(c => c.Index % offset, c => c.Char.ToString()).ToList()
            .ForEach(g => Console.WriteLine(string.Join("|", g.Reverse().ToArray())));
        }

 

比如这个东西,只有一个方法,一行语句,很满足另外那个帖子,简约优雅 之类的,但三个月后,读起来就要花功夫了。

0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19
"我觉得java中所谓的业务层中立根本就是个扯淡需求,是一个被过分夸大了的小概率事件!"
这句话对Java的框架设计过度的总结太好了!
0 请登录后投票
   发表时间:2009-06-19  
night_stalker 写道

java on rails 从技术层面讲是不可能的 …… 如果有可能,以海量的程序员,一个都做不出来 ?

唯一的方法是语言改造,所以 groovy 可以 grails,scala 可以 lift,但是 java 不行 ……

 

 

an_array.map {|e| params[:scale] * e}

 

 

Mappable<int> mi = new Mappable<int>(){

  public int scale;

  public int invoke(int v) {

    return v * this.scale;

  }

};

mi.scale = params.getAttribute("scale");

an_array.map(mi);

 

 

统计上的五倍代码量差距不是简简单单的"领悟了xx思想“就能缩小的,里面的细节可多了 ……

是闭包带来的优势么?

 

我是刚来的初学RUBY者:)选ROR是因为讨厌jsp。

 

现在看erb还不错!

0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19
    不懂Ruby。但是就你说的代码少,写的是快,修改,扩展快我觉得难说。
     因为在业务逻辑简单的情况下是这样。但是一旦复杂。代码少,反而慢
0 请登录后投票
   发表时间:2009-06-19   最后修改:2009-06-19
代码越长越难改,这道理太简单了 …… 修改的代价和创建的代价基本成正比。

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

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

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

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


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

如果觉得写太短浪费了 apm,多空几行,写段小诗吧。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics