[討論] Java依舊免費?

看板Soft_Job作者 (匡匡56)時間5年前 (2018/10/14 13:53), 編輯推噓17(17075)
留言92則, 17人參與, 5年前最新討論串1/1
良葛格寫的文章 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的選擇與日後維護等是零成本,更積極評估與選擇變得必要,我建議以上提及的文件內容,你可以詳細閱讀,評估時容易有個出發點,不致於單純落入免不免費這件事上! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.7.177 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1539496398.A.C89.html

10/15 08:43, 5年前 , 1F
無關免費 主流的程式語言 你只能用...
10/15 08:43, 1F

10/15 08:48, 5年前 , 2F
kotlin要變主流 還要看Google的政策
10/15 08:48, 2F

10/15 11:38, 5年前 , 3F
文章很長,結論只要一行就是「要收錢」。
10/15 11:38, 3F

10/15 12:46, 5年前 , 4F
閱讀和邏輯很重要,不然就會一直鬼打牆.
10/15 12:46, 4F

10/15 14:43, 5年前 , 5F
有人內文沒看完?
10/15 14:43, 5F

10/15 14:44, 5年前 , 6F
免費收費選擇都有,上面的要收錢是....
10/15 14:44, 6F

10/15 15:09, 5年前 , 7F
但如果GOOGLE出事是因為API抄襲
10/15 15:09, 7F

10/15 15:09, 5年前 , 8F
那麼OPENJDK以後到底會不會出事......
10/15 15:09, 8F

10/15 17:10, 5年前 , 9F
應該說結論是Oracle版要收錢
10/15 17:10, 9F

10/15 17:13, 5年前 , 10F
OpenJDK是Oracle自己的有什麼好出事的,Android SDK完全是
10/15 17:13, 10F

10/15 17:14, 5年前 , 11F
另一套API,跟這邊的JDK/JRE問題根本不相關
10/15 17:14, 11F

10/15 17:23, 5年前 , 12F
OracleJDK -> 商業用途要收費,OpenJDK -> 免費隨你用
10/15 17:23, 12F

10/15 17:23, 5年前 , 13F
跟google的官司問題跟這篇文討論的是不同的事
10/15 17:23, 13F

10/15 17:39, 5年前 , 14F
直接講就是用 Oracle 要收錢。用 Open 也未必能豁免法律
10/15 17:39, 14F

10/15 17:39, 5年前 , 15F
風險。Oracle 一樣可能發動法律訴訟。就問自己公司能和 Go
10/15 17:39, 15F

10/15 17:39, 5年前 , 16F
ogle 一樣付律師費嗎?
10/15 17:39, 16F

10/15 17:41, 5年前 , 17F
開放原始碼與「開放授權」是兩件事。開放授權與放棄訴訟權
10/15 17:41, 17F

10/15 17:41, 5年前 , 18F
利是兩件事。
10/15 17:41, 18F

10/15 17:45, 5年前 , 19F
應該是問自己公司能和Google一樣付出Oracle會想告你的賠償
10/15 17:45, 19F

10/15 17:45, 5年前 , 20F
金額嗎?
10/15 17:45, 20F

10/15 17:50, 5年前 , 21F
OpenJDK照著授權用是要能被告到什麼,除非未來改授權條款
10/15 17:50, 21F

10/15 18:04, 5年前 , 22F
選用一個有法律風險的技術,可不是對公司負責的方式。
10/15 18:04, 22F

10/15 18:05, 5年前 , 23F
另外,律師費都付不起,就不用往後討論賠償了。
10/15 18:05, 23F

10/15 18:07, 5年前 , 24F
Google 請的律師可是全美頂尖。每小時收費數千美元。團隊
10/15 18:07, 24F

10/15 18:07, 5年前 , 25F
成員也是上千美元。
10/15 18:07, 25F

10/15 18:07, 5年前 , 26F
照這邏輯有什麼沒法律風險的技術? 還是有法律風險的技術是
10/15 18:07, 26F

10/15 18:07, 5年前 , 27F
定義成IP持有者是Oracle?
10/15 18:07, 27F

10/15 18:43, 5年前 , 28F
這次的Java年會反應了現狀啊
10/15 18:43, 28F

