[讨论] Java依旧免费?

楼主: kuangjc5566 (匡匡56)   2018-10-14 13:53:11
良葛格写的文章
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的选择与日后维护等是零成本,更积极评估与选择变得必要,我建议以上提及的文件内容,你可以详细阅读,评估时容易有个出发点,不致于单纯落入免不免费这件事上!
作者: nashyuuki (葛屁老师的藏镜人)   2018-10-15 08:43:00
无关免费 主流的程式语言 你只能用...kotlin要变主流 还要看Google的政策
作者: liddle (Guderian)   2018-10-15 11:38:00
文章很长,结论只要一行就是“要收钱”。
作者: alan3100 (BOSS)   2018-10-15 12:46: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:00
OracleJDK -> 商业用途要收费,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?
作者: ripple0129 (perry tsai)   2018-10-15 18:43:00
这次的Java年会反应了现状啊
作者: liddle (Guderian)   2018-10-15 19:05:00
那举个例子:譬如你使用 C# 及 .NET 就不会有法律风险。因为微软已经在提为公开标准。实作也使用MIT 类的授权条款。在法律上微软就算想告也没基础。在提起诉讼前,你要证明某项权利是你的,才能进行下一步。C# 以及 .NET 是ECMA 及 ISO 标准。所以不能就此主张任和权利。而C#的“实现部分”,也使用 MIT 类的权利发表。那就是也不可能就此主张权利。Oracle 的 Java 授权,通通有伏笔。
作者: alan3100 (BOSS)   2018-10-15 19:56:00
内文都不看在底下贴一大段自打脸.
作者: liddle (Guderian)   2018-10-15 20:07:00
alan3100 那一段论述有悖?还是你就是信口胡说之流?
作者: CaptainTeemo (提摩队长)   2018-10-15 20:07:00
OpenJDK 采用 GPLv2 协议,不会有专利问题
作者: alan3100 (BOSS)   2018-10-15 20:11:00
https://goo.gl/F5UoPF 懒得看也好歹挑重点看
作者: ssadow (ssadow)   2018-10-15 20:12:00
可以请问OpenJDK的伏笔在哪吗? 这边有license连结https://openjdk.java.net/legal/gplv2+ce.html或是oracle在哪里有公告特别声明?
作者: 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
为何用争议性这么大的东西? 想赌一下吗?
作者: alan3100 (BOSS)   2018-10-16 09:41:00
争议点是某些信仰派不断的鬼打墙吗?
作者: ssadow (ssadow)   2018-10-16 09:42:00
这里又不是八卦版,直接清楚指出争议在哪不好吗只丢了一句这个不好就跑了实在很不工程师......
作者: yfr   2018-10-16 10:38:00
良葛格不知道为什么这篇我完全看不懂结论不知道是因为oracle就这样还是我悟性不好
作者: superpandal   2018-10-16 11:02:00
粗略搜寻一下 大概就这样了https://drive.google.com/file/d/1c2f5K_8YrjFtS_d_s2ezbXvC3q7Sb1Yy/viewopenjdk8...大部分都test... 应该不会有机会gg
作者: 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最大贡献者。
作者: becca945 (频果芽子)   2018-10-17 00:02:00
C#和JAVA工程师则互相鄙视

Links booklink

Contact Us: admin [ a t ] ucptt.com