YVM基于 C++ 的 Java 虛擬機(jī)
YVM是用C++寫的一個(gè)Java虛擬機(jī),現(xiàn)在支持Java大部分功能,以及一個(gè)基于"標(biāo)記清除算法"的并發(fā)垃圾回收器. 不過還有很多bug等待修復(fù)。 感興趣的朋友pull request/fork/star吧!
已支持語言特性
高級特性逐步支持中,可以開Issue提議或者直接PR
Java基本算術(shù)運(yùn)算,流程控制語句,面向?qū)ο蟆?/p>
構(gòu)建和運(yùn)行
預(yù)置MSVC 2017工程文件,同時(shí)支持CMakeLists
配置編輯src/Option.h,如果是Windows則
#define TARGET_WIN32
如果是Linux則
#define TARGET_LINUX
編譯如果使用MSVC,直接打開src/yvm.sln即可 如果使用CMakeLists
$ cd yvm $ cmake . $ make -j4
運(yùn)行
# --runtime為在YVM上運(yùn)行的Java程序所必須的運(yùn)行時(shí),多個(gè)值用";"分隔 # 后面指定運(yùn)行程序的全修飾名,如ydk.test.QuickSort ./yvm --runtime=C:\Users\Cthulhu\Desktop\yvm\javalib ydk.test.QuickSort
關(guān)于JDK
部分JDK類是JVM運(yùn)行攸關(guān)的,但由于JDK比較復(fù)雜不便于初期開發(fā),所以這里用重寫過的JDK代替,源碼參見javalib_src目錄,編譯后*.class文件位于javalib 目前重寫過的JDK類有:
java.lang.Stringjava.lang.StringBuilderjava.lang.Throwablejava.lang.Math(::random())java.lang.Runnablejava.lang.Thread
運(yùn)行效果
開發(fā)文檔
Wiki中有很多詳細(xì)的開發(fā)文檔,如果想探索關(guān)于YVM的更多內(nèi)容,請移步瀏覽:-)
License
Code licensed under the MIT License.
評論
圖片
表情
