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