10/15 19:05, 5年前 , 29F
那舉個例子:譬如你使用 C# 及 .NET 就不會有法律風險。因
10/15 19:05, 29F

10/15 19:05, 5年前 , 30F
為微軟已經在提為公開標準。實作也使用MIT 類的授權條款。
10/15 19:05, 30F

10/15 19:05, 5年前 , 31F
在法律上微軟就算想告也沒基礎。
10/15 19:05, 31F

10/15 19:09, 5年前 , 32F
在提起訴訟前,你要證明某項權利是你的,才能進行下一步。
10/15 19:09, 32F

10/15 19:09, 5年前 , 33F
C# 以及 .NET 是ECMA 及 ISO 標準。所以不能就此主張任和
10/15 19:09, 33F

10/15 19:09, 5年前 , 34F
權利。而C#的「實現部分」,也使用 MIT 類的權利發表。那
10/15 19:09, 34F

10/15 19:10, 5年前 , 35F
就是也不可能就此主張權利。Oracle 的 Java 授權,通通有
10/15 19:10, 35F

10/15 19:10, 5年前 , 36F
伏筆。
10/15 19:10, 36F

10/15 19:56, 5年前 , 37F
內文都不看在底下貼一大段自打臉.
10/15 19:56, 37F

10/15 20:07, 5年前 , 38F
alan3100 那一段論述有悖?還是你就是信口胡說之流?
10/15 20:07, 38F

10/15 20:07, 5年前 , 39F
OpenJDK 採用 GPLv2 協議,不會有專利問題
10/15 20:07, 39F

10/15 20:11, 5年前 , 40F
https://goo.gl/F5UoPF 懶得看也好歹挑重點看
10/15 20:11, 40F

10/15 20:12, 5年前 , 41F
可以請問OpenJDK的伏筆在哪嗎? 這邊有license連結
10/15 20:12, 41F

10/15 20:12, 5年前 , 42F

10/15 20:13, 5年前 , 43F
或是oracle在哪裡有公告特別聲明?
10/15 20:13, 43F

10/15 21:18, 5年前 , 44F
就像上面說的OpenJDK 也有license 寫清楚就是GPLv2+ce
10/15 21:18, 44F

10/15 21:54, 5年前 , 45F
這我很認真的查過... openjdk主要重點還是在ce上
10/15 21:54, 45F

10/15 21:55, 5年前 , 46F
不是所有的類都有ce... 當然幾乎都有ce
10/15 21:55, 46F

10/15 21:55, 5年前 , 47F
用錯類可能有產品被gpl感染的問題
10/15 21:55, 47F

10/15 21:56, 5年前 , 48F
如果oracle要操作也是可以的 可以再下版弄小動作
10/15 21:56, 48F

10/15 21:56, 5年前 , 49F
但到這個時候 java就沒人用了... 相信他們不會這樣
10/15 21:56, 49F

10/15 21:56, 5年前 , 50F
做死
10/15 21:56, 50F

10/15 22:03, 5年前 , 51F
當然參照底層api是註定要被gpl感染的
10/15 22:03, 51F

10/15 22:18, 5年前 , 52F
反正還是那句老話 J開頭的能不碰就不碰 lagecy沒辦法只好用
10/15 22:18, 52F

10/15 22:18, 5年前 , 53F
新專案就別用JAVA了吧 XD
10/15 22:18, 53F

10/15 22:23, 5年前 , 54F
沒java可用我相信有信仰的也不會跑去用.net的 XD
10/15 22:23, 54F

10/15 22:41, 5年前 , 55F
還是挺討厭M$ 反正有的是方法...
10/15 22:41, 55F

10/16 08:54, 5年前 , 56F
之前看過一個文章提到非ce的類別好像是 sunec 相關的
10/16 08:54, 56F

10/16 08:55, 5年前 , 57F
但如果有這些會進去的話,維護的不只有 oracle, 馬上
10/16 08:55, 57F

10/16 08:55, 5年前 , 58F
就會有人整理出來. Azul 本身也提過他們會檢查(但不知道
10/16 08:55, 58F

10/16 08:55, 5年前 , 59F
會不會分享出來)
10/16 08:55, 59F

10/16 09:08, 5年前 , 60F
只是 sunec 剛看一下,native 部分是 LGPL
10/16 09:08, 60F

