成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
最近目睹某網絡新聞“程序員Artur Ventura,這位超級大牛,用JavaScript寫了一個java虛擬機BicaVM”在網絡上傳的沸沸揚揚,仿佛BicaVM就是天上有地下無的創舉,仿佛Artur Ventura就是繼比爾蓋茨,喬布斯之后的第三位IT業領軍人。下面我們將談談嘩眾取寵的BicaVM。

◆ 今日目睹某網絡新聞,開篇明義便包含如下幾行文字

【程序員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:

不知道各位都看見了什么,我所見者,就僅僅是一個蠢貨為了讓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)。

PS:在iteye上有個關于該項目討論的“影子”殘留,不清楚來龍去脈的可以先預習:

http://www.iteye.com/topic/7252

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

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

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

圖2:

國內沒人才?我呸!倒退十年國內就有這樣的人才,我敢拿人頭保證,絕對是先有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的要素,總結為如下四點。

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一樣,極少有人理會,可洋人丟出來個垃圾,倒真有不少起哄幫腔的。難怪海外會有一小撮人說:“某國人干事,非得把世界上所有錯誤的方式都嘗試遍了,才可能找到正確的那項選擇”。

——————————

真替某國的某些程序員感到悲哀。

原文鏈接:http://www.cnblogs.com/cping1982/archive/2011/11/23/BicaVM.html

【編輯推薦】

  1. 用JavaScript編寫JVM可成功運行Java程序
  2. 不需要Web應用服務器Java實現WebServices
  3. Java自帶的Future多線程模式
  4. Java程序員慣性思維的一個錯誤
  5. 精解Java中代理模式的實現
責任編輯:林師授 來源: cping的博客
相關推薦

2017-10-14 13:34:28

數據湖數據水庫自助分析

2018-08-24 14:44:17

2011-07-26 09:01:05

Java

2018-09-19 15:46:51

編程語言Python編譯器

2021-08-03 22:26:46

Go函數分頁

2019-04-01 14:17:36

kotlin開發Java

2013-03-15 14:59:03

VMwarevSphere ESXWorkstation

2012-05-18 10:22:23

2009-02-23 13:05:32

程序員學習方法

2018-06-19 15:39:21

HeapJava虛擬機

2011-06-22 13:35:55

JVM

2011-12-01 13:13:26

JavaJVM

2020-01-17 10:52:37

無服務器容器技術

2009-06-12 16:02:58

裝載Java虛擬機

2013-07-17 09:32:58

2010-07-26 09:02:38

2010-09-17 15:12:57

JVMJava虛擬機

2020-06-03 19:07:49

Java虛擬機JVM

2010-09-25 15:13:40

JVMJava虛擬機

2019-03-05 14:59:42

Java虛擬機加載類
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人二区 | 久久看片| 国产成人精品一区二区三区四区 | 国产99久久 | 天天天天操| 欧美一级三级 | 久久久www成人免费精品 | 成年人在线观看视频 | 国产精品一区在线 | 999久久久免费精品国产 | 日本精品免费 | 国产激情偷乱视频一区二区三区 | 激情五月综合 | 亚洲91精品 | 狠狠操在线 | 国产一区二区三区四 | 久久精品成人一区 | 欧美日韩一区二区在线观看 | 无人区国产成人久久三区 | 精品国产欧美 | 国产中文字幕网 | 精品久久久久久久久久久 | 不卡在线一区 | 范冰冰一级做a爰片久久毛片 | 亚洲国产高清在线观看 | 极品电影院 | 91精品国产自产精品男人的天堂 | 欧美一区二区三区久久精品视 | 久久99精品视频 | 久草免费在线视频 | av网站观看 | 一区二区三区四区在线视频 | 香蕉视频久久久 | 在线激情视频 | www.亚洲精品 | 精品国产一区二区三区久久狼黑人 | 日本在线黄色 | 韩日一区二区三区 | 久久久久国产一区二区三区四区 | 91在线精品播放 | 欧美a级成人淫片免费看 |