導航:首頁 > 源碼編譯 > jdk7源碼詳解

jdk7源碼詳解

發布時間:2025-08-02 12:07:14

㈠ 如何用Mac完美編譯OpenJDK 7

1.選擇OS X版本很重要。
目前這里Mac版本是10.10,配置好必要信息以後就開始編,結果錯誤滿屏。簡單看過之後發現是編譯C文件的時候參數有誤,於是查了一下,才知道是LLVM版本太新,不兼容低版本的一些編譯參數。照著上面改了點代碼,但是依舊編譯不過。既然高版本不行,就裝個低版本的唄。由於最新的OS X不能裝低版本的Xcode(裝了Xcode才能裝LLVM),所以去下了一個10.8的OS X裝在虛擬機里,然後再裝個Xcode4.4。
裝好Xcode以後,要手動下載LLVM安裝。打開Xcode,隨便建立一個空項目,然後打開Preferences,找到如下所示的地方開始安裝
第一步咱就這么搞定了。
2.安裝X11
X11這玩意是unix類os使用的圖形系統,10.8以前的OS X是自帶的,但是從此以後就不自帶了。對應於Mac,你需要裝XQuartz,這個沒有版本限制,去網上下最新版即可。裝這個的原因是當時在編譯PolicyTools的時候出現了如下錯誤:
ld: library not found for -lX11
安裝以後要為X11建立軟連接
sudo ln -s /usr/X11/include/X11 /usr/include/X11
3.安裝freetype
linux下編譯openjdk的朋友可能遇到過需要安裝freetype的要求,然後安裝下並將安裝目錄加到環境變數里就好了。但是OS X不一樣,freetype單獨安裝實際是沒用的。雖然單獨安裝能讓編譯前的檢查通過,但是到後面還是會出錯,至於原因我沒找到。那怎麼辦呢?實際上如果安裝好X11,freetype就一起安裝好了,大家可以去X11的目錄里看看是否有freetype。
雖然說安裝了X11就自帶freetype,但是編譯過程中可能會出現如下錯誤:
error: freetype/config/ftheader.h: No such file or directory
實際上就是目錄問題,執行下面這句命令就好了:
sudo ln -s /sr/X11/include/freetype2/freetype/ /usr/X11/include/freetype
4. 配置環境變數
和在Linux下編譯相比,OS X的環境變數配置相對來說簡單很多。只需要配置編譯需要的jdk和llvm的目錄就可以了。
因為很多源代碼都是用本機現有的jdk來編譯,所以預裝一個低版本的jdk是必須的,這里我們需要安裝jdk6。安裝好以後,找到其安裝目錄,並添加如下環境變數:
[plain] view plain
export ALT_BOOTDIR=/System/Library/java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
通常來說安裝目錄都應該在/System/Library/Java/JavaVirtualMachines目錄下。如果不在的話,有個技巧可以找到。因為安裝好jdk以後,系統會自動在/usr/bin下建立指向java命令的軟連接,所以執行「ls -l /usr/bin/java」就能看到這個命令指向哪,然後這么順著找下去就能找到。
llvm是編譯C類文件所必須的,所以要把它的所在目錄添加到環境變數里。通常OS X下安裝app都會把app移到Applications目錄下,所以我最初安裝Xcode的時候也把他移進去了,如果你把Xcode放在了別的目錄,那就找到對應的目錄即可。
[plain] view plain
export ALT_COMPILER_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin
5.獲取編譯源碼
按照這上面的第三點獲取源代碼 如果沒有裝hg的需要自行安裝
到現在為止,編譯前的准備工作已經完成。我們可以先執行make sanity執行下編譯前的檢查。如果檢查通過,先來看看具體的編譯命令:

[plain] view plain
make ALLOW_DOWNLOADS=true SA_APPLE_BOOT_JAVA=true SKIP_DEBUG_BUILD=false SKIP_FASTDEBUG_BUILD=false ALWAYS_PASS_TEST_GAMMA=true HOTSPOT_BUILD_JOBS=`sysctl -n hw.ncpu`
這里有兩個問題:

