導航:首頁 > 源碼編譯 > 編譯成原生代碼

編譯成原生代碼

發布時間:2024-12-31 06:18:30

① AJDK-AOT靜態編譯

Go語言受到青睞於雲上新應用,主要因其運行時無依賴,靜態編譯的程序啟動速度快,無需JIT預熱。

java的靜態編譯技術作為激進的AOT技術,通過獨立編譯階段將Java程序轉化為本地代碼,運行時不需傳統Java虛擬機和運行時環境,僅需操作系統類庫支持。

靜態編譯技術使Java語言與原生native程序「合體」,將Java程序編譯為自舉的具有Java行為的原生native程序,兼備Java程序與原生native程序的優點。

Java編譯流程包括前端編譯、即時編譯(JIT編譯)與靜態提前編譯(AOT編譯)。

前端編譯將Java源碼(.java)轉化為Class文件(.class),實現程序轉化為滿足JVM規范的功能,優化側重於程序編碼,編譯為Class文件可直接給JVM解釋器執行,省去編譯時間,加快啟動速度。

後端編譯(JIT編譯)通過JVM內置的即時編譯器,在運行時將Class文件位元組碼編譯成本地機器碼,優化程序運行性能,提高執行效率。

靜態提前編譯(AOT編譯)程序運行前,直接將Java源碼編譯成本地機器碼,優點在於啟動速度快,缺點是靜態編譯後性能優化受限。

靜態編譯器如JAOTC、GCJ、Excelsior JET、ART等,尤其是ART雖然主要通過AOT編譯支持Java運行,但仍然存在解釋器。

目前Java體系主要採用前端編譯+JIT編譯方式,如JDK中的HotSpot虛擬機,通過前端編譯生成Class文件,啟動時解釋執行以節省時間,運行中通過JIT編譯優化熱點代碼提高執行效率。

JIT編譯與AOT編譯比較,JIT吞吐量高,有運行時性能加成,執行更快,但啟動速度較慢,需要時間與調用頻率觸發分層機制;AOT編譯內存佔用低,啟動速度快,無運行時性能加成,不能動態優化。

Java 9引入AOT編譯,能將class文件直接編譯成可執行二進制文件。

在JVM團隊與SOFAStack團隊合作下,AJDK實現靜態編譯的落地,將應用啟動時間從60秒優化至3.8秒,雙十一期間應用運行穩定,無故障,GC停頓時間在100毫秒,內存佔用和RT響應與傳統Java應用持平,啟動時間降低2000%。

綜上所述,靜態編譯在穩定性、資源佔用、RT響應等方面指標與傳統Java應用基本持平,啟動時間顯著縮短。

python是什麼編程語言,和C++比怎麼樣

python是解釋語言,c++是編程語言。

1、編譯器是off-line,解釋器是on-line。編譯器把整個程序讀進來,進行一系列變大變小轉化優化的過程,產生可執行文件,然後編譯器退出,由可執行文件來讀取和輸出數據,python main.py這個命令會啟動python虛擬機和解釋器,將main.py的代碼一行一行解釋,只不過不同於REPL,它不會把每一行表達式的值列印出來。
2、Python是一種解釋執行的語言,Python的縮進要求十分嚴格,通過縮進來區別代碼塊,C++是一種需要編譯執行的語言,通過大括弧來區分代碼塊。C++的工作方式是,首先將寫好的代碼保存到擴展名為.cpp的文件中,然後編譯.cpp文件。編譯器將C++代碼轉換為原生代碼。然後執行這些機器代碼。因此,C++非常靠近硬體。
、C++和Python都是從C語言演變出來的面向對象的編程語言,將相關數據和操作數據的方法打包成一個類,不同的類相互隔離,也可以自由組合,類是一組數據以及操這組數據的函數(方法)的集合。類是對象的抽象模板,對象是類的具體實例,給類的數據取不同的值,同一個類就產成了不同的對象。

閱讀全文

與編譯成原生代碼相關的資料

熱點內容
元神的伺服器怎麼看 瀏覽:362
stc8單片機串口中斷 瀏覽:954
信號分析pdf 瀏覽:927
暴力刪除命令 瀏覽:803
qt如何編譯加快速度 瀏覽:903
php添加數據sql語句 瀏覽:717
免費的小說app有什麼 瀏覽:405
螺桿壓縮機進氣閥動畫 瀏覽:651
兩台伺服器如何做負載均衡 瀏覽:227
程序員的工資是漲的嗎 瀏覽:813
視頻存儲伺服器可以干什麼 瀏覽:463
創建文件夾安裝失敗怎麼回事 瀏覽:832
程序員高考隔了幾年 瀏覽:822
雲伺服器是哪一層 瀏覽:22
jit編譯器的jit什麼意思 瀏覽:330
我想清理手機中空白文件夾 瀏覽:976
電腦e盤文件夾刪不掉怎麼辦 瀏覽:607
外圓凹圓弧編程 瀏覽:462
html5編程題 瀏覽:840
乾燥機製冷壓縮機一開就跳動 瀏覽:389