有些答案對java的理解還停留在上古時代或者教科書里。其實,現在用編譯型、解釋型來分類編程語言已經有點力不從心了。JAVA的第一道工序是javac編譯,當然目標文件是BYTECODE。后續可能有三種處理方式:1. 運行時,BYTECODE由JVM逐條解釋執行,2. 運行時,部分代碼可能由JIT翻譯為目標機器指令(以method為翻譯單位,還會保存起來,第二次執行就不用翻譯了)直接執行;3. RTSJ。繼JAVAC之后執行AOT二次編譯,生成靜態的目標平臺代碼(典型的就是IBM WEBSHPERE REAL TIME)。
有的時候,可能是以上三種方式同時在使用。至少,1和2是同時使用的,3需要程序員手工指定。所以討論語言得更細化一點了,強類型的、弱類型的,靜態的、動態的,GC-based的、手工管理內存的,有沒有VM...作者:覺淺鏈接:https://www.zhihu.com/question/19608553/answer/27896401來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。新聞熱點
疑難解答