2010-02-10 39 views
36

如果我從Sun JDK切換到OpenJDK,那麼我需要爲自己準備哪些驚喜?如果我從Sun JDK切換到OpenJDK,需要準備哪些驚喜?

什麼經常出錯,這有多困難?

當然,每個應用程序都可能有其個別問題,但我正在尋找類別的問題,這是很多人在切換JDK時已經遇到的問題。

+0

如果你可以爲他們做準備,那麼他們並不意外;-) – 2010-02-10 12:25:27

+1

更嚴肅的說明:如果你告訴我們你的應用程序做了什麼,那麼你可能會得到更有針對性的答案。 – 2010-02-10 12:26:00

+1

如果發生錯誤,您將能夠修改JVM代碼。這不令人驚訝嗎? – 2010-02-10 12:26:08

回答

11

OpenJDK不太可能出現任何問題。現在認爲它是100%兼容的。但我認爲知道哪些部分必須重寫並因此不使用與SunJDK相同的代碼是很好的。

Wikipedia entry對此有着很好的概述:

正如2008年5月的,即保持專有的和閉源(4%爲2007年5月爲OpenJDK 7的類庫的唯一部分,和不到1%,截至2008年5月和OpenJDK 6)是SNMP的實施。

因爲第一2007年5月發佈,Sun微系統,在社會各界的幫助下,已作爲免費和開源軟件或免費和開放源代碼的替代品,幾乎所有擔保的代碼替換:

  • 包括軟件合成器在內的所有音頻引擎代碼已經作爲開源發佈。閉源軟件合成器已經取代專爲OpenJDK的所謂Gervill開發出一種新的合成,

  • 類庫中已經發布爲開放源代碼使用的所有加密類,

  • 可以擴展的代碼並且柵格化字體已被FreeType取代

  • 原生色彩管理系統已被LittleCMS取代。 JDK中有一個可插入圖層,因此商業版本可以使用舊的色彩管理系統,OpenJDK可以使用LittleCMS。

  • anti-aliasing圖形柵格化程序代碼已被phoneME項目中使用的Open-sourced Pisces渲染程序代替。此代碼功能齊全,但仍需要一些性能增強功能,但該插件已經開源(Rhino JavaScript引擎本身從一開始就是開源的)。

+2

大多數Linux發行版中包含的OpenJDK不是100%兼容的。 Java Sound的實現來自IcedTea,它的行爲與Sun的不同。例如,如果您嘗試寫入封閉線(即幾乎所有現有Java Sound代碼的工作原理)(例如JavaZOOM,jsresources.org),則會引發異常。隨着字體渲染的困難,我會稱之爲「僅」98%兼容。 – 2010-05-05 18:23:07

2

由於OpenJDK是一個基於原始Java源代碼的Sun項目,所以我不會期望很多問題。唯一可以破解的地方是必須替換的代碼(因爲它不能在GPL下發布)或者因爲新功能而改變(但這些應該與官方JDK中的幾乎相同)。

+1

「唯一可以破解的地方是必須替換的代碼」 - 您是否碰巧知道這些區域是什麼? – Paolo 2010-02-10 15:52:16

3

據我所知字體看起來亂碼,太陽已經下山了,因爲他們沒有「開源」和JVM會使用一些默認這是不是很好,從OpenJDK的去除原有的...

+0

是的,這是我們遷移時遇到的最大問題。 – 2010-02-10 23:49:18

+0

經過一些測試,這是我遇到的OpenJDK唯一的問題。 JasperReports幾乎不可用。 – 2012-01-04 19:15:55

1

使用OpenJDK的構建已知通過TCK以減少驚喜。

1

一些擺動UI的不匹配完全(金屬有這樣的人過剛aenough注意填充)。請注意,這是8個月前。

1

linux下的OpenJDK(IcedTea)applets是主要疼痛。我正在爲遠程調試一段相當生鏽的代碼而苦苦掙扎幾個小時。 Official documentation關於如何附加到瀏覽器中的小程序根本不適用於我。默認情況下沒有Java控制檯,順便說一句。我正在認真考慮複製applet配置並使用JDK內置的applet查看器,而不是試圖調試瀏覽器託管的JVM。

UPD:我不太確定OpenJDK本身沒有瀏覽器插件。也許這最近改變了。

+0

約瑟夫達西在2009年的博客中稱,瀏覽器插件會獲得開源(https://blogs.oracle.com/darcy/entry/openjdk_and_the_new_plugin),但它從未如此,並且在2010年7月,他告訴我沒有路線圖到什麼時候。 – damjan 2013-03-11 18:21:23

-1

由於IcedTea的原因,OpenJDK比Oracle二進制文件更安全。