Java是一种开放源代码编程语言吗?


78

我知道Python,Ruby,Perl都是开源的,但是Java真的是一种开源编程语言吗?

我也曾在Google上搜索,但没有找到正确的答案。


2
好问题。JVM是开放源代码(热点)还是javac编译器之类的酷工具也开放源代码?
DC

1
OpenJDK包含工具,JVM,类库,可能还有更多。
凯文·布兰里恩

凯文:好点。我的资料来源是Wikipedia,但是JDK6的发布似乎已经过时了。en.wikipedia.org/wiki/Java_(programming_language)#History
kusma

Sun的OpenSource总部刚刚辞职。随您便。theregister.co.uk/2010/03/09/simon_phipps_quits_sun_oracle
skaffman

仅供参考,Apache Harmony是替代开源Java。但是,开发工作于2011年停止。另请参见en.wikipedia.org/wiki/Free_Java_implementations
ToolmakerSteve

Answers:


22

是的,或者最终将是这样(由于它们是在许可下使用的,因此他们可能仍在替换某些工作)。Sun致力于使其成为开源的,您可以从他们那里下载它。查看OpenJDK


9
这个答案是关于开发套件的,问题是关于语言的。
罗伯·奥克斯普林斯

22
好吧,@ Rob我认为这实际上没有道理。由于指定了所有语言,因此它们将是开源的(源是关于工作方式的规范,例如,由于C99标准,ISO C是该语言的开源)。为实现开源语言而谈论源代码更有意义。如果您要谈论的是一种语言是否允许社区对其发展提出意见,那么这可能是有道理的,但是,由于OP接受了这一答案,所以我将假设我的解释是正确的:-)
paxdiablo 2010年

Oracle-Google案正在研究Java API是否如此开放以至于Google可以在Android中复制它们。
托尔比约恩Ravn的安徒生

1
@RobOxspring:对于某些语言,“开发工具包”只是工具和附件,核心语言及其库是一个单独的实体。我想这对于Java也同样适用。(或者JDK包含了它,但具有限制性许可证。)但是,既然Sun做了一个开源版本,那么JDK包含Java类库的实现。这可以通过浏览JDK看到。例如OpenJDK的> jdk8最终浏览下降到SRC /共享/类/爪哇/ AWT / Graphics2D.java,这是Graphics2D类实际的Java代码,在版本8
ToolmakerSteve

83

编程语言不是不是自开源的,而是它的实现。是的,有Java的开源实现。Sun的Java实现(最受欢迎的一种)就是其中之一。


1
好吧,当前的“ JDK6”是“公开的”来源(在JRL,JIUL和其他可能的情况下)。OpenJDK(6-open和7)是GPL(可选,CLASSPATH例外)。
Tom Hawtin-大头钉

@Tom-我认为您没有抓住重点-问题是询问语言而不是运行时或开发套件的实现。
罗伯·奥克斯普林斯

3
为了技术上正确,Sun作为JDK的一部分发布Java实现作为开源。还有内部Sun代码和工具,它们从来都不是开源的。现在,甲骨文拥有这些专利和Sun代码,情况变得更加阴沉:甲骨文起诉Google仅是为了使用Java中的API。en.wikipedia.org/wiki/Oracle_v._Google也请考虑www.cnet.com/news/apache-foundation-quits-proprietary-java-process/“说该平台完全在Oracle的控制之下,Apache Software Foundation辞职了。 Java社区流程执行委员会。” 2010
。–工具制造商史蒂夫(Steve)2014年

更正:作为“ OpenJDK”的一部分。这与原始Sun“ JDK”不同,后者具有更多限制性许可。有关最新版本和新闻,请参见openjdk.java.net
制造商史蒂夫(Steve)

14

该语言本身的“官方” SUN实现不是,但是有一个社区驱动的过程(不确定它的工作方式如何)来提出改进该语言的建议-Java社区过程。Java开发工具和运行时也有开放的实现,例如OpenJDK


您可能需要澄清官员的意思。Sun本身正在推动OpenJDK的发展,尽管我不知道这是否会继续在Oracle之下进行。
paxdiablo

8

尚未,但即将开放开源。

资源:


