今天忽然想通了如何在瀏覽器上解釋運(yùn)行java代碼的問(wèn)題。
以前考慮在js上開(kāi)發(fā)一個(gè)java解釋器,最大的困難是如何調(diào)用java現(xiàn)有工具類(lèi)庫(kù)的問(wèn)題,因?yàn)檫@部分是依賴(lài)于JVM本身來(lái)實(shí)現(xiàn)的,而瀏覽器環(huán)境上現(xiàn)在沒(méi)有JVM了,這就變成了一個(gè)死結(jié)。
今天忽然想到,可以把這部分功能封裝在后臺(tái),通過(guò)ajax方式讓前臺(tái)js來(lái)調(diào)用,由于對(duì)象的實(shí)例地址已經(jīng)通過(guò)變量表進(jìn)行了映射,因此只要把映射地址,方法名,調(diào)用參數(shù)這些傳遞到后臺(tái)就可以進(jìn)行對(duì)應(yīng)的調(diào)用和處理。再將處理結(jié)果返回給調(diào)用者。
這樣的 同步調(diào)用完成后,js得到的結(jié)果和java調(diào)用以后得到的結(jié)果就是一致的了。
其他的代碼操作都可以在js上來(lái)直接運(yùn)行,雖然可能會(huì)略有區(qū)別。
按照這個(gè)思路,有兩周時(shí)間,js版本的java解釋器也可以順利完成了。雖然可能需要更長(zhǎng)的時(shí)間來(lái)修復(fù)bug.