如果我从Sun JDK切换到OpenJDK,有什么需要准备的呢?

如果我从Sun JDK切换到OpenJDK,那么我需要为自己准备什么惊喜?

经常出现什么问题,这有多困难?

当然,每个应用程序都可能有其个别的问题,但是我正在寻找一些问题 ,这是很多人在转换JDK时已经遇到过的。

OpenJDK不太可能出现任何问题。 现在被认为是100%兼容。 但是我认为知道哪些部分需要重写,因此不使用与SunJDK相同的代码是很好的。

维基百科条目有一个很好的概述:

截至2008年5月,类库的唯一部分仍然是专有的和闭源的(截至2007年5月,OpenJDK 7为4%,截至2008年5月和OpenJDK 6还不足1%)是SNMP实现。

自2007年5月1日发布以来,Sun Microsystems在社区的帮助下,已经发布了免费和开放源代码软件,或者用免费和开放源代码替代了几乎所有的安全代码:

  • 包括软件合成器在内的所有audio引擎代码已经以开源方式发布。 闭源软件合成器已经被专门为OpenJDK开发的名为Gervill的新合成器所取代,

  • 类库中使用的所有encryption类已经作为开源发布,

  • 缩放和栅格化字体的代码已被FreeType取代

  • 原生色彩pipe理系统已被LittleCMS所取代。 JDK中有一个可插入的图层,所以商业版本可以使用旧的颜色pipe理系统,OpenJDK可以使用LittleCMS。

  • anti-aliasinggraphics栅格化程序代码已被phoneME项目中使用的Open-sourced Pisces渲染器所取代。 此代码function完善,但仍需要一些性能增强function,

  • JavaScript插件已经开源(犀牛JavaScript引擎本身从一开始就是开源的)。

据我所知字体会看起来乱码,Sun必须从OpenJDK中删除原来的,因为它们不是“开源”,JVM将使用一些不那么好的默认…

由于OpenJDK是基于原始Java源代码的Sun项目,所以我不会期望很多问题。 唯一可能破坏的地方是必须replace的代码(因为它不能在GPL下发布)或者由于新特性而改变(但是这些应该和官方的JDK几乎相同)。

使用已知的OpenJDK构build通过TCK,以尽量减less意外。

一些摆动的用户界面完全不匹配(金属有衬垫,只是很容易注意到)。 请注意,这是8个月前。

在Linux下的OpenJDK(IcedTea)小程序是一个主要的痛苦 。 我正在努力远程debugging一段相当生锈的代码已经几个小时了。 有关如何在浏览器中附加到applet的官方文档根本不适用于我。 没有默认的Java控制台,顺便说一句。 我正在认真考虑复制appletconfiguration,并使用JDK内置的applet查看器,而不是试图debugging浏览器托pipe的JVM。

UPD :我不太确定OpenJDK本身没有浏览器插件。 也许这最近改变了。

由于IcedTea,OpenJDK比Oracle二进制文件更安全。