10/16 09:17, 5年前 , 61F
為何用爭議性這麼大的東西? 想賭一下嗎?
10/16 09:17, 61F

10/16 09:41, 5年前 , 62F
爭議點是某些信仰派不斷的鬼打牆嗎?
10/16 09:41, 62F

10/16 09:42, 5年前 , 63F
這裡又不是八卦版,直接清楚指出爭議在哪不好嗎
10/16 09:42, 63F

10/16 09:42, 5年前 , 64F
只丟了一句這個不好就跑了實在很不工程師......
10/16 09:42, 64F

10/16 10:38, 5年前 , 65F
良葛格不知道為什麼這篇我完全看不懂結論
10/16 10:38, 65F

10/16 10:38, 5年前 , 66F
不知道是因為oracle就這樣還是我悟性不好
10/16 10:38, 66F

10/16 11:02, 5年前 , 67F
粗略搜尋一下 大概就這樣了
10/16 11:02, 67F

10/16 11:02, 5年前 , 68F

10/16 11:03, 5年前 , 69F
s2ezbXvC3q7Sb1Yy/view
10/16 11:03, 69F

10/16 11:04, 5年前 , 70F
openjdk8...
10/16 11:04, 70F

10/16 11:10, 5年前 , 71F
大部分都test... 應該不會有機會gg
10/16 11:10, 71F

10/16 17:59, 5年前 , 72F
這篇文的論調有點鑽牛角尖了
10/16 17:59, 72F

10/16 18:01, 5年前 , 73F
討論Java免費與否,標的一定指的是Oracle版商業授權
10/16 18:01, 73F

10/16 18:02, 5年前 , 74F
討論微軟視窗抓盜倒版標的也不會是個人
10/16 18:02, 74F

10/16 18:04, 5年前 , 75F
工作一定是出社會,當然討論商用
10/16 18:04, 75F

10/16 18:35, 5年前 , 76F
?樓上是指?OpenJDK 在商用環境會有什麼問題?
10/16 18:35, 76F

10/16 18:39, 5年前 , 77F
出社會沒必要一定用 Oracle JDK, 你可以用 OpenJDK
10/16 18:39, 77F

10/16 19:09, 5年前 , 78F
推文都有人在說閱讀和邏輯很重要了
10/16 19:09, 78F

10/16 19:11, 5年前 , 79F
這是在評論文中否定問Java免費想法太簡單這個點
10/16 19:11, 79F

10/16 19:19, 5年前 , 80F
就算是 OpenJDK 也是有各家供應商出的商用打包版本的啊。
10/16 19:19, 80F

10/16 20:28, 5年前 , 81F
閱讀跟邏輯是一回事 相關法律實際怎麼樣又是另一回事
10/16 20:28, 81F

10/16 20:28, 5年前 , 82F
別說什麼用其它家就沒風險這種話 哪一家吃相跟O社一樣難看?
10/16 20:28, 82F

10/16 20:56, 5年前 , 83F
很討厭MS。各種FUD。用Java根本沒風險。
10/16 20:56, 83F

10/16 20:56, 5年前 , 84F
基於openjdk的也是要gpl阿 所以肯定是open的 有沒有
10/16 20:56, 84F

10/16 20:57, 5年前 , 85F
附加協定那就是另外一回事
10/16 20:57, 85F

10/16 20:57, 5年前 , 86F
但最重要的點是要通過認證才能稱為是java 不然不能
10/16 20:57, 86F

10/16 20:57, 5年前 , 87F
稱作是java
10/16 20:57, 87F

10/16 21:00, 5年前 , 88F
只要遵從各附件的協議就可以商用
10/16 21:00, 88F

10/16 21:13, 5年前 , 89F
啥技術都不可能零風險拉,被告啊,停止發展,不流行..
10/16 21:13, 89F

10/16 21:14, 5年前 , 90F
所以真的討厭Oracle那就沒法吧,畢竟他也是OpenJDK最大
10/16 21:14, 90F

10/16 21:14, 5年前 , 91F
貢獻者。
10/16 21:14, 91F

10/17 00:02, 5年前 , 92F
C#和JAVA工程師則互相鄙視
10/17 00:02, 92F
文章代碼(AID): #1RmjdEo9 (Soft_Job)