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

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

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

    一點一滴,編程人生

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      69 隨筆 :: 0 文章 :: 25 評論 :: 0 Trackbacks
    今日目睹某網絡新聞,開篇明義便包含如下幾行文字

      【程序員Artur Ventura,這位超級大牛,用JavaScript寫了一個java虛擬機BicaVM】

      繼而再讀,驚見其中“超級大牛”、“神人”等溢美之詞不絕于耳,崇拜、神往之心溢于言表。仿佛BicaVM就是天上有地下無的創舉,仿佛Artur Ventura就是繼比爾蓋茨,喬布斯之后的第三位IT業領軍人。然而很可惜,小弟今天準備要“侮辱”一下這位“大牛”了。

      只因在小弟看來,這篇文章,乃至其中介紹的BicaVM,都如某女士對某御用文人的評價一樣“實無恥之尤,足令人作三日嘔”。什么“自動化的沙盒”、“具有支持JNI接口,DOM模型等特點”,說起來果然天花亂墜,似乎有什么高明玄妙。

      其實歸根結底,BicaVM無非就由兩種東西所構成,一種叫炒作,而另一種,就叫做扯淡。

      眾所周知,本來JS就是解釋性的語言,而BicaVM是什么東西,是一個能夠讓JS運行字節碼(直接讀取class)的WEB版JVM。也就是說,他要用

      自身還需瀏覽器進行解釋的JavaScript,再去“解釋”已編譯為Class的Java Byte Code……上蒼啊!即便不討論性能問題,這也根本是“讓翻譯找翻譯去翻譯句子給你聽”式的繞口令了吧?別的不講,單就如此腦殘的行為,還有人管這叫“大牛”?別“牛”了,不被評價為“豬”,就算別人嘴下積德!

      再看看BicaVM的類庫,既然實現目的是在瀏覽器中使用JVM,按理說應該是為前端WEB開發搞的吧?可號稱已經模擬了“60% Byte Code”功能的BicaVM中,我卻連半個可視化組件也看不見(當然,可以調取JS指令構建出“窗體”,但這和Java有半毛錢關系嗎?直接寫不更快,本來語法就近似),半個網絡工具也找不到,唯一能找到的,就是一堆堆冗余卻無用的類加載器與Java基礎數據類型的JS實現(N多對于JS來講重復的“輪子”……)

      比如Java中的Long,在BicaVM中需要如此實現(部分源碼,太長無法顯示全,位于22KB的long.js中)。

      圖1:

    用JavaScript編寫一個Java虛擬機?談談嘩眾取寵的BicaVM

      不知道各位都看見了什么,我所見者,就僅僅是一個蠢貨為了讓BicaVM中基本數據類型與標準Java保持一致,而強迫弱類型的JS去做冗長的強類型運算而已凡有點JS開發經驗者,你們能相信在客戶端跑著如此海量的科學計算的后果嗎?能相信這是正常人類想出來的辦法嗎?(BicaVM的基本數據類型全是這樣“造”出來的,所以只要用,這些運算就沒完了)

      可以說,BicaVM僅僅只是一個概念,一個看上去也不美的,JS仿“完整版Java”的概念(而且主要部分都沒實現),可以說,其中真正能起作用的東西,連半個也不存在。(另外,就連概念也不是他先想到的,下文有論及)

      此外,不單這個項目毫無價值,下載BicaVM后我還愕然發現,該項目作者居然在BicaVM項目中要求使用Python運行服務…… 你,你玩Javaer呢?!

      去看看他的webserver文件夾吧,可以說已經把BicaVM與Python綁死在一起了。這多像一個Java Byte Code被翻譯為JavaScript后(其實就是翻譯String,然后解析為JS),再由JS向Python服務器發送請求處理Java代碼的“Python馬甲”啊!(PS:BicaVM所謂的JNI接口未來100%就是這樣,除了JS能執行的,一律讓Python服務器按照請求去訪問某接口,再把執行結果返回給客戶端)

      借用香港江湖片的名詞,這簡直就是“小弟”Java向“話事人”JavaScript求援,再由“話事人”JavaScript找到“龍頭”Python求幫,最后由龍頭大哥Python親自出面幫Java小弟“擺平”問題的一系列標準動作。

      額滴神啊,堂堂“編程兵器譜”排名第一位的Java,居然要向Python“搖尾乞憐”?!別的先不說,既然已經用JS解釋JVM了,你又何苦不直接用Java服務器運行你的演示程序呢?楞把Python做為BicaVM運行的容器,你讓吾輩Java程序員情何以堪啊?!欺負我們搞Java的沒活人了嗎?!從來就有Jython存在的理由,也從來就沒有Pava存在的必要!

      歸根結底,用JS跑執行JVM行不行?行。解釋字節碼行不行?也行,怎么會不行?不過,還是等JavaScript自己先能編譯成機器碼后再說吧。

      但上面所提及的,也無外是皮毛中的皮毛,真正讓小弟深惡痛絕的事情,還要從下面兩個項目講起。

      JSVM(JavaScript Virtual Machine)項目

      JSVM。路過的大家有誰聽說過這個項目沒有?我估計2008年以前學編程的朋友估計有的聽說過,有的沒聽說過,而2008年以后出來混的恐怕就鳳毛麟角了,小弟這里也不強求。總之,這是一個由國人萬常華(wch3116)在2003年搞出來的,結構上仿照標準Java,原理上酷似于BicaVM的開源項目(第一版最像,JSVM2差點,當然,正確的語序應該是BicaVM酷似JSVM)。

      一句話,對比BicaVM而言,JSVM的實用性比BicaVM強太多了。

      要知道,JS的語法結構本就與Java非常近似,如果按照JSVM的思路整合到一個統一的OOP框架下,那么結合當今的HTML5風潮,實在是大有可為。可惜這么好的東西,不但沒多少人幫助發展,更可恨當年還有幾個拉便宜手說便宜話的假牛出來搗亂,結果鬧得該項目“無疾而終”!實在是可惜,可恨,可怒,可惱,可嘆!

      而讓我恨得牙根發癢的,是我在某網站的BicaVM文章評論中,又看到了這樣的說法:

      圖2:

      
    用JavaScript編寫一個Java虛擬機?談談嘩眾取寵的BicaVM

      國內沒人才?我就呸!倒退十年國內就有這樣的人才,我敢拿人頭保證,絕對是先有JSVM后有BicaVM(雖然兩者實現上有差別,但原理并無二致,都是結構上的JS仿Java,而且JSVM直接使用原生JS(當然,也有自己的JSC語法甚至允許自由擴展),不模擬“完整版Java”絕對效率更高),可結果呢?只因JSVM作者是某國人,空有人才,卻很難遇人識才,最后更被歸結到“不是人才”的那群里去了。小弟不知道JSVM的作者還在不在人世(應該還在吧-_-),如果您恰巧看到本文,小弟這里順便跟您說一聲“我佩服您,您在十年前就搞出來的東西,洋人十年后才做出來!才被某些國人夸!”

      公道自在人心,大家有空時可以結合2004年的JSVM舊文,再結合當前的BicaVM,也比較一下國內對中西同性質,不同效率項目(明顯JSVM更快)的不同評價與討論的主要方向吧。

      PS:個人始終喜歡JSVM第一版,也就是高仿Java結構的那版,后來的JSVM2或許因前版性能被某些閑人詬病,于是作者犧牲了太多Java特性而搞了JSVM2,改的已經不像Java類庫,更貼近JQuery之類,也因此失去了原有的優良特性,遺憾。

      Avian項目

      說完了國內的,小弟再來介紹介紹國外的“不知名”JVM項目Avian,這是一個非常精巧的JVM虛擬機項目。Avian最大的特征就在于,可以構建不足1MB的完整Java應用,且無需額外的JRE。

    小弟粗略歸納了一下Avian的要素,總結為如下四點。
    小弟粗略歸納了一下Avian的要素,總結為如下四點。

      1、avian基于OpenJDK構建,代碼結構上與標準Java如出一轍,沒有絲毫例外存在。

      2、avian默認不支持AWT/Swing,SWT等圖形庫(但可以引入,比如作者的示例中就引入了SWT庫),僅有io、lang、net、nio、security、text、util這七個標準Java工具包被預裝(近似于JavaME中CVM的實現)。因此代碼量相當之小。七個包的Java源碼累積僅400多KB,壓縮后簡直就是“微縮景觀”。某種意義上說,用avian寫Java病毒也沒問題(不用圖形庫,連微型虛擬機帶class壓縮后超過不過300KB)。

      3、avian微型JVM默認支持Linux、Mac OS、Windows三種環境的運行及編譯。不過因為開源,從技術角度看移植到Android、iPhone等平臺未嘗不可(如果微軟WP向普通用戶開放C/C++的支持,那么也一樣)。

      4、當然,avian目前的缺點也有不少,比如本身沒有提供自執行的啟動方式,僅能通過C/C++代碼調用main函數啟動,需要用戶對C/C++有初步了解,純Java技術員難以上手。執行速度雖然并不比OpenJDK遜色(因為主體就是從中提取的,雖然作者替換了部分實現),但始終不同于標準JRE,有存在隱患之風險,在更多示例出現前,商業恐怕還難以讓人放心。

      怎么樣,這還算是好東西吧?但不是小弟說話張狂,我要不提Avian的名字,全中國Java程序員有一個算一個,知道這項目者,能“他XYZ的”超過1000人嗎?

      如此實用的東西,在某國卻和JSVM一樣,極少有人理會,可洋人丟出來個垃圾,倒真有不少起哄幫腔的。難怪海外會有一小撮人說:“某國人干事,非得把世界上所有錯誤的方式都嘗試遍了,才可能找到正確的那項選擇”。

      目睹此情此景,我,真替某國的某些程序員感到悲哀。
    posted on 2012-01-31 14:21 writegull 閱讀(2264) 評論(1)  編輯  收藏 所屬分類: javascript

    評論

    # re: (轉)用JavaScript編寫一個Java虛擬機?談談嘩眾取寵的 2012-02-03 23:33 allenny
    也許人家只是好玩,但是我們都把他當正事兒了呢?  回復  更多評論
      

    主站蜘蛛池模板: 99在线观看免费视频| 成人免费乱码大片A毛片| 69式互添免费视频| 亚洲精品高清视频| 久久一本岛在免费线观看2020| 狠狠亚洲婷婷综合色香五月排名| 免费精品国自产拍在线播放| 亚洲成av人片天堂网老年人| 男女猛烈激情xx00免费视频| 亚洲国产精品成人网址天堂| eeuss免费影院| 国产成人亚洲综合无码精品 | 亚洲综合一区无码精品| 免费无码又爽又刺激聊天APP| 亚洲天堂一区二区三区| 国产成人A在线观看视频免费| 亚洲中文字幕乱码一区| 四虎影视永久免费观看网址| 一个人看的www免费高清| 久久精品国产99精品国产亚洲性色| 精品乱子伦一区二区三区高清免费播放 | 在线免费一区二区| 国产亚洲综合精品一区二区三区| 亚洲成a人无码av波多野按摩| 一级毛片成人免费看a| 亚洲天堂一区二区| 男男AV纯肉无码免费播放无码| 欧美色欧美亚洲另类二区| 亚洲日本中文字幕天堂网| 日本免费污片中国特一级| 亚洲综合国产成人丁香五月激情| 日日AV拍夜夜添久久免费| 精精国产www视频在线观看免费| 久久精品国产亚洲| 免费的一级黄色片| a视频在线免费观看| 亚洲人成毛片线播放| 亚洲成A人片在线观看无码3D| 色欲A∨无码蜜臀AV免费播| 亚洲www77777| 亚洲综合日韩久久成人AV|