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

編譯成原生代碼

發布時間: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語言演變出來的面向對象的編程語言,將相關數據和操作數據的方法打包成一個類,不同的類相互隔離,也可以自由組合,類是一組數據以及操這組數據的函數(方法)的集合。類是對象的抽象模板,對象是類的具體實例,給類的數據取不同的值,同一個類就產成了不同的對象。

閱讀全文

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

熱點內容
朗行壓縮機維修 瀏覽:418
單片機比例運算電路 瀏覽:51
程序員改方案亮刀槍 瀏覽:134
無源資源碼化的作用 瀏覽:997
java內存編譯 瀏覽:161
福建節能環保無油螺桿壓縮機型號 瀏覽:525
美國紐約攝影學院pdf 瀏覽:950
如何把網頁代碼上傳到伺服器上 瀏覽:658
清理筆記本電腦灰塵解壓視頻 瀏覽:206
夜蒲聚會app是什麼軟體 瀏覽:641
任天堂如何區分伺服器 瀏覽:818
雲伺服器的運用前景 瀏覽:547
解壓視頻素材哪裡有 瀏覽:255
小米5android7 瀏覽:842
極品飛車10修改直接解壓 瀏覽:640
簡易演算法怎麼用 瀏覽:497
壓縮比101用什麼油 瀏覽:562
買白銀下什麼APP 瀏覽:842
伺服器操作台如何操作 瀏覽:245
可編程安全繼電器 瀏覽:989