阅读更多

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

  • 级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均

    级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不

  • GTX 1080 PCB图纸

    GTX 1080 PCB图纸,内含图纸查看软件

  • 深度优化与应用:提升DeepSeek润色指令的有效性和灵活性指南

    内容概要:本文档详细介绍了利用 DeepSeek 进行文本润色和问答交互时提高效果的方法和技巧,涵盖了从明确需求、提供适当上下文到尝试开放式问题以及多轮对话的十个要点。每一部分内容都提供了具体的示范案例,如指定回答格式、分步骤提问等具体实例,旨在指导用户更好地理解和运用 DeepSeek 提升工作效率和交流质量。同时文中还强调了根据不同应用场景调整提示词语气和风格的重要性和方法。 适用人群:适用于希望通过优化提问技巧以获得高质量反馈的企业员工、科研人员以及一般公众。 使用场景及目标:本文针对所有期望提高 DeepSeek 使用效率的人群,帮助他们在日常工作中快速获取精准的答案或信息,特别是在撰写报告、研究材料准备和技术咨询等方面。此外还鼓励用户通过不断尝试不同形式的问题表述来进行有效沟通。 其他说明:该文档不仅关注实际操作指引,同样重视用户思维模式转变——由简单索取答案向引导 AI 辅助创造性解决问题的方向发展。

  • 基于FPGA与W5500实现的TCP网络通信测试平台开发-Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivad

    基于FPGA与W5500实现的TCP网络通信测试平台开发——Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivado 2019软件的扩展开发,基于FPGA和W5500的TCP网络通信 测试平台 zynq扩展口开发 软件平台 vivado2019.2,纯Verilog可移植 测试环境 压力测试 cmd命令下ping电脑ip,同时采用上位机进行10ms发包回环测试,不丢包(内部数据回环,需要时间处理) 目前实现单socket功能,多路可支持 ,基于FPGA; W5500; TCP网络通信; Zynq扩展口开发; 纯Verilog可移植; 测试平台; 压力测试; 10ms发包回环测试; 单socket功能; 多路支持。,基于FPGA与W5500的Zynq扩展口TCP通信测试:可移植Verilog实现的高效网络通信

  • Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警及记录、自动实验、数据处理与查询存储,报表生成与打印一体化解决方案 ,Labview液压比例阀

    Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警及记录、自动实验、数据处理与查询存储,报表生成与打印一体化解决方案。,Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警管理及实验自动化,labview液压比例阀伺服阀试验台程序:功能包括,同PLC通讯程序,液压动画,手动控制及调试,传感器标定,报警设置及报警记录,自动实验,数据处理曲线处理,数据库存储及查询,报表自动生成及打印,扫码枪扫码及信号录入等~ ,核心关键词:PLC通讯; 液压动画; 手动控制及调试; 传感器标定; 报警设置及记录; 自动实验; 数据处理及曲线处理; 数据库存储及查询; 报表生成及打印; 扫码枪扫码。,Labview驱动的智能液压阀测试系统:多功能控制与数据处理

  • 华为、腾讯、万科员工职业发展体系建设与实践.pptx

    华为、腾讯、万科员工职业发展体系建设与实践.pptx

  • 基于遗传算法的柔性车间调度优化 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

  • 电网不对称故障下VSG峰值电流限制的柔性控制策略:实现电流平衡与功率容量的优化利用,电网不对称故障下VSG峰值电流限制的柔性控制策略:兼顾平衡电流与功率控制切换的动态管理,电网不对称故障下VSG峰值电

    电网不对称故障下VSG峰值电流限制的柔性控制策略:实现电流平衡与功率容量的优化利用,电网不对称故障下VSG峰值电流限制的柔性控制策略:兼顾平衡电流与功率控制切换的动态管理,电网不对称故障下VSG峰值电流限制的柔性不平衡控制(文章完全复现)。 提出一种在不平衡运行条件下具有峰值电流限制的可变不平衡电流控制方法,可灵活地满足不同操作需求,包括电流平衡、有功或无功恒定运行(即电流控制、有功控制或无功控制之间的相互切),注入电流保持在安全值内,以更好的利用VSG功率容量。 关键词:VSG、平衡电流控制、有功功率控制、无功功率控制。 ,VSG; 峰值电流限制; 柔性不平衡控制; 电流平衡控制; 有功功率控制; 无功功率控制。,VSG柔性控制:在电网不对称故障下的峰值电流限制与平衡管理

  • libpinyin-tools-0.9.93-4.el7.x64-86.rpm.tar.gz

    1、文件内容:libpinyin-tools-0.9.93-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libpinyin-tools-0.9.93-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

  • 机器学习(预测模型):动漫《龙珠》相关的数据集

    数据集是一个以经典动漫《龙珠》为主题的多维度数据集,广泛应用于数据分析、机器学习和图像识别等领域。该数据集由多个来源整合而成,涵盖了角色信息、战斗力、剧情片段、台词以及角色图像等多个方面。数据集的核心内容包括: 角色信息:包含《龙珠》系列中的主要角色及其属性,如名称、种族、所属系列(如《龙珠》《龙珠Z》《龙珠超》等)、战斗力等级等。 图像数据:提供角色的图像资源,可用于图像分类和角色识别任务。这些图像来自动画剧集、漫画和相关衍生作品。 剧情与台词:部分数据集还包含角色在不同故事中的台词和剧情片段,可用于文本分析和自然语言处理任务。 战斗数据:记录角色在不同剧情中的战斗力变化和战斗历史,为研究角色成长和剧情发展提供支持。 数据集特点 多样性:数据集整合了角色、图像、文本等多种类型的数据,适用于多种研究场景。 深度:不仅包含角色的基本信息,还涵盖了角色的成长历程、技能描述和与其他角色的互动关系。 实用性:支持多种编程语言(如Python、R)的数据处理和分析,提供了详细的文档和示例代码。

  • 基于protues仿真的多功公交站播报系统设计(仿真图、源代码)

    基于protues仿真的多功公交站播报系统设计(仿真图、源代码) 该设计为基于protues仿真的多功公交站播报系统,实现温度显示、时间显示、和系统公交站播报功能; 具体功能如下: 1、系统使用51单片机为核心设计; 2、时钟芯片进行时间和日期显示; 3、温度传感器进行温度读取; 4、LCD12864液晶屏进行相关显示; 5、按键设置调节时间; 6、按键设置报站; 7、仿真图、源代码; 操作说明: 1、下行控制报站:首先按下(下行设置按键),(下行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 2、上行控制报站:首先按上(上行设置按键),(上行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 3、按下关闭播报按键,则关闭播报功能和清除显示

Global site tag (gtag.js) - Google Analytics