<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    John Jiang

    a cup of Java, cheers!
    https://github.com/johnshajiang/blog

       :: 首頁 ::  :: 聯系 :: 聚合  :: 管理 ::
      131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
    Play OpenJDK: 構建你自己的JDK

    計劃使Play OpenJDK成為一組介紹如何使用并參與OpenJDK項目的系列文章。本文是該系列的第一篇文章,它基于OpenJDK 8的源代碼介紹了構建一個屬于自己的JDK方法。(2015.10.30最后更新)

    1. OpenJDK
    曾經的Sun Microsystems. Inc,也就是Java語言的發明者,將它的JDK代碼貢獻出來,成立了一個開源項目,即OpenJDK
        同時,它也是一個社區。相關的公司,組織和個人在這個社區中協作開發OpenJDK。社區根據不同的領域或項目提供了一系列的郵件列表,利益相關方或對其感興趣的個人都可以訂閱這些郵件列表去進行關注和討論。例如,Java核心API的郵件列表是core-libs-dev@openjdk.java.net,關于java.lang,java.util等核心API的新特性都會在這里進行討論,并對其最終的實現代碼進行審查。任何將要進入OpenJDK版本庫的源代碼,無論是產品代碼(即,要隨JDK發布的程序),還是測試代碼,都需要在社區中進行公開的代碼審查。
        選擇一個自己感興趣的領域或項目,加入它的郵件列表,長期跟蹤它的發展,看著專家們的討論、爭論推動JDK的演進,學習開發者們的API設計與代碼實現,...,這些對自己的成長都是極有幫助的。也許,還能看到一些有趣的八卦;-)

    2. 準備工作
    在幾種主流操作系統,Linux(如Ubuntu和Fedora),Windows(7和8),MacOS(Lion和Moutain Lion),中都可以構建OpenJDK,具體的細節可以參見官方的一篇文檔
        本文選擇使用Ubuntu 14.04。坦白地說,選擇使用Ubuntu,實是因為在Linux環境中構建OpenJDK非常簡單。若在Windows中進行構建,則需要安裝Visual Studio C++編譯器。MacOS?嗯,我沒有MBP。可能更多人平時是使用Windows,但安裝一個Linux也不麻煩。先安裝免費的VM工具VirtaulBox,再去下載Ubuntu的ISO文件,然后使用VirtualBox去安裝Ubuntu。VirtualBox簡單易用,網上的相關資料也非常的多。
        OpenJDK的源文件版本庫基于Mercurial(hg),它是一個與Git相似的分布式版本控制工具。在Ubuntu中安裝Mercurial只需要執行命令
    $ sudo apt-get install mercurial
        OpenJDK中各項目的源代碼版本庫的路徑均在http://hg.openjdk.java.net/之下,在這里可以找到6,7,8,9和Jigsaw的源代碼。其中JDK 8的最新開發版本庫路徑為http://hg.openjdk.java.net/jdk8u/jdk8u-dev/。
        另外,構建OpenJDK時需要一個啟動JDK,本文選擇構建OpenJDK 8,那么啟動JDK的版本應不低于7。

    3. 下載源代碼
    克隆版本庫,
    $ hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev/ jdk8-src
    requesting all changes
    adding changesets
    adding manifests
    adding file changes
    added 
    1570 changesets with 1958 changes to 141 files
    updating to branch default
    85 files updated, 0 files merged, 0 files removed, 0 files unresolved
    進入源代碼目錄
    $ cd jdk8-src/
    OpenJDK的源代碼版本庫實際上包含多個獨立的子版本庫,需要執行如下腳本去分別下載各個子版本庫的源代碼,
    $ sh get_source.sh
    # Repositories:  corba jaxp jaxws langtools jdk hotspot nashorn
                    corba:   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev/corba corba
                     jaxp
    :   hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jaxp jaxp
                    corba
    :   requesting all changes
                     jaxp
    :   requesting all changes

    4. 構建
    調用configure進行預構建,其中的參數--with-boot-jdk用于指定啟動JDK的路徑。如果啟動JDK的java命令已存在于PATH環境變量中,該參數可以忽略。
    $ sh configure --with-boot-jdk=/path/to/boot/jdk
    該過程會檢測構建環境是否符合要求,如有問題,它會給出提示。比如,
    configure: error: Could not find X11 libraries. You might be able to fix this by running 'sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev'.
    此時根據提示安裝所需要的庫即可。再重新執行上述configure命令,可能還會提示缺少其它的庫,那么再次根據提示進行安裝。如此反復,只到預構建成功完成。
    最后就是進行構建,直接執行如下命令,
    $ make all
    在此過程中可以會遇到一些警告,不必理會,耐心等待...完成后,會出現如下的匯總信息,
    ----- Build times -------
    Start 2015-10-30 22:11:10
    End   2015-10-30 22:52:54
    00:01:01 corba
    00:01:08 demos
    00:06:49 docs
    00:19:37 hotspot
    00:01:47 images
    00:00:35 jaxp
    00:00:49 jaxws
    00:08:23 jdk
    00:01:09 langtools
    00:00:25 nashorn
    00:41:44 TOTAL
    -------------------------
    Finished building OpenJDK for target 'all'
    在當前路徑下會生成一個build目錄,構建好的JDK就在那里面。新JDK的具體路徑類似于build/linux-x86_64-normal-server-release/images/jdk。可以執行如下命令去測試這個JDK,
    $ build/linux-x86_64-normal-server-release/images/jdk/bin/java -version
    openjdk version "1.8.0-internal"
    OpenJDK Runtime Environment (build 1.8.0-internal-ubuntu_2015_10_30_22_07-b00)
    OpenJDK 64-Bit Server VM (build 25.66-b00, mixed mode)
    posted on 2015-10-30 23:17 John Jiang 閱讀(3514) 評論(0)  編輯  收藏 所屬分類: JavaSEJava原創OpenJDK
    主站蜘蛛池模板: 麻花传媒剧在线mv免费观看 | 中文国产成人精品久久亚洲精品AⅤ无码精品 | 狠狠色伊人亚洲综合网站色| 久久久久一级精品亚洲国产成人综合AV区| 亚洲精品免费在线视频| eeuss影院www天堂免费| 亚洲AV无码国产精品永久一区| 337p欧洲亚洲大胆艺术| 亚洲日韩精品射精日| yy6080亚洲一级理论| 女人让男人免费桶爽30分钟| 外国成人网在线观看免费视频| 一级人做人爰a全过程免费视频| 亚洲熟伦熟女专区hd高清| 亚洲码在线中文在线观看| 亚洲精品成人无码中文毛片不卡| 免费看小12萝裸体视频国产| 好先生在线观看免费播放| 免费人成视频在线观看网站| 国产真人无码作爱免费视频| 九一在线完整视频免费观看| 久久亚洲AV成人无码国产电影| 亚洲五月丁香综合视频| 亚洲美女人黄网成人女| 亚洲视频在线免费观看| 亚洲成AV人片在线观看无码| 伊人亚洲综合青草青草久热| 亚洲AV无码乱码在线观看牲色| 国产美女被遭强高潮免费网站| 成年人在线免费观看| 成人免费毛片视频| 毛片a级毛片免费播放100| 国语成本人片免费av无码| 免费三级毛片电影片| 国产h视频在线观看免费| 黄页网站在线观看免费高清| 免费毛片a在线观看67194 | 亚洲成A∨人片在线观看无码| 亚洲美免无码中文字幕在线| 伊人久久综在合线亚洲2019| 亚洲资源在线观看|