跳转到内容

自由的Java实现

维基百科,自由的百科全书

自由的Java实现是用来实现Oracle Java,并在自由软件许可证下发布的软件。Sun公司在2007年5月将大部分Java的实现代码以开源协议发布,所以Oracle Java基本上是开源实现[1],但是从2019年4月16日起,Oracle Java颁布了新的许可协议[2],这将会对Oracle Java的商业使用造成影响[3]。Java实现包括编译器、运行时、类库等。自由软件的倡导者们将自由的Java虚拟机称为自由Java运行时自由的运行时

一些自由软件运动的倡导者不愿意使用“Java”一词,因为它存在版权问题[4]。因此,即使是“自由Java运动”,他们也避免使用“自由Java运行时”一词。

20世纪90年代中期到2006年

[编辑]

第一个提供大量Java平台功能的自由软件项目是Guavac,它在1995年11月左右开始。[5][6]此后,自由软件运动开发了其他Java编译器,最著名的是GNU Java编译器。其他还包括由Eclipse基金会维护的Eclipse Java编译器(ECJ)和不再积极维护的Jikes。从GCC4.3开始,GCJ(GCC所附带的Java编译器)使用ECJ解析器前端来解析Java,但GCJ于不久后停止开发。[7]

自由的运行时的例子则包括Kaffe、SableVM和gcj。

GNU Classpath是Java的主要自由类库。大多数自由的运行时都使用GNU Classpath作为其类库。

2005年5月,Apache Harmony宣布成立,然而,该项目选择了Apache许可证,而Apache许可证在当时与所有现有的自由Java实现不兼容。

2005年5月的另一个事件是OpenOffice.org宣布OpenOffice 2.0将依赖于某些特定的Java功能,而这些功能是自由软件实现无法提供的。在争议之后,OpenOffice.org采用了一个指导方针,要求它能够与自由的Java实现相兼容。

在2006年11月之前已经与自由软件Java实现合作的著名应用程序包括OpenOffice.org和Vuze,这两个应用程序都可以使用GCJ编译。

2006年11月的公告

[编辑]

2006年11月13日,Sun公司根据GNU General Public License发布了其编译器javac[8]

截至2007年9月,Sun除了释出javac外,也将 HotSpot 和几乎所有Java Class Library的程式码作为自由软件发布。

根据他们承诺于2007年上半年基本完全基于自由和开放源代码代码释出一个完全可构建的JDK[9] Sun 于2007年5月8日释出了类库的完整源代码,除了一些有限的部分,这些部分是由Sun 从第三方获得许可,这些第三方不希望他们的代码在自由软件许可下释出。[10] Sun已经表示,它的目标是用替代实现来取代其余专有和封闭源代码的部分,并使类库完全免费和开源。由于JDK中有一些受限代码,Sun将继续在商业发行版中使用该代码,直到被完全功能齐全的免费和开源替代方案取代为止。

2007年5月的代码发布之后

[编辑]

截至2008年5月,类别库中仅有的专有部分是(在OpenJDK 7中截至2007年5月占4%,[11][12]在OpenJDK 6中截至2008年5月占不到1%[13][14])是SNMP实现部分。[15]

自2007年5月首次发布以来,太阳微系统在社区的帮助下,已经释出了几乎所有受限制的程式码,并提供了免费软件(或替代的免费软件)。

  • 所有音频引擎代码,包括软件合成器,都已作为开源码发布。[15][16] 专门为 OpenJDK 开发的新合成器 Gervill 取代了封闭源软件合成器。[17]
  • 所有在该类别库中使用的密码学类别均已作为自由软件发布。[18]
  • FreeType 已取代了缩放和光栅化字体的程式码。[19][20][21]
  • LittleCMS 已取代原生的颜色管理系统。[20] 在JDK中有一个可插拔的层,因此商业版本可以使用旧的颜色管理系统,而OpenJDK可以使用LittleCMS。
  • 在phoneME项目中使用的开放源代码Pisces渲染器已取代抗锯齿图形光栅化程式码。[20][22][23] 这段程式码功能正常,但仍需要一些效能增强。[24]
  • JavaScript 插件码已开源(JavaScript 引擎自始至终都是开源的)。[25]

由于先前存在负担的元件,无法仅使用免费软件元件建构OpenJDK。为了在整个类别库变为免费之前能够做到这一点,并且能够在Fedora Core和其他自由Linux发行版中捆绑OpenJDK红帽公司已经启动了一个名为IcedTea的专案。这基本上是一个OpenJDK/GNU Classpath混合体,可以用于使用仅免费软件来启动OpenJDK。[26][27]

截至 2008 年 3 月,Fedora 9 发行版已使用 OpenJDK 6 取代 OpenJDK 7 的 IcedTea 实作。[14] 这种改变的一些声明原因包括:

  • 太阳微系统已经取代了IcedTea提供的大多数替代方案,现在所剩下的受限制代码占类库的少于1%(这段代码对运行OpenJDK并不必要)。
  • OpenJDK 6 是稳定分支,而 OpenJDK 7 不稳定,预计直到 2009 年才会发布稳定版本。
  • 太阳微系统已经获得了OpenJDK商标在Fedora中使用的许可。[来源请求]

在2008年6月,宣布IcedTea 6(作为 Fedora 9 上打包的OpenJDK版本)已通过了技术相容性套件的测试,可以宣称是完全相容的Java 6实作。[28][来源请求]

