熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java程序員的迷失—論“虛擬機”

2022-06-13   來源: Java核心技術 

  虛擬機技術現在非常熱門人們認為它可以完成一切事情人們熱衷於讓JVM可以運行RubyPHP或其它一些熱門語言以及支持像Java FX之類的技術這種現象是好是壞?Joe Winchester以自己的經歷來論證了對此的看法

  在Java出現之前我一直是Smalltalk(注Smalltalk被公認為歷史上第二個面向對象的程序設計語言和第一個真正的集成開發環境)的愛好者從Smalltalk轉向Java的經歷到現在依然讓我記憶猶新從一門語言轉向另一門語言並不是一件輕松的事情我依然記得當你真正掌握這門新語言時所到達的臨界狀態掌握一門新語言往往需要花費數月甚至數年的時間經過這段時間的歷練你才能做出真正優秀的設計以及知道如何最好的應用它的哪一個模式如何避免錯誤發生以及如何進行性能調優等等

  最近因為工作需要我要回過頭來看一些以前的Smalltalk代碼這時我發現在經歷過這一段學習Java編程的階段後我已經很難清晰的理解過去自己所編寫的Smalltalk代碼很明顯我肯定不能再稱自己是一個合格的Smalltalk程序員

  說這些只是為了表達我的一個觀點我認為每個人只可能精通一門編程語言換句話說如果你什麼都精通其實也就說你什麼都精通我喜歡一個只有一門語言漂亮簡單的扁平結構世界在這樣一個世界中程序員之間交流會變得更加輕松每個人可以彼此分享共同的經驗而且不也不用來回的在不同的語言之間跳來跳去

  當Java第一次面世的時候曾經有些虛擬機方面的家伙進行一些沒有前途的嘗試讓Java運行在Smalltalk虛擬機上盡管他們擁有一個非常酷的叫做通用虛擬機(Universal Virtual MachineUVM)的技術但是歸根到底這實際上還是一個保護Smalltalk地盤的反抗行為從理論上說這可能是一個好的思路人們不再用必須學習一種新的語法就可以體驗新語言的好處但是實際上並非如此使用Java本地接口JNI編程來使兩者聯系起來是一件令程序員非常痛苦的事情這簡直就是一場噩夢程序員在編程的時候要陷入很多麻煩例如在不同語言類型之間存在很多數據類型轉化的問題

  要想在Java下進行Smalltalk編程或者在Smalltalk下進行Java編程你需要非常精通兩種語言而且你需要擁有一個非常發達的大腦來調試虛擬機注冊表和大量設置DOS堆棧的個數

  數年以來微軟的家伙一直在抨擊Java程序的速度慢它們認為Java程序是解釋型字節碼而不是完全編譯好的這也是人們懷疑Java性能的一個主要借口而多數微軟的語言則都被編譯為解釋好的pcode然而現在微軟又開始鼓吹它的通用語言運行時(CLR)將其稱為編程的聖杯這一點和Smalltalk/Java混合UVM非常相似實際上CLR上似乎只運行微軟的語言自從其問世以來並沒有引起太多其他語言的程序員倒戈

  現在有一種現象令我感到非常憂慮虛擬機可以完成一切的觀點正在逐漸復蘇人們的精力不再集中在Java和這個語言向前發展所需要的改進上人們把精力都投入到讓Java虛擬機JVM去運行RubyPHP或其它同類流行語言上還有讓Java虛擬機支持Java FX這個幾乎和Java語法無關的技術上如果這一切都實現了留給我們的又是什麼呢?

  我們擁有了一個不僅僅可以運行Java還可以運行其它語言的虛擬機我們擁有了很多不使用Java編寫但可以編譯為Java的語言我們擁有一些失去了自身價值定位的東西換言之我們迷失了自己的方向失去了准確的定位

  對於我們這些編程序的人來說我依然認為熟練掌握多種語言實際上是行不通的我們最終會變為二流程序員只能編寫性能糟糕和設計惡劣的程序更不用說隨著環境和語言的切換調試方面的噩夢隨處可見

  那麼為什麼人們對虛擬機的熱情如此高漲呢?你或許會說其它語言是動態的而Java是靜態的或者其它語言像PHPRuby更適於Web編程或者什麼其它的原因?這些都是現實不過我認為我們應該去完善Java來解決這些問題而不是增加復雜度朝著虛擬機使勁讓其支持這些幾年前已經不存在的語言對於Java來說沒有什麼錯誤和難題是不可以被解決的我認為這才是人們應該關注的地方而不是讓JVM變成一個雜而不精的東西否者Java最終將面臨與Smalltalk相同的命運

  歷史總是在驚人的重復如果我們不把Java看作一門語言而僅僅看作是一些Java技術之類的東西的話我們就正在讓它走向滅亡使其相對於其它語言的優勢逐漸削弱同時也讓編寫優秀軟件變為一件更難的事情


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26833.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.