今天 JDK/Java 15 发布,在 RI 包里有开发者发现其标注了一则国际使用限制条款:

由于某些国家/地区的知识产权保护和执法有限,因此 JDK 源代码只能分发到授权的国家/地区列表中。如果要从不在此列表中的国家/地区进行下载,则将无法访问源代码。我们正在不断审查此列表,以添加其他国家/地区。
有开发者和知识产权专家指出,此条款意味着如果 JDK/Java(Oracle)认为有国家不能很好地进行知识产权保护,那么便可以限制其使用。
有人对此提出疑问:OpenJDK 根据 GPL 开源协议进行分发,这种限制类型的条款是否有悖 GPL 协议?
实际上,JDK/Java 15 使用的开源协议是 GPL v2,该版本下有一条与 JDK/Java 15 的国际使用限制条款类似:
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
如果在某些国家因为专利或版权的问题难以分发,那么版权所有人在分发时,可以对分发的地区加以明确限制,以排除那些国家。在这种情况下,这些限制不认为是对本协议的修改。(译者注:算一种例外吧。)
所以理论上 JDK/Java 15 中这样做并没有违反 GPL v2 协议。而在 GNU 发布的最新 GPL v3 许可证中,已经没有了类似的国家和地区限制条款。
但也有业内人士指出,作为 OpenJDK 项目的实际管理者,Oracle 是否有足够依据和健全的评估体系,去判断国家/地区的专利或版权相关法规是否健全,并以此为理由对整个国家/地区做出限制呢?
值得一提的是,OpenJDK 中的这个国家限制条款并不是新增的,早在 6 年前就已经有开发者提出了质疑。这名开发者把该条款发在 GNU 论坛上,GNU 的管理者在当时还询问了 RMS 等权威。
GNU 咨询委员会成员 Jason Self 引用 FSF 章程中对自由软件的定义对此进行了答复:在国际上,有时政府的出口管制条例和贸易制裁会限制人们分发自由软件,软件开发者没有权力消除或推翻这些限制,但他们可以和必须做什么?就是拒绝将它们加入自由软件的的使用限制条款。这样一来,在这些政府的管辖范围之外,这些限制就不会对使用自由软件产生什么影响。“仅提及出口法规的存在,而不是将限制作为许可证本身的条件,是可以接受的,因为它不会直接限制到用户。”

