BicaVM:基于JavaScript的JVM-為什么呢?
上個周末,我曾去過Codebits,并做過關(guān)于計算機語言的介紹,你可以在這里看到它。如同這個帖子,我知道其語言組織的不好。
它的要點是:對于Javascript,我沒有與其它人相同困難。Javascript當然是可愛的語言。每個人都喜歡它的函數(shù)特性,基于原型(prototype)的繼承,但它缺乏一些我們20年前就確定是必不可少的東西(如模塊化),甚至有一些嚴重的問題(如== VS ===是一種糟糕的處理標識的方式)。
還等什么?
我相信,瀏覽器應(yīng)該有某種虛擬機,其中的語言之一,將是JavaScript,但如果你是用其他語言實現(xiàn)一個個項目,為什么不用相同的語言實現(xiàn)客戶端功能呢?只要提供該語言的運行環(huán)境即可。越是如此,如我在講演中指出的那樣,我真正看到語言是作為工具的。你應(yīng)該為每一問題爭取***的(結(jié)果)。
超越語言。
瀏覽器上的虛擬機,也有一些有趣的副作用。***個是,你必須自動沙箱(automatically sandboxing),所以你可以允許頁面中運行不可信的外部代碼而沒有問題。還可以凍結(jié)客戶端的虛擬機,并將其發(fā)送回服務(wù)器端,讓您有一個非常簡單的方法,實現(xiàn)獨立于瀏覽器的狀態(tài)持久化。便攜式設(shè)備沒有插件架構(gòu),并不能運行Java Applets(并非我如此想但卻是事實)。更激動人心的一點是,如果你的代碼出現(xiàn)麻煩,你可以打包你的虛擬機,并將其發(fā)送回服務(wù)器端解剖分析。毫無疑問,寫這樣實現(xiàn)的最重要的原因是:因為我可以。
因為在一些項目中,我已經(jīng)開始思考,我一直在尋找JavaScript虛擬機。我更傾向JVM,由于存在一個圍繞它的很大的生態(tài)系統(tǒng)。然而,在JavaScript中唯一可用的JVM是Orto;我沒有收集到?jīng)]有任何文檔或代碼,是一個字節(jié)碼到(Javascript)源碼的轉(zhuǎn)換器,轉(zhuǎn)換器存在問題(諸如:在GWT中,你不能使用反射,因為在轉(zhuǎn)換過程中將丟失所有類信息)。正因為如此,我決定從頭開始一個JVM實現(xiàn),這就是BicaVM出生的緣由。BicaVM是JVM實現(xiàn)的JavaScript實現(xiàn),6個月前著手編寫,上周五公布。
快或慢?
我所聽到的最常見的抱怨之一是說Java和JV運行慢,在JavaScript中實現(xiàn),它會更慢。我可以用很多解釋來告訴你,你可以使用先發(fā)制人的代碼轉(zhuǎn)換,另外,在此類VM下,JIT實際上實現(xiàn)簡單,你可以下載初始化包將加快初始化進程,但我想敬告克努特博士:“早期的優(yōu)化是一切罪惡的根源”。
所以在這一點上BicaVM可以運行Java代碼。您現(xiàn)在可以使用Java改變DOM,因為我對JNI的支持(映射為JavaScript函數(shù))。哇!確實可以在iPad/iPhone上運行。
BicaVM下載:http://github.com/nurv/BicaVM。
附現(xiàn)場速寫:
原文鏈接:http://simpleframework.net/blog/v/74076.html
【編輯推薦】