阅读更多

0顶
0踩

编程语言



小伙伴们惊呆了!!!

来自国外媒体 takipi 的报道:在 Docker 容器中运行 Oracle Java 可能会让你承担法律责任,为什么呢?

Oracle 和 Linux 之间的关系跌宕起伏,为了在多数的 Linux 发行版使用 Oracle 的 JDK,用户都要经过一番折腾。而如果你使用 Docker ,那么问题更麻烦。因为你可能已经在未知的情况下违反了 Oracle 的许可协议。本文将为了解开其中详情以及帮你在使用 Docker 和 Java 时做出明智的决定。

首先 Java 在 Linux 是怎么开始成为一个问题的?

Oracle 的 Java 在多数 Linux 发行版中都不可用,这是因为 Oracle 关闭了“Operating System Distributor License for Java” (JDL) 协议。这意味着标准的软件仓库就不能使用 Java 和 Oracle Java。但用户可以选择自行下载并安装使用,这比直接从仓库中获取要麻烦得多。在Oracle 的许可证协议中 C 段有这么一句话:
引用

Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce and distribute the Software, provided that (i) you distribute the Software complete and unmodified and only bundled as part of, and for the sole purpose of running, your Programs…”

Oracle 的 JDK 是可以免费下载和使用,而且可免费用于商业用途。该协议的问题主要是针对于发行版。更深入的了解JDK readme file文档后,我们知道 Oracle 只允许分发未经修改过的 JRE 或者 JDK 版本,而且必须遵循要求去保留必须的文件。

这个要求导致多数的 Linux 发行版没法再其自己的渠道上重新分发 Oracle 的 Java 。Debian 用户可以下载 Oracle Java 的 tar 包,并使用 java-package 进行安装。CentOS 要求用户下载 rpm 包,这样用户可以在下载过程中手工的确认遵循 Oracle 的许可证。而红帽提供了如何添加一个 Oracle 维护的仓库的指示说明。

不速之客 —— OpenJDK

在我们之前的文章中,我们向你展示 如何通过 Alpine Linux 让 Docker 瘦身 7 倍 的文章,文章中使用了一个更小的 Java 映像。但我们在 Twitter 上收到的一个评论引起了我们的注意。这个评论来自于 Ben Evans ,这是 jClarity 的联合创始人,也是 infoQ 的 Java 编辑和 O'Reilly 媒体的作者。Ben 展示了 Oracle 许可证中注明的一些问题,以及使用 OpenJDK 构建 Java 的 Docker 映像。
引用

@takipid @docker  Your blogpost gives advice that expressly violates the license for  Oracle Java & leaves your readers with legal liability — Ben Evans  (@kittylyst) January 27, 2016

Ben 通过 Debian 和 Ubuntu OpenJDK 进一步的解释了这个问题:“因此这几乎不可能在源码树种提交这类的内容。”

Ben 补充说该二进制文件没有通过任何来自 Oracle 、红帽或者是  Azul 的 Java 兼容性和一致性的测试。

不允许重新分发?不能用 Docker!

No redistribution? No Docker

你会发现很容易就违反 Oracle 的许可证,特别是你在下载 Java 文件的时候。这是使用 Docker 后让问题变得更纠结。许可证中的限制部分直接影响了 Docker 映像对已编译的 Java 版本的使用。

简单的说,如果你下载一个 Dockerfile 包含了 Oracle 的 JDK,这就是协议所不允许的!映像文件没有包含来自 Oracle 要求必须的文件,或者是他们会插入一个代码可以自动同意 Oracle 的条款。而当你从官网上下载 Oracle JDK 时,你需要手工点击一个复选框来同意 Oracle 的条款。而一旦 Docker 映像使用了那个自动同意条款的代码,那么你就不会意识到有这个条款的存在。

所以这可能就是违法的,请勿在家里尝试!

如上面所说,这个代码包含两个主要的问题:
  • 代码屏蔽了你需要手工同意条款的过程
  • 移除了很多来自安装包中必须的元素(为了减小 Docker 映像的体积)

Oracle 的许可证非常不友好,不是吗?
怎么才能成为一个守法的 Java 用户?

你有两个选择:
  • 我行我素。这意味着你不遵守 Oracle 许可证,旧习难改,哈哈
  • 改用 OpenJDK,很多用户会选择这个开源产品,它的许可证友好得多

当选择第二种方式时,你可能会碰到一些 OpenJDK 映像无法被社区支持的问题,这些问题主要介于 Java 版本和官方尚未发行的之间。

如果你不确定如何开始,你可以选择红帽的 IcedTea,这是被自由软件基金会推荐的,或者使用 Azul System Zulu。

写在最后

现在你正面临很严峻的问题:该如何选择? 一些开发者会选择 OpenJDK 社区,因为可以根据自身需要进行修改它的任意元素来让他们的代码可以正常运行。但正如前面 Ben 提到的,使用 OpenJDK 可能会引发很多很奇怪的问题。

不管怎样,这是你自己的选择,我们都知道许可证条款无法阻止任何人使用一个特定的产品,也无法阻止你使用特定产品。我们只会将其中的问题向你详细的解释,让你知道在下一个项目中该如何做决策!

