手寫JAVA虛擬機(一)——搭建環境


  畢業設計打算做一個java虛擬機,首先要對java虛擬機有一個簡單的了解(jvm)。目前市面上有眾多的jvm,如sun公司的HotSpot VM、Classic VM,IBM公司的J9 VM等等,這里以sun公司的HotSpot VM為藍本實現一個java虛擬機。為什么選用hotspot呢,因為這個是目前jdk里面自帶的並且是默認的jvm,也是使用最多的jvm。

  

  雖然世面上的jvm眾多,但是所有的jvm都遵循一個標准——java虛擬機規范。這里我給出JAVA7的規范,https://pan.baidu.com/s/1Yj4Ai08hKl4DNgfNfkySYQ。

  上圖是Java虛擬機的基本構成,包括類加載器子系統、運行時數據區、執行引擎以及本地方法接口等,其中運行時數據區又由方法區、堆、Java棧、PC寄存器和本地方法棧組成。這些基本組成都是實現一個Java虛擬機所必須的,因為Java虛擬機是一個規范,通過這個規范來讓Java語言具有跨平台的特性,所以必須要遵守,否則就會破壞到Java語言的特性。

  介紹完了jvm,接着就是一系列准備工作。

  先選擇語言,多數jvm是使用C\C++來編寫的,因為C\C++是比較接近底層的語言,但是C\C++太過於復雜,我又比較怕指針,所以選擇了一門比較小眾的語言——GO。GO語言是google2012年推出的一門語言,go語言介於C和java之間(指與硬件的距離,C\C++更接近硬件),支持指針但不支持指針運算,更為安全,同時最重要的一點就是go語言自帶垃圾回收,了解jvm的都知道垃圾回收是jvm里面一個非常重要也非常難的地方。

  然后是jdk,這里選用的是jdk1.8.0_144。安裝好jdk,配置環境變量。配置過程,https://jingyan.baidu.com/article/e75aca85b29c3b142edac6a8.html。配置完成后,打開命令提示符,輸入cmd回車,輸入java -version回車,出現對應版本即表示配置成功。

  

  最后是安裝go。從go的官網下載,https://golang.org/。如果go官網無法訪問,也可以用http://golangtc.com/download下載。下載之后的如果是安裝包,那直接安裝並配置GOPATH環境變量即可(安裝包會自動配置GOROOT變量)。如果是壓縮包,那解壓之后要配置GOROOT和GOPATH環境變量。GOPATH環境變量指定的是go語言的工作目錄,go語言以包為單位組織源代碼,這個包就放在GOPATH指定的目錄下面。GOROOT指定的是go命令行工具文件夾,使用go命令時會自動在這個GOROOT下尋找go.exe。

  這里我配置的GOPATH為D:\JVM\goWorkSpace。如圖

   

  配置完成后,打開命令提示符,cmd回車,輸入對應信息會出現如下內容,即表示安裝go並配置環境變量成功。

  

  最后說一下整個工作空間,我的GOPATH為D:\JVM\goWorkSpace,在這個文件夾下面創建src作為存放源碼的文件夾,另外,當你后面運行和編譯的時候會出現另外兩個文件夾,pkg和bin,pkg為一些包信息,而bin中的為可執行文件。

  這樣整個准備工作就做完了,接下來會一步步完成整個JVM。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM