openjdk編譯windows
❶ 自己編譯openJDK時,說用到FreeType,FreeType如何安裝怎麼使用
《深入理解java虛擬機》這本書吧,我也在看
安裝過程:
下載http://gnuwin32.sourceforge.net/packages/freetype.htm
解壓,找到freetype-2.3.5-1-depinzlib1.dll
雙擊zlib1.dll , eetype-2.3.5-1-dep 兄弟目錄生成freetype-2.3.5-1-setup
雙擊freetype-2.3.5-1-setup 安裝
❷ 關於java的openjdk的問題,拙計啊
openJDK項目在java.net里邊 地址是 http://openjdk.java.net
jdk7的源碼 地址 http://jdk7.java.net/source.html
windows和linux用的源碼不同下載源碼後放在里邊不同的文件夾。
java代碼是公用的在share目錄下。
jdk6的源碼已經關閉了,下載不了了。
❸ openJDK 編譯的jar包和oracleJDK編譯的能通用嗎
在此,Oracle與OpenJDK之間的區別
他是從組織、開源、市場等角度比較的,我這里主要從開源、前景、相關源碼底層…等等角度分析,有興趣的朋友可以一起來建議,學習
一、前景
這里我只能拋出幾個疑問點,歡迎大家一起來解決,拋出疑問
1、為什麼 Docker 容器的Java環境,幾乎都是 openJdk ?
2、其實ORACLE jdk是開放了大部分源碼的,openJDK是開放所有源碼的,迄今我所想看到的實現,在Oracle JDK中都是開放源碼的,Oracle JDK沒有開放的部分在哪裡?
答:已解決,Oracle JDK 沒有開放的源碼,在openJDK中的實現,這里先說明一下,OracleJDK只開放了不到7%,後面我會摘錄部分,只是部分哈,有興趣可以安裝一個OpenJDK比較一下區別
3、為什麼 OpenJDK開源了 OracleJDK不想開源的東西,
二、開源
open-source,開源,這是一種共享,集智的概念
openJDK 是對外開放源碼的,Oracle JDK則沒有(部分開源)
三、相關底層架構,實現比較
這里就windows版本分析
3.1-1、Oracle JDK架構1
安裝包就一個,如圖,官網地址
在這里插入圖片描述
3.1-2、Open JDK架構1
鏈接地址,在此
如下圖
在這里插入圖片描述
這里比較出 openJDK的JRE和JDK是分開放的
3.2 Oracle JDK 與 Open JDK 目錄結構比較
在這里插入圖片描述
這里看得出 Oracle JDK 是基於 SDK(Jar)進行版本的維護的,部分提供了源碼集
OpenJDK 是基於 package 進行版本維護,提供了所有的源碼集,目錄更清晰,部分實現還變更於與Oracle JDK 不同的包下,後面我摘出部分事例參考
還要注意 IntelliJ IDEA 中也集成了部分的 SDK,注意開發時確保正確的開發環境
3.3 JVM
openJDK已經不顯示 JVM了
在這里插入圖片描述
3.4 不同的命令行操作
在這里插入圖片描述
四、常用對象的不同的實現(OracleJDK源碼在OpenJDK中的不同實現)
摘錄部分,常用對象,這里總結會有點亂(我還沒仔細地觀察真正的源碼區別)
4.1、Object
在這里插入圖片描述
4.2、ArrayLi
❹ 我為什麼要自己編譯openjdk8以及那些坑
比如說,泰山OFFICE使用JAVA開發,自然要使用JDK。而JDK本身也有BUG,解決又不及時,只能自己動手解決了。相當於定製。
如果要編譯JDK,建議參考本人博客,應該是全網最詳細的,很多問題是全網首發(就是吾第一個發表博文公開解決辦法的)。
❺ 如果在 Linux快速搭建 java openjdk 編譯環境
Linux直接打個命令就裝好了呀 很簡單的
比如ubuntu,打sudo install openjdk-7-jdk
或者你在軟體中心,點下安裝按鈕也行
Linux下面裝軟體最方便了
❻ 如何用Mac完美編譯OpenJDK 7
1.選擇OSX版本很重要。目前這里Mac版本是10.10,配置好必要信息以後就開始編,結果錯誤滿屏。簡單看過之後發現是編譯C文件的時候參數有誤,於是查了一下,才知道是LLVM版本太新,不兼容低版本的一些編譯參數。照著上面改了點代碼,但是依舊編譯不過。既然高版本不行,就裝個低版本的唄。由於最新的OSX不能裝低版本的Xcode(裝了Xcode才能裝LLVM),所以去下了一個10.8的OSX裝在虛擬機里,然後再裝個Xcode4.4。裝好Xcode以後,要手動下載LLVM安裝。打開Xcode,隨便建立一個空項目,然後打開Preferences,找到如下所示的地方開始安裝第一步咱就這么搞定了。2.安裝X11X11這玩意是unix類os使用的圖形系統,10.8以前的OSX是自帶的,但是從此以後就不自帶了。對應於Mac,你需要裝XQuartz,這個沒有版本限制,去網上下最新版即可。裝這個的原因是當時在編譯PolicyTools的時候出現了如下錯誤:ld:librarynotfoundfor-lX11安裝以後要為X11建立軟連接sudoln-s/usr/X11/include/X11/usr/include/X113.安裝freetype在linux下編譯openjdk的朋友可能遇到過需要安裝freetype的要求,然後安裝下並將安裝目錄加到環境變數里就好了。但是OSX不一樣,freetype單獨安裝實際是沒用的。雖然單獨安裝能讓編譯前的檢查通過,但是到後面還是會出錯,至於原因我沒找到。那怎麼呢?實際上如果安裝好X11,freetype就一起安裝好了,大家可以去X11的目錄里看看是否有freetype。雖然說安裝了X11就自帶freetype,但是編譯過程中可能會出現如下錯誤:error:freetype/config/ftheader.h:Nosuchfileordirectory實際上就是目錄問題,執行下面這句命令就好了:sudoln-s/sr/X11/include/freetype2/freetype//usr/X11/include/freetype4.配置環境變數和在Linux下編譯相比,OSX的環境變數配置相對來說簡單很多。只需要配置編譯需要的jdk和llvm的目錄就可以了。因為很多源代碼都是用本機現有的jdk來編譯,所以預裝一個低版本的jdk是必須的,這里我們需要安裝jdk6。安裝好以後,找到其安裝目錄,並添加如下環境變數:[plain]viewplainexportALT_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類文件所必須的,所以要把它的所在目錄添加到環境變數里。通常OSX下安裝app都會把app移到Applications目錄下,所以我最初安裝Xcode的時候也把他移進去了,如果你把Xcode放在了別的目錄,那就找到對應的目錄即可。[plain]viewplainexportALT_COMPILER_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin5.獲取編譯源碼按照這上面的第三點獲取源代碼如果沒有裝hg的需要自行安裝到現在為止,編譯前的准備工作已經完成。我們可以先執行makesanity執行下編譯前的檢查。如果檢查通過,先來看看具體的編譯命令:[plain]viewplainmakeALLOW_DOWNLOADS=trueSA_APPLE_BOOT_JAVA=trueSKIP_DEBUG_BUILD=falseSKIP_FASTDEBUG_BUILD=falseALWAYS_PASS_TEST_GAMMA=trueHOTSPOT_BUILD_JOBS=`sysctl-nhw.ncpu`這里有兩個問題:a.ALLOW_DOWNLOADS=true表示編譯過程中允許下載。因為有些編譯模塊,比如jaxp,編譯腳本中指定了需要下載特定的包。雖然我沒試過設置成false會不會影響編譯,但是還是推薦設置成true。但是這就帶來另一個問題,下載這類包很費時間,有時候就會在那卡很長時間,所以我根據編譯日誌找到編譯腳本中控制下載的具體命令,修改修改並且把用迅雷下的對應包放到正確目錄中,然後重新編譯一遍,就能順利通過了。這一點後面我會詳說。b.SKIP_DEBUG_BUILD=falseSKIP_FASTDEBUG_BUILD=false這兩個表示編譯出來的jdk或者hotspot是否可以debug。FASTDEBUG表示的應該是提供簡單的debug功能,如果想要完整的debug,則SKIP_DEBUG_BUILD必須設置為false。不過這里提醒一點,如果想在debugjdk的時候能看到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
❼ openjdk編譯錯誤
JDK安裝程序會把java.exe,javaw.exe,javareg.exe這3個可執行文件拷貝到winnt\system32目錄下,由於winnt\system32被操作系統預設的設置為最高優先權的PATH搜索路徑,以此保證用戶在命令行任何目錄下可運行java.exe來啟動JVM,可能是你的編程軟體和瀏覽器不兼容造成的。
❽ 如何在Windows上面基於Cygwin編譯CppInterpreter版本的Zero OpenJDK
解壓
./configure --with-components=core --with-cups-build=yes
make
make install
安裝後,還是找不到cups庫
於是我在Cygwin設置了LD_LIBRARY_PATH變數,
export LD_LIBRARY_PATH=/cygdrive/d/MyDocuments/VisualStudio/OpenJDK/win32/cups-1.7.5/cups:/cygdrive/d/OthrPromFiles/Cygwin/cygwin32/lib:/cygdrive/d/OthrPromFiles/Cygwin/cygwin32/var/lib
cups-1.7.5/cups目錄下有cups庫:
John@John-PC /cygdrive/d/MyDocuments/VisualStudio/OpenJDK/win32/cups-1.7.5/cups
$ ls
D: api-ppd.shtml custom.o file-private.h http.c libcups2.rc ppd-private.h snprintf.o testoptions.c
Dependencies array-private.h debug-private.h file.c http.h libcups_s.exp ppd.c sspi-private.h testppd.c
Makefile array.c debug.c file.h http.o localize.c ppd.h sspi.c testpwg.c
adminutil.c array.h debug.o file.o ipp-private.h localize.o ppd.o string-private.h testsnmp.c
adminutil.h array.o dest-job.c getdevices.c ipp-support.c mark.c pwg-media.c string.c thread-private.h
adminutil.o attr.c dest-job.o getdevices.o ipp-support.o mark.o pwg-media.o string.o thread.c
api-array.header attr.o dest-localization.c getifaddrs.c ipp.c md5-private.h pwg-private.h tempfile.c thread.o
api-array.shtml auth.c dest-localization.o getifaddrs.o ipp.h md5.c pwg.h tempfile.o transcode.c
api-cups.header auth.o dest-options.c getputfile.c ipp.o md5.o raster-private.h test.ppd transcode.h
api-cups.shtml backchannel.c dest-options.o getputfile.o langprintf.c md5passwd.c raster.h test2.ppd transcode.o
api-filedir.header backchannel.o dest.c globals.c langprintf.o md5passwd.o request.c testadmin.c usersys.c
api-filedir.shtml backend.c dest.o globals.o language-private.h notify.c request.o testarray.c usersys.o
api-filter.header backend.h dir.c http-addr.c language.c notify.o sidechannel.c testconflicts.c utf8demo.txt
api-filter.shtml backend.o dir.h http-addr.o language.h options.c sidechannel.h testcups.c util.c
api-httpipp.header conflicts.c dir.o http-addrlist.c language.o options.o sidechannel.o testfile.c util.o
api-httpipp.shtml conflicts.o emit.c http-addrlist.o libcups.a page.c snmp-private.h testhttp.c versioning.h
api-overview.header cups-private.h emit.o http-private.h libcups.so page.o snmp.c testi18n.c
api-overview.shtml cups.h encode.c http-support.c libcups.so.2 ppd-cache.c snmp.o testipp.c
api-ppd.header custom.c encode.o http-support.o libcups2.def ppd-cache.o snprintf.c testlang.c
John@John-PC /cygdrive/d/MyDocuments/VisualStudio/OpenJDK/win32/cups-1.7.5/cups
❾ 關於自己編譯JDK的問題
1 JDK是c/c++寫的, 編譯就是把JDK編譯成可以運行的狀態, 可運行的意思是指可以編譯運行.java文件. 而一般情況下官方下載的JDK都是已經幫你編譯好而已.
2 作者可以用自己編譯的, 也可以用官方編譯好的. 這個要看書中的說明了
3 JDK是c/c++寫的, 裡面和其他c++程序沒什麼區別, windows下面是一堆dll和一堆exe. 你說的.java文件是JDK的功能之一, 幫你編譯java文件成class, JVM是運行class文件的容器
善意提醒:如果你想學java, 而且沒學過c++, 相信你是買錯書了