Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我从Sun JDK切换到OpenJDK,我需要为哪些惊喜做好准备?_Java_Openjdk - Fatal编程技术网

Java 如果我从Sun JDK切换到OpenJDK,我需要为哪些惊喜做好准备?

Java 如果我从Sun JDK切换到OpenJDK,我需要为哪些惊喜做好准备?,java,openjdk,Java,Openjdk,如果我从Sun JDK切换到OpenJDK,我需要为哪些惊喜做好准备 经常出错的是什么?这有多困难 当然,每个应用程序都可能有各自的问题,但我正在寻找问题的类别,这是许多人在切换JDK时一直在努力解决的问题。因为OpenJDK是一个基于原始Java源代码的Sun项目,所以我不希望出现很多问题。唯一可能出现问题的地方是必须替换的代码(因为它不能在GPL下发布)或由于新功能而进行的更改(但这些应该与官方JDK中的基本相同)。我知道字体看起来会乱七八糟,Sun不得不从OpenJDK中删除原始版本,因为

如果我从Sun JDK切换到OpenJDK,我需要为哪些惊喜做好准备

经常出错的是什么?这有多困难


当然,每个应用程序都可能有各自的问题,但我正在寻找问题的类别,这是许多人在切换JDK时一直在努力解决的问题。

因为OpenJDK是一个基于原始Java源代码的Sun项目,所以我不希望出现很多问题。唯一可能出现问题的地方是必须替换的代码(因为它不能在GPL下发布)或由于新功能而进行的更改(但这些应该与官方JDK中的基本相同)。

我知道字体看起来会乱七八糟,Sun不得不从OpenJDK中删除原始版本,因为它们不是“开源”的,JVM将使用一些不太好的默认版本

使用已知能通过TCK的OpenJDK构建来最小化意外。

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

对这方面有很好的概述:

截至2008年5月,类库中唯一保留专有和封闭源代码的部分(截至2007年5月,OpenJDK 7占4%,截至2008年5月和OpenJDK 6不到1%)是SNMP实现

自2007年5月第一次发布以来,Sun Microsystems在社区的帮助下,以免费开源软件的形式发布,或以免费开源的替代方案取代了几乎所有的累赘代码:

  • 所有的音频引擎代码,包括软件合成器,都是开源的。封闭源代码软件合成器已被一种专门为OpenJDK开发的名为Gervill的新合成器所取代

  • 类库中使用的所有加密类都已作为开源发布

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

  • 本地颜色管理系统已被LittleCMS取代。JDK中有一个可插入层,因此商业版可以使用旧的颜色管理系统,OpenJDK可以使用LittleCMS

  • 反走样图形光栅化器代码已被phoneME项目中使用的开源双鱼座渲染器所取代。这段代码功能齐全,但仍需要一些性能增强

  • JavaScript插件是开源的(Rhino JavaScript引擎本身从一开始就是开源的)


一些swing用户界面并没有完全匹配(金属有衬垫,只是没注意到)。请注意,这是8个月前的事了。

linux下的OpenJDK(IcedTea)小程序是一大难题。我已经花了几个小时在远程调试一段相当生疏的代码。关于如何在浏览器中附加到小程序的问题对我来说根本不起作用。顺便说一句,默认情况下没有java控制台。我正在认真考虑复制小程序配置并使用JDK内置的小程序查看器,而不是尝试调试浏览器托管的JVM


UPD:我不太确定OpenJDK本身是否没有浏览器插件。这可能是最近发生的变化。

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

如果你能做好准备,那么它们就不会令人惊讶;-)更严肃的一点是:如果你告诉我们你的应用程序做了什么,那么你可能会得到更集中的答案。如果JVM代码工作不好,你将能够修改它。这不奇怪吗?Sun被甲骨文收购了。所以OpenJDK的未来在我看来并不光明。任何评论。@gpampara:如果Oracle放弃它,我希望有人能把它捡起来。有足够多的人想要一个免费/开源的JDK来维持它的运行。“唯一可能出现问题的领域是必须替换的代码”-你知道这些领域是什么吗?是的,这是我们迁移时遇到的最大问题。经过一些测试,这是我在OpenJDK中遇到的唯一问题。JasperReports几乎无法使用。大多数Linux发行版中包含的OpenJDK不是100%兼容的。Java声音的实现来自IcedTea,其行为与Sun的不同。例如,如果您试图写入一个封闭行,它会抛出一个异常,这就是几乎所有现有Java声音代码的工作方式(例如,JavaZOOM、jsresources.org)。由于字体呈现困难,我认为它“仅”98%兼容。Joseph Darcy在2009年的博客中说,浏览器插件将获得开源(),但从来没有,2010年7月,他告诉我,没有一个何时实现的路线图。