本文来自:开源中国
  • 大小: 61 KB
来自: 开源中国
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 频频曝出程序员被抓,我们该如何避免面向“监狱”编程?

    点击上方“Java精选”,选择“设为星标”别问别人为什么,多问自己凭什么!下方有惊喜留言必回,有问必答!每天08:15更新文章,每天进步一点点...这几年,经常有程序员违法被抓后,消息...

  • java技术点

    推荐: 《Java技术书籍大全》 - awesome-java-books 从初级开发者到资深架构师,看这些书就够了 数据结构 队列 集合 链表、数组 字典、关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 二叉查找树(BST) 红黑...

  • Java后端架构师技术图谱

    实现读写分离,读取发生在原始数据上,写入发生在副本上。 不用加锁,通过最终一致实现一致性。 《聊聊并发-Java中的Copy-On-Write容器》 RingBuffer 《线程安全的无锁RingBuffer的实现【一个读线程,...

  • 后端架构师技术图谱

    看到github上一篇超炫的博文,是阿里工程师总结的《后端架构师技术图谱》,分享给大家。\ 数据结构 队列 集合 链表、数组 字典、关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 二叉查找树...

  • 只因写了一段爬虫,公司200多人被抓!

    点击上方“民工哥技术之路”选择“星标”每天10点为你分享不一样的干货“一个程序员写了个爬虫程序,整个公司200多人被端了。”“不可能吧!”刚从朋友听到这个消息的时候,我...

  • 从初级开发者到资深架构师,看这

    (Toc generated by simple-php-github-toc )《java队列——queue详细分析》《LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue对比分析》每个节点最多有两个叶子节点。左右两个子树的高度差的绝对值不超过...

  • 资源工具分享(第1期):后端架构师技术图谱

    推荐:《Java技术书籍大全》 - awesome-java-books 从初级开发者到资深架构师,看这些书就够了 数据结构 队列 集合 链表、数组 字典、关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 ...

  • 《后端架构师技术图谱》

    推荐: 《Java技术书籍大全》 - awesome-java-books 从初级开发者到资深架构师,看这些书就够了 数据结构 队列 集合 链表、数组 字典、关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 二叉查找树(BST) 红黑树 B...

  • 【java毕业设计】智慧社区教育服务门户.zip

    有java环境就可以运行起来 ,zip里包含源码+论文+PPT, 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上

  • 基于selenium的携程机票爬虫资料齐全+详细文档+高分项目+源码.zip

    【资源说明】 基于selenium的携程机票爬虫资料齐全+详细文档+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • 【java毕业设计】智慧社区宠物管理系统(源代码+论文+PPT模板).zip

    zip里包含源码+论文+PPT,有java环境就可以运行起来 ,功能说明: 文档开篇阐述了随着计算机技术、通信技术和网络技术的快速发展,智慧社区门户网站的建设成为了可能,并被视为21世纪信息产业的主要发展方向之一 强调了网络信息管理技术、数字化处理技术和数字式信息资源建设在国际竞争中的重要性。 指出了智慧社区门户网站系统的编程语言为Java,数据库为MYSQL,并实现了新闻资讯、社区共享、在线影院等功能。 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。

  • 免费下载:Civil War (Stuart Moore)_xVBgd.zip

    免费下载:Civil War (Stuart Moore)_xVBgd.zip

  • JSP基于WEB的图书馆借阅系统的设计与实现(源代码+论文)(2024pw).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

  • 免费下载:Spider-Man (Stefan Petrucha)_2pBuA.zip

    免费下载:Spider-Man (Stefan Petrucha)_2pBuA.zip

  • jj视频合并程序代码QZQ.txt

    jj视频合并程序代码QZQ

  • 【java毕业设计】智慧社区会员等级提升系统(源代码+论文+PPT模板).zip

    zip里包含源码+论文+PPT,有java环境就可以运行起来 ,功能说明: 文档开篇阐述了随着计算机技术、通信技术和网络技术的快速发展,智慧社区门户网站的建设成为了可能,并被视为21世纪信息产业的主要发展方向之一 强调了网络信息管理技术、数字化处理技术和数字式信息资源建设在国际竞争中的重要性。 指出了智慧社区门户网站系统的编程语言为Java,数据库为MYSQL,并实现了新闻资讯、社区共享、在线影院等功能。 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。

  • jsp医院病区管理系统(论文+中期检查表+任务书+综合材料)(20242g).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

  • 基于卷积神经网络的通信调制方式识别详细文档+全部资料+优秀项目+源码.zip

    【资源说明】 基于卷积神经网络的通信调制方式识别详细文档+全部资料+优秀项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • 计算机网络学习之旅.pptx

    理层、数据链路层、网络层、传输层和应用层的功能、技术和协议。同时,对网络安全、无线网络、网络管理和网络新技术进行了深入剖析。通过案例分析帮助学习者更好地理解实际应用,推荐学习资源助力深入学习。最后总结要点并展望未来网络发展趋势,为计算机网络学习者提供了丰富的知识和实用的指导。

Global site tag (gtag.js) - Google Analytics