扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> Java技術(shù) >> 文章正文

Java是不是應(yīng)該增加新特性的一些爭議?

      最近,關(guān)于Java平臺的未來有許多辯論,有些人認(rèn)為Java應(yīng)該加入更多的特征,這樣才能與C#、Ruby這樣的語言競爭,另一些人認(rèn)為應(yīng)該保持Java的穩(wěn)定,以免變的過于復(fù)雜以至于難以使用。Bruce Eckel認(rèn)為應(yīng)該徹底停止往Java中增加新特性,這引起了一場新的辯論。
      在Bruce Eckel 的博文中,他說如果Java要保持主流地位,那么就需要停止進(jìn)化。作為一種語言,Java已經(jīng)“過于嘈雜”了,代碼有些過分啰嗦(例如System.out.println())。Eckel認(rèn)為Java泛型增加了復(fù)雜性,這已經(jīng)引起了人們的關(guān)注,他還說明了他看到的Java的一個關(guān)鍵問題:
     我們對于復(fù)雜性的唯一控制手段是抽象:隱藏不需要暴露的部分(分治法("divide and conquer")是一個變種)。在Java中的悖論是,復(fù)雜性問題的一個關(guān)鍵方面被忽略了:沒有認(rèn)識到代碼可讀性是重要的問題。好像IDE會為你寫代 碼,如果那樣的話即使代碼過分復(fù)雜也不是問題了。
     [Joshua Bloch] 將關(guān)于復(fù)雜性的思想提升了一步。他說復(fù)雜 性不僅僅是指一個孤立的特定特征的復(fù)雜性,這種情況下復(fù)雜性通常是一目了然的。復(fù)雜性是指組合復(fù)雜性,這是當(dāng)你將一個新特性與其他語言特性以任意可能的方式進(jìn)行組合時所帶來的復(fù)雜性。如果你沒有從一開始就小心的設(shè)計,那么當(dāng)你將一個新特性加入一種現(xiàn)存的語言中時,你無法控制該特性是怎樣與其他現(xiàn)存特性進(jìn)行 組合的。組合復(fù)雜性會產(chǎn)生恐怖的后果,特別是在加入了特性之后,這時再做任何事情都為時已晚。早餐結(jié)束后Josh說這類復(fù)雜性為Java的答疑解惑者提供 了豐富的素材,但是對于整個Java社區(qū)是有害的。
  Eckel認(rèn)為他自己是一個“特性上癮者”,總是思考語言在新特性方面的進(jìn)化,但是現(xiàn)在他質(zhì)疑如果一個特性不能被正確的實(shí)現(xiàn),該特性是否應(yīng)該被去掉 (例如Java的泛型)。Eckel認(rèn)為C和C++都非常穩(wěn)定,Java也應(yīng)該穩(wěn)定而不是追逐新的語言特性或者試圖跟隨所有的市場沖動。有些人提出了打破 向后兼容性的想法,他們認(rèn)為那些希望使用老特性的人們可以使用老版本的Java而不要升級到新版本。Eckel對于不惜一切代價維護(hù)向后兼容性的風(fēng)險做了 警告: 
  如果由于向后不兼容而不能正確的插入特性,我們在語言變化的時候會受到很大束縛,Java現(xiàn)在的情形與C++相同。C++經(jīng)常因 為它的設(shè)計受到批評,從C++標(biāo)準(zhǔn)委員會剛開始運(yùn)轉(zhuǎn)我就在其中工作,已經(jīng)工作了8年,我看到了所有關(guān)于語言特性的辯論。這些語言特性不是變化無常的,而是 經(jīng)過非常謹(jǐn)慎的而且深思熟慮的考量的結(jié)果。是向后兼容C語言產(chǎn)生了語言復(fù)雜性和困難性。一旦你在所有事情上都把自己與向后兼容綁定在一起,那么當(dāng)你向語言 加入特性的時候必須做好語言被破壞的準(zhǔn)備。如果Java不愿意打破向后兼容性,那么它就無法避免不打糧食的復(fù)雜性以及不完整的新特性實(shí)現(xiàn)。
  Eckel認(rèn)為新的語言是放置主要新特性的正確場所,Scala是“當(dāng)前Java最好的退出策略”。他還認(rèn)為Java唯一的出路是成為象C那樣的工具語言,將來只應(yīng)該清理并豐富現(xiàn)在不完整的庫,把主要的語言變化(例如閉包)留給其他語言,而不是加入Java中。
  Kevin Dangoor同意Eckel的觀點(diǎn),他說在需要向后兼容性的語言中加入新的特性也是笨拙的,他還指出在這一領(lǐng)域ECMAScript與Java有同樣的問題。Dangoor還對于開發(fā)者始終要尋求新的、炫的特性來幫助項(xiàng)目的批判聲音提出了質(zhì)疑: 
  軟件是思考的成果。其可鍛性很強(qiáng)且新的思想很容易測試。通過互聯(lián)網(wǎng),新的思想和代碼傳播的很快很遠(yuǎn),這是好事情。對于我來說,現(xiàn) 在開發(fā)軟件比5、10、15、20年前要好的多。我看到許多閃光的事物飛過,而沒有真正的使用過它們。但是我認(rèn)為這些閃光的事物是非常重要的,其中包含了各種各樣的思想,可以使用不同的工具將其應(yīng)用于不同的場景。一些出自這些思想的實(shí)現(xiàn)成為了主流。
  一般來說,人們不會轉(zhuǎn)而使用所有從其身邊 飛過的閃光的事物。有些人會認(rèn)真的嘗試這些事物,他們可能會成為成功的拓荒者或者遭受失敗的痛苦而轉(zhuǎn)向其他解決方案。如果有足夠的人喜歡該思想并且推動它 的發(fā)展,那么該思想會成為主流。Rails是2004年閃光的新事物。毫無疑問,有一些早期的使用者遭受了痛苦,但是在那些歲月里,相對于使用其他工具的 人而言,更多的人因?yàn)槭褂肦ails獲得了非常高的生產(chǎn)率。不管最終有多少人接受了Rails,事實(shí)是自Rails出現(xiàn)以后,它的很多思想對工作產(chǎn)生了顯 著的影響。
  Cay Horstmann 同樣認(rèn)為應(yīng)該減少對Java語法的關(guān)注,增加對Java中痛苦之處的關(guān)注。Horstmann援引了C++,指出Java解決了C++碰到的兩個主要痛苦之處,內(nèi)存管理和GUI/數(shù)據(jù)庫的訪問。
  然而,Java現(xiàn)在需要解決它自己的痛苦之處:
  臃腫的代碼 —— getter和setter方法,匿名類形式的事件監(jiān)聽器,可以由編譯器推斷出來的長的類型聲明。 
  Web應(yīng)用開發(fā) —— 這很難,用復(fù)雜的而且動力不足的技術(shù),例如JSP和JSF來開發(fā)web應(yīng)用“就像用叉子來喝湯”。
  并發(fā) —— “我不夠聰明,不能滿懷信心的說我編寫的重要并發(fā)程序不會有死鎖,不會有競爭條件。這就象我不夠聰明,不能滿懷信心的說我編寫的重要C++程序不會有內(nèi)存泄露或內(nèi)存破壞”
  其他觀點(diǎn):

