Java是否免费/开源?


33

根据GNU通用公共许可(GPL)的条款,Sun在2006年11月13日发布了大部分Java作为自由和开源软件(FOSS)。2007年5月8日,Sun完成了该过程,除了一小部分未获得版权的代码外,所有Java核心代码都可以在自由软件/开源发行条款下获得。

OpenJDK(开放Java开发工具包)是Java编程语言的免费开源实现。这是Sun Microsystems在2006年开始的努力的结果。该实现已获得GNU通用公共许可证(GNU GPL)的许可,但有链接例外。

  • 为什么仍然有人说Java不是像言论自由那样的开源或自由的?
  • 我想念什么吗?
  • Java仍然是专有的吗?


我不完全知道仅保护Sun JVM实现,甚至保护技术(字节码),但是所有核心库(java.xy)都是免费的。因此,如果有人创建了不同的字节码规范和VM,则应免费使用现有的库。糟糕,Google与Dalvik做到了!
ern0

Answers:


37

问题是,要称呼“ Java”,您需要使其经过认证符合Java规范。

获得此证书的先决条件之一是通过测试套件-Java Technology Compatibility Kit(TCK)运行JVM 。该测试套件不是开源的。

因此,您可以构建一个具有与Java类似的行为并且完全开源的JVM,但是,如果您想将其称为“ Java JVM”,则需要购买非开源许可证下的认证套件。对于许多开源拥护者来说,这是一个完全的初学者。


7
就是停止Apache Harmony(这是一个相当完整的独立JVM实现)的原因之一。Sun / Oracle如此行事(而且仍然如此行事)真是可耻。Google所做的(“几乎复制” Java)也可能是这种情况的直接结果。
约阿希姆·绍尔

1
此外,测试套件是Java平台TCK(还有其他与Java相关的技术的TCK)。
约阿希姆·绍尔

4
此外,如果您构建成功的JVM,Oracle 可能会起诉您侵犯版权和侵犯专利。就像他们通过Android起诉Google一样。
MarkJ 2012年

2
命名法是否与开源相关?我无法创建自己的浏览器,也无法将其称为Firefox。我认为,首先要了解的问题是……Java术语,语言规范,jvm实现以及……谁将其称为非开放式……是什么意思
johannes

@johannes-欢迎打开学步车和nitpickers的开源之家!对于开源社区中的许多人来说,这些区别很重要。见证Apaches放弃Harmony项目。对于其他更实际的人来说,拥有像Java这样的环境正常工作就足够了,就像所有Android设备的核心Dalvik VM一样。
詹姆斯·安德森

15

您应先删除此答案,然后再删除要使用的答案。主要回答是:

关于Java 7,请注意JDK7和OpenJDK7将具有(几乎)相同的代码库。

通知我强调。

从该答案链接的文章:

[…]但是有些代码可以替代开源,而我们仍然使用旧的封闭源代码。这主要是在字体和图形光栅化中。老式的封闭源栅格化代码虽然很麻烦,但已经进行了10多年的错误修复和微调,并且,要想用任何开源替代来替换产品化的JDK构建中的代码,它都必须具有快速,稳定和稳定的性能。作为现有封闭代码的良好质量。

另外,来自Java常见问题解答

Java开发工具包(JDK)可免费下载和用于商业编程,但不能重新分发

因此,不是开源的。差不多了

而且,即使它是完全开源的,开发模型和治理也不会。不过,这不是许可问题。


1
“免费下载和使用但不能重新分发”表示该软件是“非免费软件”,但仍可以是“开源”。开源只是意味着您可以访问源代码。自由软件(由FSF和其他公司定义)也需要重新分发的权利。
CVn 2012年

6
@MichaelKjörlingOSI定义当然需要重新分配权限。
luiscubal 2012年

1

在1997年,Sun Microsystems向ECMA寻求使Java正式化的权利,但不久它退出了该过程。Java标准实际上是通过Java Community Process控制的。

尽管在2006年,大多数Java由Sun Microsystems根据GPL条款发布,但当前的正式实现由Oracle拥有。

由于Java缺乏ECMA,ISO / IEC,ANSI或其他第三方标准组织认可的任何正式标准化,因此Oracle实现是事实上的标准。但是,还有其他实现,例如Java的GNU编译器,GNU类路径,IcedTea-Web等。


7
-1:从Java 7开始,官方参考实现是GPL的OpenJDK。
Michael Borgwardt 2013年

2
谈论Java,您会得到-1 :( OpenJDK是开源的,但Java.com上的实现是BCL,如上所述和此处首先,与Apache Harmony相比,我们的政策没有变化。OCTLA是允许免费使用的程序可以使用GPL许可的OpenJDK衍生实现访问TCK,仅用于此目的;其次,Oracle实施(在java.com或java.oracle.com上找到的内容)将仅受BCL许可。是完全清楚,在OpenJDK源代码遗体下GPL。
萨贾德Deyargaroo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.