良葛格寫的文章
Java依舊免費?
https://www.ithome.com.tw/voice/126265
Oracle JDK只能用於一般用途,不過,OpenJDK仍能允許商業使用。但是,雖然有免費、可商用的JDK建構版本,並不代表JDK的選擇與維護是零成本
過去,被認為是免費的Java而言,在傳出有企業遭到追討授權費的新聞後,Java不再免費的話題,就傳遍了大街小巷。
現在,Java 11都釋出了,若還只是在討論免不免費這件事,只是把問題看得太簡單了!
Java釋出版本與頻率
Java在釋出的版本與頻率上,過去以來,曾有幾次重大變更。
若干歷史在先前專欄〈想跳舞的Java〉曾經提過,就結論而言,JDK8及更早版本,安全性修補的釋出會是基於5的倍數,遇偶數加一,例如8u5、8u11、8u25等,8u31,特性(feature)釋出版本會是20的倍數,像是8u20、8u40、8u60等,會包含先前的安全性修補,以及不影響規格書的特性,像是JVM的效能增強或工具更新等,自Java
9開始,安全性修補版本改為每三個月釋出一次,而特性版本改為每六個月釋出一次,在這樣的頻率下,9.0.1、10.0.1中,1代表著安全修補,而9、10這開頭的數字,代著特性版本,更新內容可以是包含JVM、語言、程式庫等各種更新,而不是像Java 7到Java 8這樣,數字代表著重大釋出(major release)。
Java 9、10都是短期支援版本,在下個小版本釋出之後,上個版本就不再維護,使用者要趕快更換至新版本。
不過,就企業而言,安全性的修補通常是重大考量,因而更需要留意的是長期支援版本(Long-Term-Support, LTS),例如,Java 8就是個長期支援版本,Oracle預計支援至2020年,〈Oracle Java SE Support Roadmap〉(https://goo.gl/7Civd5)指出,自Java 8之後,預計每三年釋出一個LTS,最新出爐的Java 11,就是長期支援版本。
Stephen Colebourne在〈Java release chains〉(https://goo.gl/2Tex7a)建議,可以將LTS視為如同過去版本的重大釋出,因而就企業而言,Java 8是個可考慮的版本(他建議至少是8u40之後的版本),接下來則是 Java 11,若是Oracle JDK11,目前預計支援至2026年。
Java不再免費?
前陣子有段時間,傳言有企業接到Oracle通知,將Java運用在商業或特定用途,必須繳交授權費,因而傳出許多Java不再免費的消息,甚至與Oracle控告Google的官司新聞混淆在一起。
而Oracle與Google之所以打官司,問題就在於,Oracle聲稱Google的Android系統抄用了Java的API,而這與Java運用在商業或特定用途必須繳交授權費,其實是不相干的兩回事。
「Java不再免費」是個籠統的說法,被稱為不再免費的對象,指的其實是JDK/JRE。
過去從Sun下載JDK使用,沒聽過被要求授權費的事情。因為,從Sun/Oracle下載的JDK(不包含JDK11),必須遵守BCL(Binary Code License )規範,而當時Sun BCL也提到,從Sun下載的JDK在用於桌面個人電腦時,是免費的(no-fee);到了後來,在Oracle BCL中則提出不同規範,要求從Oracle下載的JDK,只能用於一般用途(general purpose, general use, general computing)。
然而,到底什麼是一般用途呢?就目前我所搜集到的資訊來說,看不到有任何來源給出了清楚的界線!不過,後來在〈Oracle Java SE 8 Release Updates〉(https://goo.gl/CNqJp2)中指出,Oracle JDK8的公開更新自2019年1月之後,在沒有取得商業授權下,非個人用途是不得採用的。
就LTS來說,剛釋出的Oracle JDK11在〈Oracle JDK License〉(https://goo.gl/4vFoAZ)也明確寫著,除了開發、測試、原型、應用程式展示外,不可將之用於任何資料處理(data processing)、商業、產品、內部企業等目的。
儘管BCL對於什麼是一般用途,一直沒有定義清楚的畫分界線,然而,就Oracle JDK8、Oracle JDK11等LTS版本來說,商務上的應用,確實不再是免費的!
基於OpenJDK的建構版本
若採用重要的LTS,Oracle JDK的用戶必須取得商用授權,才能取得安全修補,不過,對OpenJDK來說並非如此!2006年JavaOne大會上,Sun宣告Java開放原始碼,2009年4月15日正式發布OpenJDK,而OpenJDK7的授權為GPLv2 + Classpath Exception(https://goo.gl/eYsupP),基本上,這裡允許商業上的使用。
舉例來說,OpenJDK7當中,有許多程式碼因程式碼授權的衝突而必須拿掉,使得原始的OpenJDK7是不完整的,所以,Red Hat於2007年發起了IcedTea計畫,致力於修補OpenJDK7,使之完備,並通過了JCK相容測試。
至於OpenJDK6,則是OpenJDK7的分支,過去Oracle JDK6結束支援時,Red Hat於2013年3月宣布,他們持有OpenJDK6領導權,而能持續對OpenJDK6臭蟲與安全問題進行修補(但該公司在2016年12月已經終止OpenJDK6的支援)。
在〈Oracle JDK Releases for Java 11 and Later〉(https://goo.gl/uSV34X)提到,從Java 11開始,除了必須取得商用授權的Oracle JDK之外,Oracle也提供OpenJDK的建構版本,其中也包含了過去版本中的一些商用特性(過去幾年Oracle陸續貢獻給OpenJDK社群)。
因此,就功能而言,從JDK11開始,Oracle JDK及OpenJDK基本上是相同的(文中也提到了一些差異性,像是javafx等模組)。
若是使用Oracle建構的OpenJDK,未來無法從Oracle取得安全修補,不過,安全修補會回饋至OpenJDK的原始碼庫,而除了自行建構以便跟上修補之外,也有其他預建構好的OpenJDK版本,像是〈Time to look beyond Oracle's JDK〉(https://goo.gl/ZPgvD4)提到的AdoptOpenJDK等。
單就免費的考量來說,AdoptOpenJDK就提供了OpenJDK8到10,在Java 11正式釋出後不久,也會有OpenJDK11的版本,就LTS來說,基本上,不用擔心沒有免費的安全修補可用。
若需要商務上的付費服務,〈Time to look beyond Oracle's JDK〉也提到,如Azul Zulu等公司,在考量與作業系統整合度時,Red Hat也提供內含OpenJDK的建構版本。
並非只是免費與否
就簡單的結論來說,Java還是有免費版本的JDK,問題在於選擇使用哪個JDK。然而,就算有AdoptOpenJDK等組織或公司,提供現成OpenJDK建構,但是,更多樣的OpenJDK建構來源,加上六個月的釋出模型,以及三年一次的LTS版本,也代表著更多必須考量的問題。
就穩定的安全修補而言,著重在三年一次的LTS是個選擇,然而,不同的OpenJDK建構版本,對LTS的支援期限也不同。另外,也必須同時考量程式庫要求的最低版本等問題,關於這部份,可參考〈如何面對新的Java Release Model〉(https://goo.gl/F5UoPF)。
因而就算有免費可商用的JDK建構版本,也並不代表JDK的選擇與日後維護等是零成本,更積極評估與選擇變得必要,我建議以上提及的文件內容,你可以詳細閱讀,評估時容易有個出發點,不致於單純落入免不免費這件事上!
無關免費 主流的程式語言 你只能用...kotlin要變主流 還要看Google的政策
作者: liddle (Guderian) 2018-10-15 11:38:00
文章很長,結論只要一行就是「要收錢」。
作者: kojilin (阿~~小達達) 2018-10-15 14:43:00
有人內文沒看完?免費收費選擇都有,上面的要收錢是....
作者:
BoXeX (心愛騎士團異端審判騎士)
2018-10-15 15:09:00但如果GOOGLE出事是因為API抄襲那麼OPENJDK以後到底會不會出事......
作者:
ssccg (23)
2018-10-15 17:10:00應該說結論是Oracle版要收錢OpenJDK是Oracle自己的有什麼好出事的,Android SDK完全是另一套API,跟這邊的JDK/JRE問題根本不相關
作者:
ssadow (ssadow)
2018-10-15 17:23:00OracleJDK -> 商業用途要收費,OpenJDK -> 免費隨你用跟google的官司問題跟這篇文討論的是不同的事
作者: liddle (Guderian) 2018-10-15 17:39:00
直接講就是用 Oracle 要收錢。用 Open 也未必能豁免法律風險。Oracle 一樣可能發動法律訴訟。就問自己公司能和 Google 一樣付律師費嗎?開放原始碼與「開放授權」是兩件事。開放授權與放棄訴訟權利是兩件事。
作者:
ssccg (23)
2018-10-15 17:45:00應該是問自己公司能和Google一樣付出Oracle會想告你的賠償金額嗎?OpenJDK照著授權用是要能被告到什麼,除非未來改授權條款
作者: liddle (Guderian) 2018-10-15 18:04:00
選用一個有法律風險的技術,可不是對公司負責的方式。另外,律師費都付不起,就不用往後討論賠償了。Google 請的律師可是全美頂尖。每小時收費數千美元。團隊成員也是上千美元。
作者:
ssccg (23)
2018-10-15 18:07:00照這邏輯有什麼沒法律風險的技術? 還是有法律風險的技術是定義成IP持有者是Oracle?
作者: liddle (Guderian) 2018-10-15 19:05:00
那舉個例子:譬如你使用 C# 及 .NET 就不會有法律風險。因為微軟已經在提為公開標準。實作也使用MIT 類的授權條款。在法律上微軟就算想告也沒基礎。在提起訴訟前,你要證明某項權利是你的,才能進行下一步。C# 以及 .NET 是ECMA 及 ISO 標準。所以不能就此主張任和權利。而C#的「實現部分」,也使用 MIT 類的權利發表。那就是也不可能就此主張權利。Oracle 的 Java 授權,通通有伏筆。
作者: liddle (Guderian) 2018-10-15 20:07:00
alan3100 那一段論述有悖?還是你就是信口胡說之流?
OpenJDK 採用 GPLv2 協議,不會有專利問題
作者: kojilin (阿~~小達達) 2018-10-15 21:18:00
就像上面說的OpenJDK 也有license 寫清楚就是GPLv2+ce
作者: superpandal 2018-10-15 21:54:00
這我很認真的查過... openjdk主要重點還是在ce上不是所有的類都有ce... 當然幾乎都有ce用錯類可能有產品被gpl感染的問題如果oracle要操作也是可以的 可以再下版弄小動作但到這個時候 java就沒人用了... 相信他們不會這樣做死當然參照底層api是註定要被gpl感染的
作者:
Argos (Big doge is watching u)
2018-10-15 22:18:00反正還是那句老話 J開頭的能不碰就不碰 lagecy沒辦法只好用新專案就別用JAVA了吧 XD
作者: superpandal 2018-10-15 22:23:00
沒java可用我相信有信仰的也不會跑去用.net的 XD還是挺討厭M$ 反正有的是方法...
作者: kojilin (阿~~小達達) 2018-10-16 08:54:00
之前看過一個文章提到非ce的類別好像是 sunec 相關的但如果有這些會進去的話,維護的不只有 oracle, 馬上就會有人整理出來. Azul 本身也提過他們會檢查(但不知道會不會分享出來)只是 sunec 剛看一下,native 部分是 LGPL
作者:
cerwvk (乎你~~~)
2018-10-16 09:17:00為何用爭議性這麼大的東西? 想賭一下嗎?
作者:
ssadow (ssadow)
2018-10-16 09:42:00這裡又不是八卦版,直接清楚指出爭議在哪不好嗎只丟了一句這個不好就跑了實在很不工程師......
作者:
yfr 2018-10-16 10:38:00良葛格不知道為什麼這篇我完全看不懂結論不知道是因為oracle就這樣還是我悟性不好
作者:
pttworld (批踢踢世界)
2018-10-16 17:59:00這篇文的論調有點鑽牛角尖了討論Java免費與否,標的一定指的是Oracle版商業授權討論微軟視窗抓盜倒版標的也不會是個人工作一定是出社會,當然討論商用
作者: kojilin (阿~~小達達) 2018-10-16 18:35:00
?樓上是指?OpenJDK 在商用環境會有什麼問題?出社會沒必要一定用 Oracle JDK, 你可以用 OpenJDK
作者:
pttworld (批踢踢世界)
2018-10-16 19:09:00推文都有人在說閱讀和邏輯很重要了這是在評論文中否定問Java免費想法太簡單這個點
作者:
qrtt1 (有些事,有時候。。。)
2018-10-16 19:19:00就算是 OpenJDK 也是有各家供應商出的商用打包版本的啊。
作者:
Argos (Big doge is watching u)
2018-10-16 20:28:00閱讀跟邏輯是一回事 相關法律實際怎麼樣又是另一回事別說什麼用其它家就沒風險這種話 哪一家吃相跟O社一樣難看?
作者:
oopFoo (3d)
2018-10-16 20:56:00很討厭MS。各種FUD。用Java根本沒風險。
作者: superpandal 2018-10-16 20:56:00
基於openjdk的也是要gpl阿 所以肯定是open的 有沒有附加協定那就是另外一回事但最重要的點是要通過認證才能稱為是java 不然不能稱作是java只要遵從各附件的協議就可以商用
作者: kojilin (阿~~小達達) 2018-10-16 21:13:00
啥技術都不可能零風險拉,被告啊,停止發展,不流行..所以真的討厭Oracle那就沒法吧,畢竟他也是OpenJDK最大貢獻者。