https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se引用:

  • Oracle建议将Java SE的发布频率提高到每六个月一次
  • Oracle将简化开发人员,客户和消费者使用Java SE的方式
  • 从JDK 9 GA开始,Oracle计划在GPL下发布OpenJDK构建
  • Oracle已经为Java SE提出了时间驱动的发布模型,而不是历史功能驱动的模型
  • Oracle JDK将为OpenJDK贡献以前的商业功能,例如Java Flight Recorder。
  • Oracle将与其他OpenJDK贡献者合作,以使社区基础架构完整,现代化且可访问
  • Oracle JDK将继续作为商业长期支持产品
  • 一旦OpenJDK二进制文件与Oracle JDK互换(目标是2018年底),Oracle JDK将主要面向商业和支持客户。Oracle将继续增强完整的即用型应用程序的打包和分发

我们已经将Java EE移至:http : //openjdk.java.net/projects/jdk9/spec/

进一步阅读:

  1. https://blogs.oracle.com/theaquarium/opening-up-ee-update
  2. https://blogs.oracle.com/java-platform-group/java-se-offerings
  3. https://blogs.oracle.com/java/java-9-release-now-available
  4. https://blogs.oracle.com/java-platform-group/convergence-of-oracle-java-se-embedded-with-oracle-jdk

5

短语“ Java编程语言”是指Sun(现为oracle)提供的规范。Sun提供了Java虚拟机和Java编译器的参考实现。两者都不是开源的(至少不是完全像Python这样)。

但是,例如OpenJDK是JAVA编程语言的完整开源实现。可能还有更多。

大多数程序员认为Java是Sun提供的一种编程语言。我认为Sun只提供语言规范的实现,任何人都可以在任何许可下完成。


3

从Oracle America Inc诉Google LLC:3:10-cv-03561-WHA:

“ ...在本上诉中,有争议的是来自Java SE版本1.4和版本5.0的37个API程序包。我们已经得出结论,有争议的37个Java API程序包的声明代码和SSO都享有版权保护。Oracle,750 F.3d at1348。Java编程语言本身是免费的,未经许可即可使用。在这一阶段,毫无疑问,用Java编程语言编写的“ 62个类(及其某些方法)遍布必须使用Java API库中的三个软件包。否则,语言本身将失败。” 订购Denying JMOL,2016 WL 3181206,* 5。毫无疑问,任何使用Java编程语言的人都可以编写自己的预编写程序库来执行各种功能。尽管Oracle使Java平台可免费供构建应用程序(“ apps”)的程序员使用,但它设计了一种许可方案以吸引程序员,同时使该平台商业化。在相关部分,Oracle向希望在竞争平台中使用API​​或将其嵌入电子设备中的人收取许可费。为了保留“一次编写,随处运行”的理念,Oracle对被许可方提出了严格的兼容性要求。Oracle,750 F.3d,1350。Oracle还根据开源许可免费提供了一个名为“ OpenJDK”的Java版本。在* 10处订购Denying JMOL,2016 WL 3181206。但是,Oracle坚持认为OpenJDK具有重要意义:任何对OpenJDK软件包进行了改进的公司都必须“免费向Java社区免费提供这些更改”。上诉人Br。53.证据表明,到2005年,甲骨文在7亿台PC中许可了Java。尽管甲骨文从未成功使用Java开发自己的智能手机平台,但它为移动设备许可了Java SE。根据Oracle的说法,“移动设备市场特别有利可图”,以及ORACLE AMERICA,INC。诉GOOGLE LLC 10“ Java迅速成为在手机上开发和运行应用程序的领先平台。” 上诉人Br。9. ...” GOOGLE LLC 10“ Java迅速成为在手机上开发和运行应用程序的领先平台。” 上诉人Br。9. ...” GOOGLE LLC 10“ Java迅速成为在手机上开发和运行应用程序的领先平台。” 上诉人Br。9. ...”

语言的部分内容需要支付许可费用,因此这些部分似乎不是“开源” ...


1

大多数“ Java”是开源的,有一些小部分Sun没有开放的权利...请访问OpenJDK网站以获得更多信息


1

将OpenJDK下载到src文件夹后,在share文件夹中有Windows,solaris,share,linux,则可以找到类。在这里,您可以看到所有类的源代码(例如JButton)。


1

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

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

为什么仍然有人说Java不是像言论自由那样的开源或自由的?


3
因为现在它归Oracle所有。
Kshitiz Sharma 2014年

1
因为您在使用Oracle时被Oracle起诉,所以一旦开始赚很多钱。其他“显然免费的”语言则并非如此。
b264

1

Java语言是开放源代码,Sun几乎没有开放权限的细分市场...请查看更多OpenJDK


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.