日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java编译机制_java的编译机制

發布時間:2024/8/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java编译机制_java的编译机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們通常寫的文件都是java文件,最后要在JVM上運行則需要將java文件編譯成class(二進制文件).

各廠商在實現JDK時通常會符合java語言規范的源碼編譯為class文件的編譯器.編譯器的好壞很大程度上決定了最后程序在機器上執行效率.通常使用Sun JDK(javac).

javac將java源碼編譯成class文件有以下主要的三個步驟:

分析和輸入到符號表(parse and enter)

parse過程為詞法分析和語法分析.詞法分析主要是將字符串轉成token序列;語法分析是根據語法將token生成抽象語法樹.

enter是將符號輸入到符號表.通常包括確定類的超類型和接口、根據需要添加默認構造器、將類中出現的符號輸入類自身的符號表中等。

注解處理(annotation processing)

主要處理用戶自定義的注解,我們通常會根據注解來生成一代碼或做一些特殊的檢查。而在編譯時就會生成相關代碼。然后再做parse and enter操作。

語義分析和生成class文件(analyse and generate)

analyse是基于抽象語法樹進行一系列的語義分析,包括將語法樹中的名字、表達式等元素與變量、方法、類型等聯系到一起;檢查變量前是否申明;推導泛型方法的類型參數;檢查類型匹配;進行常量折疊;檢查所有語句都可到達;檢查所有exception都被捕獲或拋出;檢查變量的確定性賦值;將泛型轉為java;精減語法結構等;

在完成了語義分析后,開始生成class文件:首先將實例成員初始化器收集到構造器中,將靜態成員初始化器收集為();接著將抽象語法樹生成字節碼,采用的方法為后序遍歷語法樹,并進行最后的少量代碼轉換(如將string轉變為stringBuffer操作);最后從符號表生成class文件。

class文件中并不僅僅存放了字節碼,還存放了很多輔助JVM來執行class的附加信息。

原文:http://881206524.blog.51cto.com/10315134/1901182

總結

以上是生活随笔為你收集整理的java编译机制_java的编译机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。