a. ALLOW_DOWNLOADS=true表示編譯過程中允許下載。因為有些編譯模塊,比如jaxp,編譯腳本中指定了需要下載特定的包。雖然我沒試過設置成false會不會影響編譯,但是還是推薦設置成true。但是這就帶來另一個問題,下載這類包很費時間,有時候就會在那卡很長時間,所以我根據編譯日誌找到編譯腳本中控制下載的具體命令,修改修改並且把用迅雷下的對應包放到正確目錄中,然後重新編譯一遍,就能順利通過了。這一點後面我會詳說。
b. SKIP_DEBUG_BUILD=false SKIP_FASTDEBUG_BUILD=false這兩個表示編譯出來的jdk或者hotspot是否可以debug。FASTDEBUG表示的應該是提供簡單的debug功能,如果想要完整的debug,則SKIP_DEBUG_BUILD必須設置為false。不過這里提醒一點,如果想在debug jdk的時候能看到debug信息,比如變數名等,只需要SKIP_FASTDEBUG_BUILD設置為false就可以了
如果這兩個問題都不是問題,那麼就可以按回車了。如果debug和fastdebug都是false,再加上用虛擬機編譯,所以需要的時間會比較長,你也許需要找一部長一點的電影來消磨一下了。最後編譯出來的結果是這樣的:
j2sdk-image就是自己編譯出來的jdk,可以直接用了。至於其他目錄下的內容,各位自己琢磨吧。
現在來說下ALLOW_DOWNLOADS=true引起的問題。
但是遇到下載很久的包總共有三個:
jaxp145_01.zip、jdk7-jaf-2010_08_19.zip、jdk7-jaxws2_2_4-b03-2011_05_27.zip
之前說過可以修改編譯腳本跳過下載並且用我們已經下載好的,但是實際編譯過程中,這三個包對應的的編譯腳本是動態生成的,所以只能等到他卡在那了,才能停下來並找到腳本修改之。因此因為這三個包,總共需要停3次。,比起一直卡在那好太多了。
假設編譯的是普通版本,即非DEBUG和非FASTDEBUG。下面以jaxp145_01.zip為例子講一下怎麼修改對應腳本:
腳本所在位置:openjdk根目錄/build/macosx-universal/jaxp/build/xml_generated/build-drop-jaxp_src.xml

㈡ CRUD 程序員勿進JDK 源碼剖析手冊與並發編程圖冊,完美詮釋高並發

在後端程序員的中,如果你有高並發的經驗,也往往能得到比別人更多的機會。原因很簡單,高並發會涉及到各種各樣的技術問題,如介面響應超時、GC 頻繁、大數據量儲存、死鎖等等。能搞定高並發的程序員,技術深度一定不會差。

為了能大家更好地了解 Java 並發,我我前段時間特地從阿里的一位朋友手上拿到了他手寫的 JDK 源碼剖析手冊與並發編程圖冊,下面一起來看看吧:

JDK 源碼剖析手冊

基於 JDK7 和 JDK 8,對整個 Concurrent 包進行全面的源碼剖析。JDK8 中大部分並發功能的實現和 JDK 7 一樣,但新增了一些額外的特性。例如 CompletableFuture、ConcurrentHashMap 的新實現、StampedLock、LongAdder 等。



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動


詳細內容展示


點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動

並發編程圖冊

包含大量圖文以及源碼分析幫助大家理解相關知識,藉助這些圖文,按照這個順序學習,至少可以讓你簡單入門並發。

總覽



點擊並拖拽以移動


詳細內容展示



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動



點擊並拖拽以移動


由於這份資料實在是細節內容實在太多啦,所以只能把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!如果有需要完整版的朋友可以: 一鍵三連支持一下私信我,注意回復【000】即可獲取更多免費資料! 希望大家看完之後能夠有所收獲~

閱讀全文

與jdk7源碼詳解相關的資料

熱點內容
360鈴聲文件夾 瀏覽:39
程序員60歲以上能做什麼手續 瀏覽:463
廣告app是哪裡來的 瀏覽:715
ice伺服器是什麼版本 瀏覽:412
單片機做小車需要哪些零件 瀏覽:379
怎麼節省手機電量安卓 瀏覽:4
iphoneqq郵件伺服器地址 瀏覽:108
新概念英語第二冊pdf 瀏覽:730
最受歡迎的源碼是什麼 瀏覽:475
linux給文件許可權命令 瀏覽:541
hashset介面源碼 瀏覽:881
python動力方程 瀏覽:659
一個編譯器需要多少行代碼 瀏覽:539
安卓7怎麼轉發視頻 瀏覽:248
c51編程教程 瀏覽:201
尼康的相機怎麼創建多個文件夾 瀏覽:467
壓縮餅干開袋即食嗎 瀏覽:160
騰訊雲伺服器創建要多久 瀏覽:833
存儲卡出現奇怪文件夾如何修復 瀏覽:238
恆智天成加密鎖怎麼裝驅動盤 瀏覽:571