色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Java能不能像C語言不通過JVM虛擬機直接編譯成二進制機器碼

錢衛國2年前23瀏覽0評論

Java能不能像C語言不通過JVM虛擬機直接編譯成二進制機器碼?

肯定是可以的,而且目前就有成熟的解決方案,不過,在回答這個問題之前,需要先明確一點,就是為什么Java 需要JVM虛擬機?然后再來討論可行的實現方案。

Java 為什么需要JVM

眾所知周,Java 是跨平臺的,能夠實現程序代碼的“一次編譯,到處運行”,無論在哪個操作系統上,Java 代碼都會被編譯為統一的Java 字節碼文件,然后再交由JVM虛擬機來運行;Java 程序員只要編寫一套程序,便同時能在Linux,Windows和Mac x等不同操作系統上運行,JVM在其中扮演了一個不可或缺的重要角色。

不同操作系統的實現方式不一,各個操作操作都有自己的一套處理方式和規范,Java 的跨平臺功能就是基于不同操作系統實現不同JVM,在哪個操作系統上運行就調用哪個操作系統的JVM來運行Java 程序。

正式由于JVM虛擬機的存在,Java 跨平臺才得以實現,也才會有那么多的企業、組織和開發者青睞Java 語言,讓Java 語言二十多年來長盛不衰,更是有衍生了不少除Java 之外的,基于JVM運行的優秀編程語言,比如:Kotlin、Scala、Groovy、Clojure、Ceylon等。

GCJ

GCJ 是GNU Compiler for the Java Programing Language 的簡稱,翻譯過來就是“為Java 語言實現的GNU編譯器”,GCJ編譯工具就包含在包含在GCC中,只要下載了GCC,就能使用GCJ。

使用GCJ編譯工具可以把Java 源程序編譯為字節碼文件,也能將Java 字節碼文件編譯為本地機器碼,更是能實現Java 源程序直接編譯為本機可運行的本地機器碼。而本地機器碼就可在本機直接運行。

GraalVM

GraalVM 是甲骨文公司開發的一個基于JVM的、支持多語言的高性能虛擬機,GraalVM中提供的native-image組件就能實現將Java 源程序直接編譯為本機可運行的本地機器碼,就可以在本機直接運行。

不僅是Java,GraalVM支持的語言還有C/C++、Rust、JS、Python、R、Ruby等語言,可謂是一個全棧語言虛擬機。

方舟編譯器

最后一個是華為的方舟編譯器,華為開發方舟編譯器的目的就是為了解決JVM虛擬機性能較低的問題。方舟編譯器支持Java、Kotlin、C/C++、JS等語言,目前方舟編譯器實現了部分開源,代碼托管在Gitee、華為官方代碼庫。

方舟編譯器前端接收Java、Kotlin、C/C++、JS的語言的源程序,然后將其轉換為中間語言IR,然后再交給后端,最終生成本機可運行的二進制文件。

完結,希望以上回答對你能有所幫助。

java的歷史,Java能不能像C語言不通過JVM虛擬機直接編譯成二進制機器碼