當前位置:
首頁 > 最新 > 前IT業餘買手談JDK的選擇和採購

前IT業餘買手談JDK的選擇和採購

前言:姜江是一名開源愛好者,有很深的技術功力,也是我的一位好友。本文為姜江原創。本文中,大衛進行了排版、錯別字修正、並增加了圖片。本文已獲得作者授權發表。

本文僅代表原作者的個人觀點,僅供參考。

正文

前日和幾個圈內朋友討論分別討論了JDK選擇的事情,感覺還是挺有指導意義的,就此做了記錄。

1 JDK 和JRE是什麼?

Java Runtime Environment (JRE)

JRE 是java程序得運行環境, 提供 java程序運行所需的庫,虛擬機和其他各種部件。 JRE簡單說是一個運行環境、並不包含用於開發java程序的編譯器和調試器。

Java Development Kit (JDK)

JDK 是 Java程序的開發環境, 除了JRE提供的所有內容外,還包括編譯器、調試器等

區別請參考:

2 Open JDK、Oracle JDK、IBM JDK

OracleJDK 就是正統的Sun JDK的延續,大多數java程序都用oracleJDK.

Open JDK是2006年由SUN開源的,但是很多組件當時沒有開源,因此Open JDK並不100%兼容SUN JDK, 當時SUN還有計劃繼續開源剩下的組件, 但隨著SUN被Oracle收購,Oracle開始全球java版權大維權。自此Open JDK的就更加得到重視,包括IBM,Apple和SAP。 目前OpenJDK的主要維護者是Redhat。

IBM發展了自己的JDK,用於其特殊的硬體和操作系統中,比如 java for AS400 等。所有在IBM機器上必須跑IBM JDK。

另外還有Azul 的zing 和 zulu ,zulu是 azul和微軟維護的openjdk版本, 在微軟的Azure雲中提供應用。 Zing是Azul維護的特殊優化的JDK,採用自有的編譯器和GC演算法。

3 我應該選擇哪個JDK?

請先考慮以下幾個問題:

(1)你需要是否需要保留JAVA5,JAVA6 時代的應用?

(2)你需要在IBM的小型機上跑JAVA應用嗎?

(3)你需要在windows上跑JAVA應用嗎?

(4)你所在的企業是否剛剛開始IT建設?從零開始?

(5)你是否有大規模的cassandra 或者kafka?

(6)你是否在金融行業?

(7)是否有OS和JDK不匹配的情況?如OS用CentOS系統,運行OracleJDK?

接下來,針對以上的七個問題,我們給出建議:

(1) 你需要是否需要保留JAVA5,JAVA6 時代的應用?

因為大部分的JAVA遺留應用都是sun 時代的產物, 所以在這種情況下,只能選擇oracle JDK。

(2) 你需要在IBM的小型機上跑JAVA應用嗎?

IBM AIX 或者Linux on power上的首選是 IBM JDK;

運行WAS等IBM的中間件,那也只能選擇IBM JDK;

AS400 環境, 那就只能選擇 JAVA for 400;

(3) 你需要在windows上跑JAVA應用嗎?

Windows上首選的也是 Oracle JDK,如果你是自己開發的應用,自己組織能100%的控制自己的應用,可以考慮Open JDK。

(4)你所在的企業是否剛剛開始IT建設?從零開始?

如果是初創企業, 互聯網企業等,我相信強大一點的互聯網企業肯定都是自己構建JDK了。

一般的互聯網企業,推薦使用Open JDK 。從一開始就選擇OpenJDK 能避免很多麻煩,特別是發展壯大後必然面臨Oracle的許可問題 。 當然還是要確保開發引用的框架、jar包不依賴於Oracle JDK 開發的,即使有依賴情況,也可以找到替換的方案,因此不必擔心。Open JDK 能幫你省掉很多錢。

(5)你是否有大規模的Cassandra 或者Kafka?

如果有可以考慮 Azul 的 Zing,不過是需要100%花錢買的。如果不想花錢還是推薦Open JDK。

(6)你是否在金融行業?

如果你在金融行業, 還是老實使用Oracle JDK吧。

原因有三:

穩定性:金融行業穩定是第一考慮, Oracle JDK對bug的修復還是很快的,自身也相當穩定。

兼容性:OracleJDK 在兼容性上也是最好的,特別對於歷史遺留應用。另外金融行業外包,外採購嚴重,很難100%控制外包商或產品供應商。因此最大兼容性是第一考慮。金融使用的中間件多數為weblogic,在和中間件的配合度上oracle JDK可以說是唯一選擇(用openjdk跑weblogic,oracle是不提供支持服務的)。

成本:金融行業這點小錢還是花的起的

