阅读更多

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...

  • 2023年7月抖音美妆品牌社媒营销电商分析报告-里季、VC美妆、娇润泉

    本文详细分析了2023年7月抖音平台上美妆品牌「里季、VC美妆、娇润泉」的社媒营销和电商业绩。通过对销售额、直播销售、视频销售、热门商品、粉丝画像等方面的深入剖析,揭示了各品牌在抖音平台的成功之道。里季凭借创始人紫橙董事长的直播带货取得显著成绩,VC美妆则依靠素颜霜爆款和品牌自播,娇润泉通过洁面乳和精华液的推广,借助尾部达人视频切片和头部达人直播实现销售增长。

  • subscription-manager-rhsm-certificates-1.28.21-3.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统subscription-manager-rhsm-certificates-1.28.21-3.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subscription-manager-rhsm-certificates-1.28.21-3.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

  • 力士乐驱动调试软件13v16中文版:伺服驱动与液压同步调试的技术详解及应用

    内容概要:本文详细介绍了力士乐驱动调试软件13v16中文版的特点及其在伺服驱动和液压同步调试中的应用。软件具有中文界面,便于理解和操作,涵盖参数设置、监控、诊断和调试四大模块。参数设置模块支持通过输入数值或拖动滑块调整电机速度和加速度;监控模块提供实时数据监测和图表展示;诊断模块帮助排查和解决问题;调试模块适用于高级调试如PID参数调整。此外,文中还分享了多个实用技巧,如批量修改参数、故障代码速查、动态链接库调用等。 适合人群:从事工业自动化、机电一体化领域的工程师和技术人员,尤其是对伺服驱动和液压控制系统有一定经验的人群。 使用场景及目标:①用于伺服驱动系统的调试,确保电机参数正确配置和稳定运行;②用于液压同步控制项目的调试,提高同步精度;③通过丰富的案例和技巧分享,帮助用户高效解决常见问题,提升工作效率。 其他说明:本文不仅介绍了软件的基本功能,还深入探讨了实际调试过程中的一些经验和技巧,为用户提供全面的指导和支持。

  • 计算机绘图-讲稿.pdf

    计算机绘图-讲稿.pdf

  • 计算机二级access历年真题及讲解.pdf

    计算机二级access历年真题及讲解.pdf

  • 计算机复习小结.pdf

    计算机复习小结.pdf

  • stubby-0.4.2-2.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统stubby-0.4.2-2.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf stubby-0.4.2-2.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

  • 计算机二级C语言历年真题.pdf

    计算机二级C语言历年真题.pdf

  • MATLAB中ELMAN神经网络对红酒数据集分类的应用与实现

    内容概要:本文详细介绍了一种利用ELMAN神经网络对红酒数据集进行分类的方法及其MATLAB实现。首先介绍了红酒数据集的特点以及数据预处理步骤,包括数据读取、特征提取、归一化等。接着阐述了ELMAN神经网络的基本概念及其在处理时间序列和模式识别方面的优势。随后展示了如何在MATLAB中创建、配置和训练ELMAN神经网络,包括设置网络结构、选择合适的训练参数等。最后通过评估模型性能,计算分类准确率,并绘制混淆矩阵来展示实验结果。此外还提供了代码优化建议,如调整网络参数、改进数据处理方法等。 适合人群:对机器学习尤其是神经网络感兴趣的初学者,以及有一定MATLAB编程基础的研究人员。 使用场景及目标:适用于想要了解ELMAN神经网络的工作原理及其应用的人群;希望通过具体案例掌握如何使用MATLAB实现神经网络建模和训练的技术人员。 其他说明:文中提供的代码可以直接运行,用户可根据自身需求修改数据源、调整网络参数等,从而应用于不同的分类任务。同时,对于非时序数据也可以考虑采用其他类型的神经网络以提高效率。

  • 数据结构C/C++实现代码

    数据结构C/C++实现代码,供参考学习,练习,用于面试考试

Global site tag (gtag.js) - Google Analytics