射精一区欧美专区|国产精品66xx|亚洲视频一区导航|日韩欧美人妻精品中文|超碰婷婷xxnx|日韩无码综合激情|特级黄片一区二区|四虎日韩成人A√|久久精品内谢片|亚洲成a人无码电影

您現(xiàn)在的位置:首頁 > IT認證 > JAVA >

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


  虛擬機技術(shù)現(xiàn)在非常熱門,人們認為它可以完成一切事情。人們熱衷于讓JVM可以運行Ruby、PHP或其它一些熱門語言,以及支持像Java FX之類的技術(shù)。這種現(xiàn)象是好是壞?Joe Winchester以自己的經(jīng)歷來論證了對此的看法。

  在Java出現(xiàn)之前我一直是Smalltalk(注:Smalltalk被公認為歷史上第二個面向?qū)ο蟮某绦蛟O(shè)計語言,和第一個真正的集成開發(fā)環(huán)境。)的愛好者。從Smalltalk轉(zhuǎn)向Java的經(jīng)歷,到現(xiàn)在依然讓我記憶猶新,從一門語言轉(zhuǎn)向另一門語言并不是一件輕松的事情。我依然記得當你真正掌握這門新語言時所到達的臨界狀態(tài),掌握一門新語言往往需要花費數(shù)月甚至數(shù)年的時間,經(jīng)過這段時間的歷練,你才能做出真正優(yōu)秀的設(shè)計,以及知道如何最好的應(yīng)用它的哪一個模式,如何避免錯誤發(fā)生,以及如何進行性能調(diào)優(yōu)等等。

  最近因為工作需要,我要回過頭來看一些以前的Smalltalk代碼,這時我發(fā)現(xiàn),在經(jīng)歷過這一段學(xué)習(xí)Java編程的階段后,我已經(jīng)很難清晰的理解過去自己所編寫的Smalltalk代碼,很明顯,我肯定不能再稱自己是一個合格的Smalltalk程序員。

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

  當Java第一次面世的時候,曾經(jīng)有些虛擬機方面的家伙進行一些沒有前途的嘗試:讓Java運行在Smalltalk虛擬機上。盡管他們擁有一個非?岬慕凶鐾ㄓ锰摂M機(Universal Virtual Machine,UVM)的技術(shù),但是歸根到底,這實際上還是一個保護Smalltalk地盤的反抗行為。從理論上說這可能是一個好的思路,人們不再用必須學(xué)習(xí)一種新的語法就可以體驗新語言的好處;但是實際上并非如此,使用Java本地接口JNI編程來使兩者聯(lián)系起來是一件令程序員非常痛苦的事情,這簡直就是一場噩夢,程序員在編程的時候要陷入很多麻煩,例如在不同語言類型之間存在很多數(shù)據(jù)類型轉(zhuǎn)化的問題。

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

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

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

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

  對于我們這些編程序的人來說,我依然認為熟練掌握多種語言實際上是行不通的,我們最終會變?yōu)槎鞒绦騿T,只能編寫性能糟糕和設(shè)計惡劣的程序,更不用說隨著環(huán)境和語言的切換,調(diào)試方面的噩夢隨處可見。

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

  歷史總是在驚人的重復(fù),如果我們不把Java看作一門語言,而僅僅看作是一些“Java技術(shù)”之類的東西的話,我們就正在讓它走向滅亡,使其相對于其它語言的優(yōu)勢逐漸削弱,同時也讓編寫優(yōu)秀軟件變?yōu)橐患y的事情。

相關(guān)文章

無相關(guān)信息
更新時間2022-03-13 10:53:42【至頂部↑】
聯(lián)系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網(wǎng)站糾錯二維碼手機版

客服電話:4008816886