在今天国际环境日趋严峻的情况下,这个话题相比 6 年前初次被提及,似乎得到了更多关注,当年这一问题没有被很好地讨论,如今重新被提出来,希望这一次能够引起足够的重视。也希望更多专业人士出来积极探讨。
以 6 年前那一帖子里 Jason Self 的一句话作为结语:
If an export regulation is actually trivial for free software, then requiring it as a condition is not an actual problem; however, it is a potential problem, since a later change in export law could make the requirement nontrivial and thus render the software nonfree.
如果出口管制对于自由软件的影响微不足道,那么限制条款或许不是什么问题,但是,潜在问题是,后续如果出口管制法律变更使得整体要求变得严苛,那么会使软件不自由。
相关链接:
再回头想一想,Java如何才能不让用,这又不是芯片,最后撕破脸,当前源码又不是没有,有阿里背书,fork的大把,发行版大把,怕个毛线,额卖瑞啃是万能的啊,我看怎么禁止~
ORACLE从来就没有把完整的JVM开源过,所谓的JVM开源,也只是曾经的SUN的曾经的一个承诺,从来没有完全兑现,现在所说的开源JVM,通常说的都是OPENJDK或者是开源社区自己搞的一些开源JVM实现或者是像IBM这类公司的JVM替代方案,都不是JAVA原来版权的JVM
ORACLE JDK与开源的有什么区别?完整度不同,版权不同,性能也不如ORACLE的,所谓的开源JDK要么是阉割版,要么就是跟原始JAVA一毛钱关系没有的开源社区的自定义版
还有,你们常说的什么JAVA开源实现方案里,连JAVA这个商标都不能使用,这也好意思叫开源?
这个主题文章里有一段话很多人都没仔细看,我单独列出来给你
"如果在某些国家因为专利或版权的问题难以分发,那么版权所有人在分发时,可以对分发的地区加以明确限制,以排除那些国家。在这种情况下,这些限制不认为是对本协议的修改。"
这段话的意思是使用GPLv2版本的所谓JDK,它有权认为"某个国家"可以被排除使用该版权软件
如果OPENJDK认为你所在的"某个国家"是排除目标,你就不能使用这个OPENJDK了,你是有OPENJDK源代码,可以编译成一个JDK,那就跟盗版没有区别了
而且大多数开源协议都没有明确说明可以不遵守美国GOV管制
你现在懂开源了吗?
曾经有一个非常优秀的JAVA实现方案,远比SUN的JAVA实现更优秀,它叫Visual J++,SUN感受到了威胁,就跟微软打了一场官司,最后微软输了,从此VJ++消失了,然后就出现了C#
SUN之所以要这么做本质上肯定是因为私利,但是它给出来的理由很有说服力,就是避免JAVA实现标准的差异化,从而造成JAVA代码在各个JVM实现上的不兼容(JAVA设计的哲学就是: 一处编译,到处运行)
这个官司的后果就是SUN从此以后就拿到了JAVA的商标权,所有非SUN的JVM实现都不可以使用JAVA这个商标
你说的那些什么开源JDK都是李鬼,谁是李逵? ORACLE说了算
只要跟招标企业威胁,如果选择OB,ORACLE将不允许阿里使用JAVA授权,你觉得招标企业那些历史遗留的大量JAVA代码会让企业在招标的时候作何选择?
我提醒你一下,MATLAB是商业授权,中国高校合法购买的前提下被禁止使用的
连你们爱不释手的JVM都是C++开发的,你们这些所谓做企业级软件开发的有什么资格觉得C++做不了?我看是你们这些做企业的技术水平不够,驾驭不了C++吧?
说python不合适的,你的企业级软件比人工智能,机器学习,又或者大数据分析难度更大?
绝大部分所谓企业级软件说白了就是数据库CURD,再加一些消息中间件,一帮javaer离开了JAVA的框架,几乎什么都做不了
你把拉里埃里森想成某某人铁粉才是天真幼稚,商人会做别人粉丝?
问题是这两样都是由JVM来保证的,又不是JAVA语言本身保证的,更不是JAVAER保证的了的
我前面说的是企业在乎稳定性和性能,是站在甲方立场
你说的所谓开发的易控性是乙方立场
我就说说你的乙方立场吧
第一点,任何项目组如果人员流动性超过了30%,其项目质量都会很难掌控,这是管理要解决的问题,不是编程语言能技术解决的问题; 编程是人的思维的体现,一个项目如果频繁迭代并且换人,那么体现第一个开发者的思路会被第二个接手的人偏离,然后第三个继续偏离...一直到最后项目无法维护了,一些陈旧的代码谁也不想动,一动就出错,这是无可避免的事情,就像人都要死一样,软件项目也有生命周期,也必然会死,跟语言没有关系!
第二,代码可读性,JS不谈(设计有缺陷),C++需要良好的编码规范,比如GOOGLE,华为都有关于C++的编码规范要求;至于Python,如果你觉得Python代码可读性都很差,那一定是你不了解Python,py是写起来非常有趣,而且是从一开始设计的时候就强调代码可读性的编程语言,否则它的代码格式为何是强制要求的?你不要带着强类型编译型语言的思维去理解弱类型解释性语言的代码,那肯定会觉得很别扭
我们这里谈论的其实是版权对企业开发工具选择的影响,谈论的是像阿里,腾讯这类大型公司的软件开发工具需要选择自主可控的版权,你说的那些高流动性的软件外包公司又没有自主核心产品,用什么还不是要听甲方的?
但是那些有志于开发自己核心产品,自主技术的公司,是不应该选择JAVA的
平常那种大排档的自是不用搞这些,问题是你挣得也少呀,而且保不准那天就因为你买的菜质量问题而被停业整顿了呢?
又或者你的上家涨价,卡你脖子,不卖菜给你了,你只好关门大吉了呢?
我们谈论的是有追求的公司,不是那种只要求搬砖码农的流水线外包公司
谁跟你只讨论大公司了? 你不要单方面限定讨论范围好吗, 各个语言都有各个语言的使用范围, 你非要每个公司都用c++? 那it业根本不会像现在这样繁荣, 大家全在和内存溢出这些问题上反复折腾
你看我这里不谈论外包公司的主要原因在于,他们不是做长期产品的,他们只是搬砖的,不是建筑师,外包公司没有权利指定什么开发工具,那是甲方的权利
今天JAVA能用,甲方就用JAVA,哪天JAVA不给用了,甲方自然会换一种工具,到时候外包公司就会把这些抱着JAVA不放的人扔进垃圾桶
MC,KFC存在多少年了?又有多少家利润率超过他们的餐馆获得比他们久?比他们更有定价权?
真正有实力的公司,尤其是他对这个外包项目很重视的话,那它一定会派出一个很有能力的甲方经理,甚至是2个人,一个是擅长沟通管理的,另一个是懂的技术架构的
并且最终项目代码都需要经过review,没有代码review的甲方肯定是管理不怎么样
我也说让JAVA大放异彩的是JVM,你是从哪里得到我看不起JAVA的?
我说的是对于追求自主可控的公司,不该选择JAVA
java不能用就用.net, 绝不是因为java能力不行, 相反java比大多数语言适合开发中最广泛的企业级开发. 你说的用c++和py代替才是毫无道理的, java和c#专门占据的中级开发语言这一层是有道理的.
这类企业不缺钱,自己招人开发,因为制度问题,效率慢,所以他们喜欢外包,不是他们没有高水平专家,而是可能你做的那个项目,他们根本就不在意
就算是他们开发了自己公司的ERP/CRM/OA/财务等等什么一切产品,如果他们的战略决策者意识不到完全依赖JAVA的风险,哪天JAVA不给他们用,他们一样都是死
雪崩之下,没有一片雪花是无辜的
我敢说阿里,腾讯抗不住像对华为这样的制裁
微软就不会翻脸?
惹了你你还无可奈何,不惹你的安安静静,你还不好回击,更恶心。
MIT协议不可撤消,不像GPL,而且不具有任何传染性。