[爆卦]java收費ptt是什麼?優點缺點精華區懶人包

為什麼這篇java收費ptt鄉民發文收入到精華區:因為在java收費ptt這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者kuangjc5566 (匡匡56)看板Soft_Job標題[討論] Java依舊免費?時間Su...

java收費ptt 在 ??? 政大 | 科系職涯訪談 | 個人成長 | IG經營 Instagram 的最讚貼文

2021-07-11 08:50:48

《線上課程平台大盤點》 免費、付費課程一次看! SmartM大大學院 @smartm.tw 大大學院的課程包含寫作力、溝通力、簡報力、財報課、廣告投放、學習法等, 職場技能相關的課程可說是應有盡有! 提供職場人士或是職場新鮮人一站式的「終身學習知識服務平台」 同樣也有推出訂閱制,使消費者能夠觀看...



良葛格寫的文章

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
nashyuuki: 無關免費 主流的程式語言 你只能用... 10/15 08:43
nashyuuki: kotlin要變主流 還要看Google的政策 10/15 08:48
liddle: 文章很長,結論只要一行就是「要收錢」。 10/15 11:38
alan3100: 閱讀和邏輯很重要,不然就會一直鬼打牆. 10/15 12:46
kojilin: 有人內文沒看完? 10/15 14:43
kojilin: 免費收費選擇都有,上面的要收錢是.... 10/15 14:44
BoXeX: 但如果GOOGLE出事是因為API抄襲 10/15 15:09
BoXeX: 那麼OPENJDK以後到底會不會出事...... 10/15 15:09
ssccg: 應該說結論是Oracle版要收錢 10/15 17:10
ssccg: OpenJDK是Oracle自己的有什麼好出事的,Android SDK完全是 10/15 17:13
ssccg: 另一套API,跟這邊的JDK/JRE問題根本不相關 10/15 17:14
ssadow: OracleJDK -> 商業用途要收費,OpenJDK -> 免費隨你用 10/15 17:23
ssadow: 跟google的官司問題跟這篇文討論的是不同的事 10/15 17:23
liddle: 直接講就是用 Oracle 要收錢。用 Open 也未必能豁免法律 10/15 17:39
liddle: 風險。Oracle 一樣可能發動法律訴訟。就問自己公司能和 Go 10/15 17:39
liddle: ogle 一樣付律師費嗎? 10/15 17:39
liddle: 開放原始碼與「開放授權」是兩件事。開放授權與放棄訴訟權 10/15 17:41
liddle: 利是兩件事。 10/15 17:41
ssccg: 應該是問自己公司能和Google一樣付出Oracle會想告你的賠償 10/15 17:45
ssccg: 金額嗎? 10/15 17:45
ssccg: OpenJDK照著授權用是要能被告到什麼,除非未來改授權條款 10/15 17:50
liddle: 選用一個有法律風險的技術,可不是對公司負責的方式。 10/15 18:04
liddle: 另外,律師費都付不起,就不用往後討論賠償了。 10/15 18:05
liddle: Google 請的律師可是全美頂尖。每小時收費數千美元。團隊 10/15 18:07
liddle: 成員也是上千美元。 10/15 18:07
ssccg: 照這邏輯有什麼沒法律風險的技術? 還是有法律風險的技術是 10/15 18:07
ssccg: 定義成IP持有者是Oracle? 10/15 18:07
ripple0129: 這次的Java年會反應了現狀啊 10/15 18:43
liddle: 那舉個例子:譬如你使用 C# 及 .NET 就不會有法律風險。因 10/15 19:05
liddle: 為微軟已經在提為公開標準。實作也使用MIT 類的授權條款。 10/15 19:05
liddle: 在法律上微軟就算想告也沒基礎。 10/15 19:05
liddle: 在提起訴訟前,你要證明某項權利是你的,才能進行下一步。 10/15 19:09
liddle: C# 以及 .NET 是ECMA 及 ISO 標準。所以不能就此主張任和 10/15 19:09
liddle: 權利。而C#的「實現部分」,也使用 MIT 類的權利發表。那 10/15 19:09
liddle: 就是也不可能就此主張權利。Oracle 的 Java 授權,通通有 10/15 19:10
liddle: 伏筆。 10/15 19:10
alan3100: 內文都不看在底下貼一大段自打臉. 10/15 19:56
liddle: alan3100 那一段論述有悖?還是你就是信口胡說之流? 10/15 20:07
CaptainTeemo: OpenJDK 採用 GPLv2 協議,不會有專利問題 10/15 20:07
alan3100: https://goo.gl/F5UoPF 懶得看也好歹挑重點看 10/15 20:11
ssadow: 可以請問OpenJDK的伏筆在哪嗎? 這邊有license連結 10/15 20:12
ssadow: 或是oracle在哪裡有公告特別聲明? 10/15 20:13
kojilin: 就像上面說的OpenJDK 也有license 寫清楚就是GPLv2+ce 10/15 21:18
superpandal: 這我很認真的查過... openjdk主要重點還是在ce上 10/15 21:54
superpandal: 不是所有的類都有ce... 當然幾乎都有ce 10/15 21:55
superpandal: 用錯類可能有產品被gpl感染的問題 10/15 21:55
superpandal: 如果oracle要操作也是可以的 可以再下版弄小動作 10/15 21:56
superpandal: 但到這個時候 java就沒人用了... 相信他們不會這樣 10/15 21:56
superpandal: 做死 10/15 21:56
superpandal: 當然參照底層api是註定要被gpl感染的 10/15 22:03
Argos: 反正還是那句老話 J開頭的能不碰就不碰 lagecy沒辦法只好用 10/15 22:18
Argos: 新專案就別用JAVA了吧 XD 10/15 22:18
superpandal: 沒java可用我相信有信仰的也不會跑去用.net的 XD 10/15 22:23
superpandal: 還是挺討厭M$ 反正有的是方法... 10/15 22:41
kojilin: 之前看過一個文章提到非ce的類別好像是 sunec 相關的 10/16 08:54
kojilin: 但如果有這些會進去的話,維護的不只有 oracle, 馬上 10/16 08:55
kojilin: 就會有人整理出來. Azul 本身也提過他們會檢查(但不知道 10/16 08:55
kojilin: 會不會分享出來) 10/16 08:55
kojilin: 只是 sunec 剛看一下,native 部分是 LGPL 10/16 09:08
cerwvk: 為何用爭議性這麼大的東西? 想賭一下嗎? 10/16 09:17
alan3100: 爭議點是某些信仰派不斷的鬼打牆嗎? 10/16 09:41
ssadow: 這裡又不是八卦版,直接清楚指出爭議在哪不好嗎 10/16 09:42
ssadow: 只丟了一句這個不好就跑了實在很不工程師...... 10/16 09:42
yfr: 良葛格不知道為什麼這篇我完全看不懂結論 10/16 10:38
yfr: 不知道是因為oracle就這樣還是我悟性不好 10/16 10:38
superpandal: 粗略搜尋一下 大概就這樣了 10/16 11:02
superpandal: s2ezbXvC3q7Sb1Yy/view 10/16 11:03
superpandal: openjdk8... 10/16 11:04
superpandal: 大部分都test... 應該不會有機會gg 10/16 11:10
pttworld: 這篇文的論調有點鑽牛角尖了 10/16 17:59
pttworld: 討論Java免費與否,標的一定指的是Oracle版商業授權 10/16 18:01
pttworld: 討論微軟視窗抓盜倒版標的也不會是個人 10/16 18:02
pttworld: 工作一定是出社會,當然討論商用 10/16 18:04
kojilin: ?樓上是指?OpenJDK 在商用環境會有什麼問題? 10/16 18:35
kojilin: 出社會沒必要一定用 Oracle JDK, 你可以用 OpenJDK 10/16 18:39
pttworld: 推文都有人在說閱讀和邏輯很重要了 10/16 19:09
pttworld: 這是在評論文中否定問Java免費想法太簡單這個點 10/16 19:11
qrtt1: 就算是 OpenJDK 也是有各家供應商出的商用打包版本的啊。 10/16 19:19
Argos: 閱讀跟邏輯是一回事 相關法律實際怎麼樣又是另一回事 10/16 20:28
Argos: 別說什麼用其它家就沒風險這種話 哪一家吃相跟O社一樣難看? 10/16 20:28
oopFoo: 很討厭MS。各種FUD。用Java根本沒風險。 10/16 20:56
superpandal: 基於openjdk的也是要gpl阿 所以肯定是open的 有沒有 10/16 20:56
superpandal: 附加協定那就是另外一回事 10/16 20:57
superpandal: 但最重要的點是要通過認證才能稱為是java 不然不能 10/16 20:57
superpandal: 稱作是java 10/16 20:57
superpandal: 只要遵從各附件的協議就可以商用 10/16 21:00
kojilin: 啥技術都不可能零風險拉,被告啊,停止發展,不流行.. 10/16 21:13
kojilin: 所以真的討厭Oracle那就沒法吧,畢竟他也是OpenJDK最大 10/16 21:14
kojilin: 貢獻者。 10/16 21:14
becca945: C#和JAVA工程師則互相鄙視 10/17 00:02

你可能也想看看

搜尋相關網站