今年年初的時候,所謂「Oracle要對Java收費」的新聞,在網上傳得沸沸揚揚。這個新聞被專業人士視爲標題黨,而國內衆多技術論壇,好比知乎社區上,有不少大神對「Java收費」這個說法作出了很是專業的解讀,Jerry這裏就不班門弄斧了,Bing搜索引擎根據「Oracle Java收費」的關鍵字搜索,第一條搜索結果就值得閱讀。html
Jerry本文想掃盲的重點,是介紹JDK,Oracle JDK, Open JDK和SAP JDK這幾個名詞的關係。java
Java編程語言的軟件開發工具包,是Java開發的核心,包含了Java運行環境即JVM(Java Virtual Machine)和Java系統類庫,以及大量工具。git
Jerry之前在SAP德國總部和CRM開發團隊一位擁有20年ABAP編程經驗的德國老同事閒聊,談到近些年來愈來愈多的SAP產品技術棧換成了Java,這位同事從沒接觸過Java,好奇地問我啥是JDK.github
我當時給他的解釋是(爲了節省篇幅,Jerry這裏就不放英文了),「想一想你在SAPGUI裏編寫的ABAP代碼,激活後運行在C/C++實現的ABAP運行時(runtime)也就是ABAP虛擬機裏。」編程
「另外,Netweaver ABAP平臺提供了不少基礎設施層面的功能,好比用於HTTP通訊的CL_HTTP_CLIENT和CL_HTTP_SERVER, ABAP裏有不少這種類庫,都存儲在BASIS這個包和它的子包下面。因此ABAP Development Kit就是ABAP運行時和ABAP類庫的組合,而JDK就是Java運行時和Java類庫的組合,就這麼簡單。」性能優化
看到德國同事露出了理解後的笑容,Jerry心想,有一點我沒告訴你,和ABAP這種Server Side的開發模式相比,用Java開發企業級應用免不了在本地搭各類開發環境,所以Java開發人員要有在本地搭環境時可能會遇到各類各樣問題的心理準備。當初Jerry的朋友吳脊老師2015年加入SAP成都研究院時,Jerry做爲他的導師,一塊兒在本地搭一個Java開發環境,最後花了一週的時間才搭好。在那一週的時間裏,下面這句話,Jerry說了起碼不下十次:服務器
建立了Java編程語言的Sun公司,於2009年以74億美圓的白菜價被Oracle收購以後,愈來愈多的Java初學者將Oracle JDK等同爲JDK. 這並不奇怪,畢竟Google JDK關鍵字,位於搜索結果前列的全是www.oracle.com開頭的頁面:併發
因爲Oracle和SAP的關係(SAP從業者都懂的),在Oracle旗下的Java傳出「要收費」的消息後, 一部分使用Java進行二次開發的SAP從業者們內心難免感到緊張,其實大可沒必要。oracle
Jerry本科的時候,一心想幹掉Java的微軟曾經搞出一個叫作J++的編程語言,以及對應的Visual J++這個IDE. 不過當時Jerry就讀的電子科大計算機學院的編程課全用的C/C++,我周圍認識的同窗們也沒人搗鼓這個語言。這個J++雖然有着和Java相同的語法和關鍵字,可是隻能運行在微軟的操做系統上,後來聽說山寨了Java的微軟被Sun告了,賠了20億美圓,而後就沒有而後了。編程語言
有意思的是,剛剛過去的十月末,微軟發佈了一封公開信:
原文以下:
這封信是發給Open JDK社區的,微軟首先宣佈本身正式加入Open JDK社區,動機之一是由於微軟有愈來愈多的產品和服務須要依賴於Java, 好比Azure上的Java Runtime. 正如Jerry最近工做的一個項目用到的SAP Commerce Cloud on Azure,就是這種依賴的受益者。
接着微軟在公開信中,低調地認可Oracle是Open JDK項目的大佬,本身的團隊加入Open JDK社區後,會從小bug修復和功能backport入手,努力成爲一名社區好公民。果真英雄所見略同,之前Jerry的開發團隊每當加入一個新產品的開發你們庭之初,也是經過修bug和作downport來掌握開發知識和熟悉流程的。
信中最後一句話:We look forward to participating in the future of Java —— Java的將來,微軟也指望參與其中。
因此,這個Open JDK究竟是什麼鬼?
Open JDK是Sun在2006年底把Java開源而造成的項目,而Oracle JDK是基於Open JDK的商業實現。Open JDK和Oracle JDK的關係,比如Open UI5和SAP UI5, Kyma和SAP Cloud Platform Extension Factory同樣。
java -version的輸出若是看到出現了HotSpot,說明是Oracle JDK:
而Jerry的阿里雲上,輸出則是Open JDK:
說了這麼多,和SAP有啥關係?
你們能夠訪問這個公網連接.
SAPMachine,是一個SAP基於Open JDK打造的JDK,在前者的基礎上,SAP針對企業級應用須要的可支持性(supportability)和可靠性(reliability)等方面作了加強。
SAPMachine既能夠在上述github連接裏下載,也能夠在SAP官網下載:
像SAP這樣基於Open JDK之上爲本身的企業量身定作一個JDK出來的作法在業界很是廣泛。
好比亞馬遜的Corretto,源代碼地址:
還有國內阿里巴巴的AJDK: Dragonwell
能夠說阿里的解決方案之因此能經受諸如雙十一這樣對高併發高可用性要求極高的嚴酷場景下的考驗,阿里本身的JDK功不可沒。
下面一段話來自阿里雲棲社區一篇帖子:
支撐雙11每秒17.5萬單事務 阿里巴巴對JVM都作了什麼?
最先從2010年,阿里巴巴就開始了基於OpenJDK6的JVM定製優化工做,這也是國內第一個優化、定製且開源的服務器版Java虛擬機。2015年開始,阿里巴巴JVM團隊開始着手在OpenJDK8進行優化和定製工做,力求在穩定性,性能優化,以及技術前瞻性方面,知足阿里巴巴,螞蟻金服,以及菜鳥快速發展的業務需求。定製的版本被命名爲AJDK(Alibaba JDK),目前淘寶、天貓,螞蟻,菜鳥,幾乎全部的核心應用都從Oracle JDK切換到了AJDK上,並通過了雙11的考驗。
但願經過本文的介紹,你們可以對幾種不一樣的JDK有一個最基本的瞭解。對於本文題目引號中的僞命題,相信你們心中已經有答案了。
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":