當然金融行業也有選擇OpenJDK的, 比如你是紅帽的客戶,或者跑JBOSS ,Drools,BPM 等,首選Open JDK。

(7)我們用CentOS系統,運行著Oracle JDK。

大多數中小互聯網公司都是CentOS, 一般都會選擇Open JDK。 但是, 確實也有各種原因選擇Oracle JDK的。

那麼這種情況下,如果安全防護做的好,又沒有遇到什麼Bug的化就保持現狀吧。

但是,如果有安全要求,並且確實遇到了問題的話,有以下三種方案選擇:

方案1:買Oracle JDK補丁支持

方案2:買紅帽企業級Linux訂閱(RHEL) ,改CentOS為RHEL

方案3:全部遷移到OpenJDK

第一方案:花錢多,但是省事。

第二方案:花錢少,但是要改操作系統。

第三方案:不花錢,但是最費工。

4 JDK也要花錢買嗎?

理論上說JDK可以免費使用。 比如你可以輕易的從Oracle網站上下載JAVA 8 或 9。

但是請考慮一下JAVA 6, 7 甚至5呢? 雖然還是能從oracle網站上下載,但是這些版本由於過了維護期因此不再被維護。

問題來了, 你家的應用難道都能跟著oracle一起升級嗎?

另外,想一想外包開發的,買來的應用,你的供應商都能給你升級嗎?100%的回答是:不!

因此你就不得不維持你的JDK大版本, 比如JAVA 6 的就一直再JAVA6上跑。但是隨著時間的推移,可能會有新的bug和安全漏洞出現,那麼這些跑再老JAVA可怎麼辦。

這時要花錢買的東西出現了, JDK 延續支持補丁。

比如 Oracle JDK 7 現在的版本是多少? 你見過網上提供 7u151的下載嗎?

JavaSE 7_x86:update151patch(equivalenttoJDK7u151)那在網上能找到的版本呢?

JavaSE Development Kit 7u80沒錯, 要花錢買的正是補丁!

5重點:如何省錢的獲得Oracle JDK補丁?

那麼有沒有一家公司,同時提供Oracle JDK補丁 和Open JDK的補丁呢?

我偷偷的告訴你:有一家可以給你同時提供 OracleJDK 和 OpenJDK.

那就是 Redhat購買紅帽的linux訂閱:

用如下命令檢查訂閱RHEL, 你看到了什麼? ---- Oracle JAVA。

#subscription-manager list --available --all

Subscription Name:

Red Hat Enterprise Linux Server, Premium (1-2sockets) (Up to1guest) (L3-only) Provides:

Red Hat Beta Oracle Java (for RHEL Server)

Red Hat Enterprise Linux Server

Red Hat Software CollectionsBeta(for RHEL Server)

只要你是紅帽linux的訂閱用戶, 你就能在你的yum庫中發現這個倉庫:

subscription-manager repos --list grep oracle

在不同版本對應的名稱如下:

rhel-5-server-thirdparty-oracle-java-rpms

rhel-6-server-thirdparty-oracle-java-rpms

rhel-7-server-thirdparty-oracle-java-rpms

從這個repo可以下載最新的oracle JDK 補丁!

激活repo rhel6

subscription-manager repos--list grep oracle

subscription-manager repos--enable=rhel-6-server-thirdparty-oracle-java-rpms

yum install java-1.7.0-oracle -y

# 安裝Oracle JDK

yum update java-1.8.0-oracle-y

# 升級打補丁激活 rhel7

subscription-manager repos--enable=rhel-6-server-thirdparty-oracle-java-rpms-rhel5

# 傳統方式

rhn-channel --add --channel rhel-x86_64-server-5-thirdparty-oracle-java

# 一般用這個:

subscription-manager repos --enable rhel-5-server-thirdparty-oracle-java-rpms5

5.附錄:算算賬(價格都是列表價,僅供參考)

幾家公司:

Oracle (Oracle JDK)

Redhat (Open JDK 和Oracle JDK)

Azul (Open JDK和 Zing )

IBM (IBM JDK)

這裡就不討論IBM了, 本身買了ibm機器又有維保的都能下載。

6.成本對比:

供應商預估報價說明

Oracle:十幾萬/台 按機器core數報價不同,每年服務費成交價的N%,如果是weblogic用戶JDK補丁就免費送了。

Redhat: 萬元左右/台/年 紅帽Linux訂閱按年付費 , 按照機器數買,其實是Linux的補丁附贈JDK補丁。

【大衛註:具體價格取決於訂閱是白金還是普通版。原作者此處列的是白金版。具體價格請聯繫紅帽銷售諮詢】

Azul: 20萬/150台/年 網站報價,不太准,也是訂閱,按年付費

以上內容,僅供參考。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大衛分享 的精彩文章:

TAG:大衛分享 |