Phillip Calçado認(rèn)為Java應(yīng)該固定而不是繼續(xù)擴(kuò)展,但是不同意關(guān)于Java本身難以閱讀的說法,他說在創(chuàng)建Java的時候,它比當(dāng)時的語言,例如C++易于閱讀
Richard Relos認(rèn)為 大多數(shù)Java代碼不使用新的語言特性,增加新的特性僅僅分散了開發(fā)者的注意力,破壞了邏輯形式。

Ian Cooper探討了C#的問題,他質(zhì)疑C#是否已經(jīng)到達(dá)了收益遞減的點(diǎn),他同意主要新特性的去處應(yīng)該是一個新語言 
Giovani Salvador擔(dān)心如果Java不再增加新特性,它會過時,那么Java開發(fā)者會變成“恐龍” 。

作者:未知 | 文章來源:網(wǎng)絡(luò) | 更新時間:2008-1-21 16:27:39

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    JAVA開發(fā)的6個實(shí)踐的例子
    JAVA中的抽象類型的一些概念
    java語言開發(fā)程序中的幾個例子大家看看
    了解java開發(fā)語言在軟件開發(fā)中的幾個誤區(qū)
    如何才能使用Java實(shí)現(xiàn)內(nèi)部領(lǐng)域的特定語言
    Java開發(fā)學(xué)習(xí)小心使用Date以及Time類
    sun最近修補(bǔ)了一部分java的安全補(bǔ)丁
    Java程序員應(yīng)該了解那些開源協(xié)議
    java性能優(yōu)化的一些見解
    解析c#語言和java語言最相似的地方
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·j2se 嵌入式腳本抓取引擎
    ·JAVA開發(fā)的6個實(shí)踐的例子
    ·JBuilder7 / Weblogic7開發(fā)
    ·JAVA中的抽象類型的一些概
    ·java語言開發(fā)程序中的幾個
    ·了解java開發(fā)語言在軟件開
    ·如何才能使用Java實(shí)現(xiàn)內(nèi)部
    ·Java開發(fā)學(xué)習(xí)小心使用Date
    ·Java程序員應(yīng)該了解那些開
    ·java性能優(yōu)化的一些見解
    ·介紹JDK5.0一些collection
    ·基礎(chǔ)學(xué)習(xí):java中使用存儲
    ·解析c#語言和java語言最相
    ·Java語言學(xué)習(xí):jAVA中 的多
    ·Java是不是應(yīng)該增加新特性
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    内乡县| 宁河县| 陆丰市| 浑源县| 泸定县| 皋兰县| 抚松县| 和林格尔县| 富阳市| 香港 | 阿克陶县| 海宁市| 牟定县| 潜江市| 喀喇| 兴和县| 马山县| 马龙县| 高陵县| 日喀则市| 广元市| 鄂州市| 兴安县| 建昌县| 海盐县| 湘阴县| 浙江省| 屯留县| 黔西| 布拖县| 木兰县| 西昌市| 通辽市| 荣昌县| 将乐县| 莎车县| 广水市| 鹿邑县| 仙桃市| 乐业县| 沙田区|