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