2006年11月14日快訊,太平洋標准時間2006年11月13日,Sun正式宣布使用GPLV2許可證開放Java SE和Java ME源代碼。
公告宣稱,此次開源內容包括Sun的Java SE和Java ME實現;但不包括Java語言、Java規范和TCKs。隨公告還發布了Sun計劃的Java開源時間表。按照該時間表,Sun會在13日宣布Java 開源適用的許可證,並且發布第一個Java SE代碼發布版和可構建的Java ME代碼發布版,同時宣布對應開源社區的成立;緊接著在12月,Java SE 6 GA版發布;在明年4月,發布可構建的JDK。
之前被反復猜測的許可證問題,終於定在了GPLV2,而不是用在OpenSolaris上的CDDL。經典GPLV2許可證的特殊在於,首先,假如你創建 的程序中使用了任何采用GPL許可證的代碼,那麼你的程序必須也遵循GPL協議;第二,不能向使用GPL程序的用戶收費。毫無疑問,Java采用GPL打 擊了相當一部分廠商,但同時會獲得F/OSS(免費與自由軟件社區)相當的好感。最顯著的一點改變就是,現在在任何Linux發布版中都可以包含Java 代碼了,而在此之前,只有采用GPL的perl/python才可以。
Sun還強調了一個例外,即Classpath。我們知道開源 社區中有很多Java SE的實現,如GNU/Classpath,和Kaffe VM;現在Sun的Java SE全部采用GPL,除了這個例外:你可以發布使用開源JRE的Java程序,卻不用GPL你的代碼——這和LGPL十分類似——可以說Sun的開源方式 已經和FSF十分接近。
我們再來看看開源的具體內容。先看Java SE方面。Sun宣布在第一次的代碼發布中,開源的組件包括:javac編譯器、虛擬機、字節碼編譯器、垃圾回收、線程和安全部分。第一個代碼發布版來自 於JDK7的最初構建。它基本上就是JDK6的最終發布版代碼。2007年春天將發布的包括,JDK6和JDK7的所有非保留模塊的源代碼和完整的構建腳 本,保留不開源的模塊將會以二進制包的形式發行。所以,真正的革新發生在JDK7。有小部分的源代碼將保留不開源,它們基本上都在Java 2D部分,包括ICC色彩管理庫以及字體、圖形rasterizer。
Java ME方面的開源也很徹底。11月,開源基於CLDC的主要手機實現和ME基礎框架;十二月底,高級操作系統手機實現,包括基於CDC/FP/PBP的設 備、手持設備、機頂盒和Blu-ray設備。明年二月,Java設備測試框架開源。部分牽涉到合作廠商的部分,Sun承諾會和J2SE一樣,盡量溝通協 調,促進盡快開源。
然而,Sun對Java的所有基礎這樣開源,並非表示Sun要完全放任Java。Sun在公報中強調,JCP的角 色沒有變,流程也沒有變。Sun的目標是給社區提供更多的選擇。選擇Sun提供的商業發行版Java SE和Java ME,用戶將以較少定制化的代價換取高效、穩定、安全、完整的支持和更新;用戶也可以選擇開源的代碼DIY,那樣你能最大的程度定制化Java,但必須為 此花費人工,並且要自己克服低質量和低效率。
Sun表示,開源版本的Java SE和ME將分別在Java.net上以OpenJDK和MobileAndEmbedded社區形式存在。Sun計劃利用新的技術(如將會用 Mercurial代碼管理工具作為新社區的基礎)加上完備貢獻管理協定,構建出一套全新的、完備的Java開源社區。並且將在適當時候, GlashFish和Java EE的許可證也將改為GPL。另外需要說明的是,仍然只有Sun才有權使用Java相關的商標,但Sun給通過TCK的Java程序提供專門的Logo。