2019年4月16日,Oracle發佈了新的JDK 8的更新,版本號爲8u211和8u212。與以往不一樣的是,新版本的許可協議從BCL換成了OTN,這就意味着,你不能在生產環境使用這個版本了。post
若是你想繼續使用8u211/8u212,或者以後發佈的新版本,就須要給Oracle交錢了。測試
固然,並非你用了新版本的JDK就要交錢,這個時候要區分私用和商用:網站
私用,是我總結的一個詞,它包括」Personal Use」和」Development Use」,前者表示一些我的用途,比方說在本身的電腦上寫一些小工具,作一些數據分析等等;後者表示開發用途,好比平常開發、作測試、作演示等等。商用不太好界定。個人理解就是拿來賺錢就是商用,比方說把網站部署到生產環境,在公司內部系統使用等。
我用的JDK使用什麼協議?
BCL協議,即Oracle Binary Code License Agreement,協議規定你可使用JDK,可是不能進行修改。私用和商用均可以,可是JDK中的某些商業特性,是須要付費纔可使用的。OTN協議,即Oracle Technology Network License Agreement,目前新發布的JDK用的都是這個協議,能夠私用,商用須要付費。從下圖能夠看出各個版本對應的協議:
我不想掏錢怎麼辦?
商用的話使用上面BCL協議的版本,私用怎麼着都行。不少時候,開發者會對什麼版本用了什麼協議比較迷惑,懶得搞清楚,那麼能夠直接使用OpenJDK。
OpenJDK是一個基於GPLv2+CE協議的開源JDK實現,他由OpenJDK社區來運做,做爲OpenJDK社區的主導者,Oracle也在儘可能減小OpenJDK和Oracle JDK的差異(source),將一些商業特性移植到了OpenJDK上,好比Java Flight Recorder,Java Mission Control和ZGC等等。對於普通開發者,二者差別可忽略不計。OpenJDK一樣會每6個月發佈一個新版本,不過每次新的版本發佈後,舊的就不維護了,好比OpenJDK 12發佈以後,11版本便中止更新,停留在11.0.2版本,沒有LTS一說了。
除了Oracle的OpenJDK,還有不少免費OpenJDK實現能夠用,好比 Zulu,AdoptOpenJDK,Amazon的Corretto和阿里巴巴的dragonwell等等。具體他們有什麼區別,咱們之後再說。
咱們大廠願意掏錢怎麼辦?
能夠經過訂閱Java SE Subscription來付費,桌面用途每人每個月2.5刀,服務器用途每一個處理器每個月25刀,量多還有優惠。Oracle之前還提供Java SE Advanced, Java SE Advanced Desktop和 Java SE Suite等一次性受權,不過如今都建議新老付費用戶換成訂閱制了。
Oracle爲何這麼作
固然是賺錢,OTN協議的Oracle JDK如今容許私用也只是想讓開發者養成習慣,未來開發者搞公司項目的時候,很是有可能會習慣性去Oracle官網下載JDK,這樣就導致使了商用項目未經許可違規使用。Oracle法務部的刀確定老早就磨好了。