<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Ruby vs Java 的幾個誤區

    Posted on 2007-07-24 15:17 詩特林 閱讀(1777) 評論(14)  編輯  收藏 所屬分類: J2EE
     

    Ruby vs Java 的幾個誤區

    http://www.relevancellc.com/2007/6/2/ruby-vs-java-myth-1-project-size

    圍繞
    Java與動態語言(比如RubyPHP、PerlPython)之間的爭論,雖然一直沒有一個確定的答案,但從來沒有消失過。隨著Java的日趨復雜,動態語言的優勢——簡化和易用就越加凸顯出來。.Ruby是一種好語言,和Rails一起提供了引人注目的新價值(從效率的角度)并且這樣的價值還在飛速地增長中。Ruby不一定是最好的語言,但是它也許會是最有可能挑戰Java的一種語言。它很有可能首先在一個更小但是卻重要的環境中取得好成績。

    然而,在Ruby尚沒成為主流的今天,存在著關于Ruby對比Java而言而存在的若干誤區,本文將通過對RubyJava兩種語言而來揭露這些誤區。

    一、        誤區1Ruby適合于小項目而Java適合于大型復雜項目

    這種結論是非常的不切實際的。因為事實上,Java適合開發于小型且明確的項目,而Ruby反而適合于開發大型、復雜及開放性的項目。

    Java適合小項目的理由如下:

    1. 對于小項目,能找到一些開源且合適的內庫,將意味著完成了十之八九了。這樣的開發模型效率最高。而Java提供的內庫比任何語言都豐富;

    2. 小項目的經濟預算對于開發語言的不穩定很敏感,希望越成熟越好。而Java語言眾所周知,而且開發文檔完備;

    3. 對于小型項目,開發團隊沒有足夠的時間與財力來學習新的語言,而Java則是大家都很熟悉的開發語言。

    而對大型項目,Ruby則更有優勢:

    1. 由于大型項目的開發難度與任務艱巨,因此語言的開發效率比語言內庫的多少顯得更加的重要。而Ruby正是這樣一種高效的開發語言;

    2. 大項目肯定有許多意想不到的事情,因此對于這種變化,要求開發語言有極好的靈活性。而Ruby的靈活性是很好的;

    3. 對于大型項目,技術培訓將顯得很有遠見。但很多公司都低估了這一點。大約5天的技術培訓,可以提高開發人員約10% 的開發效率,同時,這種培訓效果將保持在一年內。Ruby正好適合這樣技術長遠的培訓。

    那么,如果上面的神話如此的不切實際,人們為什么還會相信呢?因為到目前為止,Ruby非常成功的應用于一類小型項目的開發:基于數據庫的web應用程序。而Ruby on Rails的出現正好彌補了Ruby在開發小型項目方面的不足:

    1. Rails正是人們所需要的庫;

    2. Rails盡量排除小型項目的不穩定性;

    3. Rails有廣泛的實際經驗,開發人員需要額外培訓很少。

    人們認識到了Ruby on Rails的成功,于是由于思維定勢,只看到眾多小型成功的Ruby on Rails項目,眾多大型成功的Java項目,而沒有全面的了解實際的情況。從而就有了上面的認識誤區。

    二、        誤區2Ruby特性會降低代碼的可維護性

    Ruby的特性很多,如能寫出快速簡便的特性,動態調用(dynamic evaluation),支持軟件封裝規則(soft encapsulation rules),簡易的元編程性(easy metaprogramming)及閉包性(closures)。盡管這些特性很不錯,但很多初學者常常擔心會降低代碼的可維護性。

    事實上,Ruby豐富的特性如果使用得當的話,將提高代碼的可維護性。那么提高可維護性標準是什么呢?

    1. 提高整個程序或模塊的可理解性;

    2. 易于查找代碼;

    3. 提高代碼的可讀性;

    4. 提高代碼的可修改性;

    5. 方便修改過的代碼進行回歸測試。

    筆者認為,程序開發人員應用對軟件的可維護性負80%的責任,而只有20%的責任是由語言及工具來承擔。那么,讓我們逐條來看看JavaRuby兩種語言,誰真正做到了上面提到的哪些標準吧。

    提高整個程序或模塊的可理解性:兩者都可以。JavaRuby其實有很多共同的點:類、繼承性、多態性、封裝性等。而Java對這些抽象的共同有更好的支持與實現,這主要是通過它的IDE來展現,如IntelliJ IDEA。而Ruby則在結構上更勝Java一籌。則Ruby則更加容易創建DSLs Domain Specific Languages,領域特定語言),從而能較好的反映與描寫程序的設計思路。其實,只有將JavaRuby各自的特點疊加起來才能真正的提高整個程序或模塊的可理解性。

    易于查找代碼Java在這方面做得比較成功。它的IDE為它贏得了這一局。

    提高代碼的可讀性Ruby勝。就單個的類文件與方法這個層面來講,Ruby編寫的代碼能更容易保持簡潔性與可讀性。如果對些有疑問的話,可以在Blub paradox了解更多的這方面的信息。

    提高代碼的可修改性Ruby表現理佳。當需要修改代碼時,代碼維護人員經常丟棄程序最初設計者的初衷。而一旦當最初設計者的假設發生變化或被打破之后,編譯器在編譯的時候就會碰到問題。此時,Ruby做為一種動態語言,在這方面的優勢就顯露出來了。

    方便修改過的代碼進行回歸測試:兩者都可以。測試是軟件開發必不可少的環節。如果僅僅是采用手工測試的話,則工作量太大,不切實際。因此可以采用一些自動化的測試,如進行單元測試、集成測試等??上驳氖牵?/span>JavaRuby都支持了自動化的測試。

    三、        誤區3Ruby太難學習

    很多人都認為,Ruby對于一般的開發人員,其學習曲線比較難。其實這樣的結論是很有問題的:

    1. 編程本身并不簡單。21天學會編程這樣的言論無異于天方夜譚。也許學習編程語言本身是一條比較平緩的曲線,但是,任何語言中的難題都需要痛苦的思考才能解決的。

    2. “這太難了”在任何領域都不能成為不學習的借口。如果哪一家銀行漂亮的營業員說,我們只重復的使用加法來進行計算,因為乘法對我們的初級員工太難了,那還有誰會去這里辦理金融業務呢?如果一個外科醫生說,我就差10來年就退休了,所以也不用再學習新技術來改進我的手術了,那么大家又做何想法呢?

    3. JavaRuby一樣的難學。筆者經常聽到這樣的言論:“Java里的反射機制我從來不用,因為它太難搞定了。”

    4. 不能通過砍掉語言的特性來降低語言的學習難度。如果某種語言缺少開發人員所需要的某一特性,自持技術高深的牛人就會自己開發類型的特性。對小型項目而言,如果開始沒有使用程序塊,也許可以通過匿名內部類來實現。對中型項目,可能要用到設計模式來實現。而對大型項目,一開始就使用實際意義不大的方式來構建動態的系統,那到結果就是有可能產生一個巨大的框架,同時需要第二種語言來進行冗長且易錯的配置。

    Java企業級框架很多而很著名,但其中過半的代碼存在很多的局限性,至少在語言層面是這樣。很多精明的Java開發人員為當初“Java語言易于學習”的言論所忽悠,一直到后來才發現Java的學習曲線很復雜。

    學習Java的學費已經交過了,那么Java當然應該好好的發揮作用了。所以Java社區的開發人員應該為那么多優秀的Java代碼感到自豪,盡管當初學習開發Java的代價很大。

    那么,Java開發人員就能過河拆橋嗎?如今輪到Ruby了,就說Ruby太難了?

    四、        誤區4Rails的思想很容易被復制

    不管是Rails的狂熱粉絲,還是Rails的憤青們,都有一個共識:RailsWeb開發具有很多閃光點,于是很多其它的框架也開始Rials化了。既然我使用的Java開發框架已經有了Rails的思想了,那為何還需關注Rails它本身呢?

    很少有其他語言可以完成Rails,或者像Rails那樣的。Java不在他們之列。RailsRuby中獲取了一些妙不可言的東西,嘗試用另一種語言復制它不僅是對Rails所做的是一個浪費,對其他語言來說也是一個浪費。但是它的概念一定會在其他非常動態的,動態類型語言中得到很好的應用。如果將Rails的思想復制進Java中,那么Rails的價值會大打折扣。而且如果對Rails了解不夠的話,那丟失了什么東西都還不知道呢。

    Open classes特性允許擴展類的定義,既可以擴展整個類,也可以擴展某個實例,Cool

    Rails使用open classes特性來構建更加可讀的對象模型。例如,可以使用x.black?來代替StringUtilities.isBankx)。當然,如果只是一個這樣的取代并不能緊,但成百上千的使用,則可以大大的提高代碼的可讀性。

    Open classes更重要的應用是創建簡單的DSLs(領域特定語言),例如ActiveRecord所宣稱的關系與驗證:

    class Poet < ActiveRecord::Base

     has_many :poems

     validates_presence_of :name

    end

    DSLs經常兩度的用到open classes特性,首先使用open classes來創建新的聲明“statements”,并符合類的聲明方式。第二,使用open classes來添加新的方法。當然也可以使用Java Annotations來模擬實現,但工作量巨大。這可以從Rails驗證的代碼與采用HibernateSpring驗證的代碼來進行比較,就可以發現這種工作量的巨大性。

    當然,Rails的爭議還是有的。Rails的憤青們認為,Rails的優點只有在Ruby中才能體現,而在Java則成為劣勢。例如,Java web應用將業務邏輯與持久層進行嚴格的分離,這對Java是很好的,除非應用程序變化。而Rails對這種分離進行了放棄,著重強調開發與配置的簡易性。這在Ruby環境下是很好的思想,因為開發人員可以隨時添加這個分離層。

    當然,不能用Java來實現Rails,卻并不意味著不能用Java做一些同樣優秀的東西。Java的力量可以以一種有趣的、神奇的方式應用到一種全新的框架上。只是還沒人做那些事情。每個人都對J2EE這個糕點趨之若騖,以至于沒人以一種更加激烈、更加動態的方式來重新考慮問題。盡管有人提出一個基于Java的殺手級框架可以與Rails做同樣多工作, 它一定也不能做的象Rails一樣。

    五、        結論:這是一場走向大同的游戲

    Ruby是一種優秀的開發語言,而Java是一個優秀的平臺。如果讓Ruby運行在Java的虛擬機上,則魚與熊掌可兼得也。

    筆者認為,做為一種開發語言開發普通的任務,Ruby是優于Java的;而做為一種平臺,Java則更勝一籌。因為Ruby的運行平臺是簡單的解釋執行(MRI)。通過研讀Java平臺的源代碼,可以發現它確實是一種優秀的平臺,這表現在:

    1. 字節碼指令集;

    2. 簡便的類文件格式;

    3. 強大的線程支持;

    4. 十分安全的模型;

    5. 眾多實踐過的部署方案;

    難道就不能進行有效的整合,構建一個和諧程序世界?筆者不希望以出身論英雄,不要以開發語言來定位開發人員。而是希望可以采用Ruby、SchemeScalaErlang來編寫優秀的程序,但都可以和諧的運行在JavaJVM上。

    JRuby則是一個100%Ruby編程語言的純Java實現,這種語言在CPL,GPLLGPL三種開源許可下發行。它是一個1.8.4 Ruby解釋器,其中提供了大多數Ruby的內置類。JRuby支持從一個Ruby程序中定義Java類并實現與之交互,另外還對Bean腳本化框架實現支持。JRuby使Ruby程序能夠存取Java類,允許它們作為程序內使用的一級對象。如今,JRuby的創始人,Thomas EneboCharles Nutter,已經受雇于Sun專門研究開發JRuby。

    JRuby允許現有Java開發者充分利用Ruby提供的強有力和易于使用的編程特點,而Ruby開發者將能夠自由使用龐大的曾使Java廣泛地應用于各個軟件開發領域的Java庫來進行開發。

    如果讀者想在這方面了解更多,那么下面的建議可能最有用:

    1. JRuby項目;

    2. 使用JRuby來編寫接下來的部分Java應用。

    3. 采用rake來代替ant管理Java應用程序;

    4. JRuby代碼進行單元測試:Test:Unit。


    評論

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 15:26 by hcom
    ruby語法太過靈活,如何團隊協作?java適合大項目,主要是因為java方便團隊協作。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 16:39 by BeanSoft
    類庫不是內庫....

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 16:52 by 王小超
    不明白你在說什么,我都用過,各有有點,有些理由太過牽強了。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 17:10 by 一條老狗
    Java適合開發于小型且明確的項目?
    我覺得很奇怪。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 17:23 by stoneshao
    懷疑兄弟是否用java做過項目

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 19:34 by mlhorizon
    樓主太偏激了,或者說沒做過大項目!
    Java編程往往只有一個最優解,而Ruby道路萬千,做大項目要求團隊協作,大家各有各的解法好做些呢還是大家統一解法的好!????

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 20:11 by kk
    樓主把這個帖子貼javaeye上去給他們評評 :)

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 22:05 by 阿南
    勸你~趕快刪掉~比較好~

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-24 23:24 by Matthew Chen
    Are you kidding us?

    一、 誤區1:Ruby適合于小項目而Java適合于大型復雜項目

    這種結論是非常的不切實際的。因為事實上,Java適合開發于小型且明確的項目,而Ruby反而適合于開發大型、復雜及開放性的項目。

    Java適合小項目的理由如下:

    1. 對于小項目,能找到一些開源且合適的內庫,將意味著完成了十之八九了。這樣的開發模型效率最高。而Java提供的內庫比任何語言都豐富;
    //正因為Java提供了世界上超過任何一種其他語言可能擁有支持的類庫,它毫無疑問使用于開發各種程序。
    2. 小項目的經濟預算對于開發語言的不穩定很敏感,希望越成熟越好。而Java語言眾所周知,而且開發文檔完備;
    //大項目更加要求語言的成熟,所以,銀行電信才紛紛投入java的懷抱
    3. 對于小型項目,開發團隊沒有足夠的時間與財力來學習新的語言,而Java則是大家都很熟悉的開發語言。
    //come on,你知道一個人一輩子是不可能學會java的所有東西的嗎?據我所知,世界上有不少熟悉java的人,但即便是大師都不敢說精通java。
    而對大型項目,Ruby則更有優勢:

    1. 由于大型項目的開發難度與任務艱巨,因此語言的開發效率比語言內庫的多少顯得更加的重要。而Ruby正是這樣一種高效的開發語言;
    //java曾經是開發效率很高的編程語言,擁有豐富的類庫支持,這在具體實現上等于將開發的若干個步驟交給開源社區完成和維護了。碰到成熟的運用首先想到的就是java
    2. 大項目肯定有許多意想不到的事情,因此對于這種變化,要求開發語言有極好的靈活性。而Ruby的靈活性是很好的;
    //用java都這么多年了,什么問題沒碰到過,它的擴展和適用性是ruby不能比的。
    3. 對于大型項目,技術培訓將顯得很有遠見。但很多公司都低估了這一點。大約5天的技術培訓,可以提高開發人員約10% 的開發效率,同時,這種培訓效果將保持在一年內。Ruby正好適合這樣技術長遠的培訓。
    //不知所云,大項目哪有用現成培訓的人員,都是資深的開發師,他們誰都不敢貿然用沒有經過長期歷史考驗的技術。
    那么,如果上面的神話如此的不切實際,人們為什么還會相信呢?因為到目前為止,Ruby非常成功的應用于一類小型項目的開發:基于數據庫的web應用程序。而Ruby on Rails的出現正好彌補了Ruby在開發小型項目方面的不足:

    1. Rails正是人們所需要的庫;

    2. Rails盡量排除小型項目的不穩定性;

    3. Rails有廣泛的實際經驗,開發人員需要額外培訓很少。

    人們認識到了Ruby on Rails的成功,于是由于思維定勢,只看到眾多小型成功的Ruby on Rails項目,眾多大型成功的Java項目,而沒有全面的了解實際的情況。從而就有了上面的認識誤區。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-25 09:23 by dq
    一派胡言,純粹是炒作。。。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-26 09:07 by luckydog
    也許筆者寫的是一個預言。
    個人認為java是一門比較成熟和穩定的語言,也是商業化很高的平臺,這么輕易被一些簡便語言超出似乎有點兒玄。。。。。
    當然不能諱疾忌醫,期待有開發效率、穩定性、開發成本、商業價值更高的語言和平臺出現。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-07-26 15:45 by 西濱
    跟這篇是同一篇翻譯?:
    http://www.infoq.com/cn/news/2007/06/rubyvsjava

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-10-05 00:52 by nightmare_ogod
    一、 誤區1:Ruby適合于小項目而Java適合于大型復雜項目
    --扯蛋,匯編都能寫銀行的核心交易系統,選工具,要根據具體情況。大小型項目的成功,更重要的還是人的問題。

    二、 誤區2:Ruby特性會降低代碼的可維護性
    --腳本語言,維護性就是差,過度靈活,也不是都是好事。

    三、 誤區3:Ruby太難學習
    --腳本編程,是最考驗程序員能力的方法,尤其是沒有調試器的情況下。

    四、 誤區4:Rails的思想很容易被復制
    --perl做的比他好,誰復制誰的?!


    五、 結論:這是一場走向大同的游戲
    --此觀點不如放屁,放屁還能聽響。

    總評:需要清理垃圾。

    # re: Ruby vs Java 的幾個誤區  回復  更多評論   

    2007-11-23 17:20 by am
    LZ沒有經過實踐檢驗。
    主站蜘蛛池模板: 亚洲级αV无码毛片久久精品| 免费黄色小视频网站| 免费在线观看一级片| 成在线人视频免费视频| 有色视频在线观看免费高清在线直播| 国产亚洲精品成人久久网站| 色婷婷精品免费视频| 四虎影视永久在线精品免费| 国产精品成人69XXX免费视频| 一二三四在线观看免费中文在线观看| 羞羞视频免费网站日本| 一区二区三区免费视频观看| 4hu四虎免费影院www| 99视频在线观看免费| 99在线在线视频免费视频观看| 99re这里有免费视频精品| 性xxxxx免费视频播放| 成人免费无码大片a毛片软件| 国产成人免费全部网站| 亚洲乱码中文字幕综合234| 亚洲中文字幕无码一区二区三区| 亚洲VA中文字幕无码一二三区 | 午夜理伦剧场免费| 99国产精品视频免费观看| 免费国产黄线在线观看| 免费一级黄色毛片| 亚洲va无码手机在线电影| 亚洲成av人片在线看片| 亚洲AV色欲色欲WWW| 精品国产免费人成网站| 91精品国产免费入口| 免费观看一级毛片| 亚洲视频人成在线播放| 亚洲成人精品久久| 在线亚洲高清揄拍自拍一品区| 国产成人va亚洲电影| 免费人成激情视频在线观看冫| 1000部拍拍拍18勿入免费视频下载 | 亚洲中文字幕一区精品自拍| 黄色网址在线免费观看| 无码日韩精品一区二区免费暖暖|