<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          怎么 debug JDK 源碼?

          共 2745字,需瀏覽 6分鐘

           ·

          2021-10-25 19:56

          點擊關注公眾號,Java干貨及時送達

          0. 寫在前面

          今天給大家分享下如何在搭建一套你自己的 Java 源碼學習環(huán)境。它有啥用呢?我認為最大的作用就是你可以一邊 debug 源代碼,情到深處時可以直接寫下你當時的一個理解。

          不知道你有沒有這種體驗,很多時候我們看懂了,總以為自己能記住,結(jié)果可能過了兩天就忘記了。這也應了那句古話,好記性不如爛筆頭。學習 JDK 源碼也是一樣的道理,比如你心血來潮去研究了下 ArrayList、HashMap、阻塞隊列、ConcurrentHashMap、鎖等最常用工具類的具體實現(xiàn),一步步調(diào)試后終于頓悟了,這個時候你肯定想把自己的成果寫到源碼的對應位置,下次再看可就輕松多了。

          就算寫錯了,時隔幾年偶然再看時,也能看到當年初出茅廬的那個你的青澀,或許你還會微微一笑,被當年那個挑燈夜戰(zhàn)努力的你所觸動。

          直接去跟源碼都是進入到編譯后的 *.class 文件的,并不能讓你寫寫畫畫, 為了可以讓你記錄自己的成長,留著以后緬懷,七哥今天帶你手把手配置一套自己 oracleJDK 17 的源碼閱讀環(huán)境。

          配置很簡單,跟著一步步操作可以了,具體 JDK 的版本看你自己選擇,區(qū)別只在于下載時選擇不同的 JDK 版本。

          工具介紹:

          • oracleJDK 17

          • IntellJ IDEA 2021.2

          1. 下載JDK,獲取源碼壓縮包

          如果你本地已經(jīng)安裝了JDK,并且你就是想搭建已安裝JDK版本的源碼閱讀環(huán)境,這里就不用下載了,我今天選擇重新下載 oracleJDK17,這是目前最新的長期支持版本,可以用來學習最新的特性嘛。

          Mac上查找你本地安裝JDK的路徑可以使用命令:/usr/libexec/java_home -V

          下載地址:https://www.oracle.com/java/technologies/downloads/#jdk17-windows


          我們選擇 .zip 結(jié)尾的免安裝版本,下載后直接解壓,然后找到解壓縮后 lib 目錄中的 src.zip ,這個就是我們需要的源碼壓縮包。你如果已經(jīng)安裝了 JDK,就直接去 JDK 的安裝目錄下 lib 目錄中找到 src.zip ,都是一樣的操作。

          記著這個位置,后面我們會用到哈??

          最新面試題整理好了,點Java面試庫小程序在線刷題。

          2. 創(chuàng)建IDEA項目

          在 IDEA 中創(chuàng)建一個簡單的 Java 項目,頂部欄 File -> New -> Project…


          創(chuàng)建一個Java空項目,直接 next:

          名字看你喜歡取就行:

          3. 解壓源碼包到IDEA項目中

          找到第一步中的 src.zip 源碼包,解壓到你的項目目錄中。我的是在項目的根目錄中新建了 jdk17 文件夾,準備將源碼解壓到這里。

          解壓完成后的結(jié)構(gòu)如下:

          到這其實我們就可以查看 *.java 后綴的源代碼了:

          但是這樣肯定是不夠的,我們看源碼最重要的還是要靠 debug 調(diào)試,現(xiàn)在這樣 debug 還是會進入到 jdk 自帶的壓縮后的源碼,這個源碼是來自于 src.zip,編輯器中顯示是帶鎖的,無法編輯。

          那肯定不行了,別急接下往下看。

          最新面試題整理好了,點Java面試庫小程序在線刷題。

          4. 配置調(diào)試時進入可編輯的源碼

          通過這一步的配置我們就可以一邊調(diào)試一邊寫注釋了,每次 debug 進入的都是不斷完善寫過注釋的源碼,這種 feel 倍兒爽??

          需要如下幾步,我們繼續(xù)搞起~

          IDEA配置調(diào)試時允許單步進入

          JDK 源碼是受保護的,無法直接通過 F7 (step into),可以通過 alt+shift+F7 (force step into),需要我們在 IDEA 中取消以下限制,就可以直接通過 F7 進入源碼了。

          設置當前項目關聯(lián)解壓后的源碼

          既然默認項目調(diào)試進入的源碼是 JDK 目錄下 src.zip 包中的源代碼,那么這里我就需要修改下項目關聯(lián)的 JDK。

          點擊關注公眾號,Java干貨及時送達

          Project Structure -> SDKs 下 新建SDK:

          還是先選擇我們下載的 JDK17 的 Home 目錄:

          名字設置為 jdk17-source(根據(jù)你的喜好命名即可)。然后選擇 jdk17-sourceSourcepath 選項,將源碼關聯(lián)目錄刪掉。

          command+a 全選后刪除:

          然后點擊 + 新增,選擇我們當前項目中解壓后的源碼目錄:

          導入成功后,點擊ok即可:

          然后設置當前項目的 JDK 為我們新增的 jdk17-source

          至此,大功告成!你是否已經(jīng)迫不及待的想要調(diào)試看看啦,我們搞起!

          5. debug 調(diào)試

          此時,我們只需要在 src 目錄下寫我們的測試代碼就好了,打上斷點,可勁的鉆研吧,少年!

          單步調(diào)試就會進入到我們解壓縮后的源碼文件,可以自由的寫寫畫畫:

          6. 可能遇到的問題

          我按照上面這個步驟搞下來是沒有遇到啥問題的,這里記錄下可能遇到的問題,一次性搞定肯定是最好的,有報錯的可以看看。

          編譯 OOM

          增加IDEA編譯所需堆內(nèi)存,默認700,這里改為1024。

          7. 上傳到 github

          這一步是為了可以讓你在家里和公司的電腦上都可以獲取到你注釋過的源代碼,同時在工作中遇到的問題,排查后有新的理解也可以及時同步到遠程倉庫,方便多端同步維護嘛~

          首先在 github 新建一個和本地項目名一致的倉庫,然后給本地項目git初始化后關聯(lián)遠程倉庫即可。

          進入到本地源碼項目根目錄中依次執(zhí)行如下命令:

          git?init
          #?git?remote?add?遠程倉庫名,名稱唯一即可?遠程倉庫地址?
          git?remote?add?origin?https://gitee.com/isevenluo/oracle-jdk17-source-learn.git?
          #?查看關聯(lián)的所有的遠程倉庫名稱及地址?
          git?remote?-v?
          #?查看所有的遠程倉庫名稱?
          git?remote?
          #?提交本地倉庫分支(master)?給遠程倉庫(origin)分支(master)?此處是強制提交
          git?push?origin?master?-f?
          #?查看當前未提交的內(nèi)容,此時應該為空
          git?status?

          寫在最后

          今天給大家分享了如何在本地搭建一套JDK源碼的閱讀環(huán)境,我建議學習Java的同學都配置下,JDK的源碼還是要讀一讀的,對你將會大有益處。加油吧,少年 ??





          關注Java技術棧看更多干貨



          獲取 Spring Boot 實戰(zhàn)筆記!
          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产日黄色 | 在线a网站 | 操逼勉费看 | 久久久9久91精品夫妻电影 | 免费av国产 |