在2013年9月,Azul Systems推出了Zulu,这是一个免费的、开源的OpenJDK 版本,适用于Windows ServerMicrosoft Azure云端。后续版本增加了对Mac OS X、多个Linux版本和Java平台标准版8的支援。Zulu已经通过OpenJDK社区技术兼容性套件认证,符合Java SE 8、7和6。Core[29]

Amazon已发布了Amazon Corretto,这是一个无需费用的多平台、可投入生产使用的Open Java Development Kit发行版。它是在GPL v2下释出的,并附有Classpath Exception的GPL连结例外。Java 8Java 11的长期支持版本可用。它于2019年1月31日首次公开发布。[30]

在 2017 年,Eclipse Foundation 推出了 AdoptOpenJDK,现在更名为 Adoptium,其主要目标是 "促进并支援用于整个 Java 生态系统的高品质运行时和相关技术"

另请参阅

[编辑]

参考资料

[编辑]
  1. ^ OpenJDK and the IcedTea Project. www.redhat.com. [2019-12-16]. (原始内容存档于2021-03-08) (韩语). 
  2. ^ Oracle Java SE License. www.oracle.com. [2020-12-29]. (原始内容存档于2021-05-07) (美国英语). 
  3. ^ Oracle Java 许可重要更新. www.java.com. [2020-12-29]. (原始内容存档于2021-04-13). 
  4. ^ Java Licensing Logo Guidelines (PDF). [2020-12-29]. (原始内容 (pdf)存档于2020-12-01) (美国英语). 
  5. ^ Announcing: guavac 0.2.5, A free compiler for the Java language. 1996-09-07 [2007-06-24]. (原始内容存档于2009-08-14). 
  6. ^ Changelog of guavac, showing the first release happening in January 1996. [2007-06-24]. (原始内容存档于2007-09-28). Wed Nov 22 05:43:07 1995 […] CompilerMain.C, Compiler. C, Compiler.h, lexer.l, parser.y: Initial revision 
  7. ^ GCC 4.3 Release Series -- Changes, New Features, and Fixes. [2007-10-08]. (原始内容存档于2021-04-27). 
  8. ^ Sun picks GPL license for Java code. [2024-05-20]. (原始内容存档于2012-11-03). 
  9. ^ OpenJDK FAQ 互联网档案馆存档,存档日期2007年4月2日,.
  10. ^ Open JDK is here!. Sun Microsystems. 2007-05-08 [2007-05-09]. (原始内容存档于2012-02-07). 
  11. ^ Herron, David. Plans for OpenJDK. 2007-10-04 [2007-10-09]. (原始内容存档于2007-10-11). 
  12. ^ Fitzsimmons, Thomas. Plans for OpenJDK. 2007-05-18 [2007-05-22]. 
  13. ^ Angel, Lillian. OpenJDK to replace IcedTea in Fedora 9. 2008-03-13 [2008-04-05]. (原始内容存档于2008-04-18). 
  14. ^ 14.0 14.1 Wade, Karsten. OpenJDK in Fedora 9!. redhatmagazine.com. 2008-03-13 [2008-04-05]. (原始内容存档于2008-04-21). Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008. 
  15. ^ 15.0 15.1 OpenJDK 6 b10 source posted. 2008-05-30 [2008-06-01]. (原始内容存档于2009-06-18). 
  16. ^ audio-engine project page. [2024-05-20]. (原始内容存档于2007-05-16). 
  17. ^ Gervill - Software Synthesizer. [2008-06-01]. (原始内容存档于2011-10-04). 
  18. ^ Crypto has been added to OpenJDK. 2007-09-27 [2007-10-07]. (原始内容存档于2007-12-25). 
  19. ^ font-scaler projectpage. [2024-05-20]. (原始内容存档于2015-06-10). 
  20. ^ 20.0 20.1 20.2 Java2D project page. [2024-05-20]. (原始内容存档于2007-05-16). 
  21. ^ Freetype font rasteriser. 2007-08-07 [2007-11-24]. (原始内容存档于2009-01-07). 
  22. ^ phoneme.dev.java.net/ 互联网档案馆存档,存档日期2007-06-10.
  23. ^ graphics-rasterizer project page. [2024-05-20]. (原始内容存档于2007-05-16). 
  24. ^ Graham, Jim. Open Source rasterizer. Sun Microsystems. 2007-10-03 [2007-05-09]. (原始内容存档于2021-11-30). 
  25. ^ Javascript is encumbered and there is no javascript plugin support.. IcedTea. 2008-03-11 [2008-06-01]. (原始内容存档于2008-09-27). Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support. 
  26. ^ Andrew, Haley. Experimental Build Repository at icedtea.classpath.org. 2007-06-07 [2007-06-09]. (原始内容存档于2008-02-11). 
  27. ^ Wielaard, Mark. Experimental Build Repository at icedtea.classpath.org. 2007-06-07 [2007-06-09]. (原始内容存档于2007-06-19). 
  28. ^ Sharples, Rich. Java is finally Free and Open. 2008-06-19. (原始内容存档于2008-06-20). 
  29. ^ Core. [2024-05-20]. (原始内容存档于2015-09-21). 
  30. ^ Arun Gupta. Amazon Corretto 8 Now Generally Available. Amazon Web Services. January 31, 2019 [2019-07-25]. (原始内容存档于2024-05-20).