2015年10月5日 星期一

JVM 心得二 從arduino 談起

目前移植了非常精簡化的JVM版本到ARDUINO,其實只能算是一種技術概念驗證,不是什麼完整的東西,只實現了幾個opcode的指令集,大概足夠跑跑走馬燈範例,然後一些method呼叫native去達成,程式非常地小巧,目前只是個人嘗試,不算完整發展的專案,如果日後有發展的熱忱在,這東西應該會變成是一個可能在SD卡模組上動態載入程式的方式.

其實在arduino上跑jvm不太有啥好處,真正說來我覺得好處大概只有程式碼在單一大小於一定size前(至少一份要能夠載入運作),可以把程式切割成很多部分,放在SD卡上,隨時可以動態載入程式或是切換,達到某種SWAP的功能,而且變成也不需要燒錄步驟.

目前這樣的做法最大的問題其實是跟native call的對應,目前是依照範例對應寫死
https://123d.circuits.io/circuits/1074042-arduino-jvm
但這native call的index其實都不一定相同,這介面階口在轉換時要想辦法動態轉接一下.

關於這些以後有新的發展後再報告了.....

其實jvm這類stack machine有一個優點應該是說美感是我很欣賞的...那就是核心架構概念非常精簡,靠一個stack和一個array加上少少幾個opcode,就可以變化出許許多多的變化,如果把java 物件導向和比較複雜的部分去除,這stack vm真的相當好實作與移植,java的jvm複雜在物件導向相關功能的記憶體模型概念,但OPCODE的執行確相當簡單扼要....到有一種極簡的美感.

這類虛擬機雖然號稱跨平台,但這有很多前提.....在純運算邏輯處理的部分,到哪裡跑都一樣,但跟OS有關係.跟IO有關係的部分,它的呼叫就一定會用到原生的功能,到哪都可以跑的前提是,至少在原生呼叫的階口都保有相同的特性和完整實作,否則都是會出問題的.


沒有留言:

張貼留言