簡體   English   中英

Java編譯器:Java語言應該如何映射到JVM指令?

[英]Java Compiler: how should Java language be mapped to JVM instructions?

Java語言中的構造語義由Java語言規范定義,但它們不是JVM指令。 那么,是否有可能嚴格定義規范以防止錯誤實現Java編譯器? 或者Java語言和JVM指令之間的映射非常簡單,沒有必要擔心這個問題?

它會破壞將語言與字節碼分離的大部分內容,以便將Java代碼清晰地映射到JVM指令。 相反,編譯器可以自由地確定哪個指令最能代表所提供的源,以便優化實際運行的效率。

這確實意味着編譯器可能會做錯事,但一般來說,你可以相信像Oracle這樣的主要編譯器正在做正確的事情; 他們經受了很多考驗。

Java語言中的構造語義由Java語言規范定義,但它們不是JVM指令。 那么,是否有可能嚴格定義規范以防止錯誤實現Java編譯器?

當然是。 Java語言規范的后續版本使用比以前版本更正式的表示法。 這應該有助於減少模糊和誤解的可能性,但任何主要用英語編寫的語言規范都容易被誤解。

或者Java語言和JVM指令之間的映射非常簡單,沒有必要擔心這個問題?

我認為“直截了當”是一種主觀的衡量標准。 :o)當然,它比我的預期更直截了當。

編譯器( javac )本身在優化方面似乎沒有做太多,例如,請參閱此問題 大多數優化實際上是由JVM在運行時完成的(通過HotSpot)。

其他編譯器實現可能會進行更多優化。 此外,還有一些字節碼處理器(如ProGuard)對字節碼執行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM