自由的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).