我不认识仍在使用Oracle JDK的任何人。我的建议已经有一段时间了,只是切换到OpenJDK发行版,因为它们大致替换了Oracle的官方JDK。我经常重复此建议,但我想我已经掩盖了许多细节,这些细节可能对黑客来说微不足道,但在企业环境中可能会变得很大。
在review from Bazlur之后,我选择也拿起Simon Ritter'sOpenJDK Migration for Dummiesâ。这本书有两件事反对:
-
对于假人 - 我以前从未读过其中之一,也从未考虑过阅读这些内容。尽管它确实使用过度简化的语言,但我认为虚拟品牌会伤害这本书。该主题是精致的,并针对可以跟随细微差别的开发人员(和Devops)。我认为这可能会阻止某些开发人员阅读它,这是可惜的。
-
这是一本公司书-Imon是Azul的副首席技术官。这引起了合理的关注,即这本书是Azul产品的促销。它有那些。但是阅读它后,材料似乎是客观的和有价值的。
它确实具有一个优势:我们免费获得这本书。
独特的分析
有很多Java书籍,但这是我第一次读一本书来解释这些特定主题。第一章讨论许可,TCK(测试兼容套件)和类似问题。自从我为Sun Microsystems和Oracle工作以来,我都熟悉所有这些,我有一个团队为Sun Microsystems的移动平台组成TCK。但是,即使是在阳光下的经验丰富的工程师也可能不熟悉这些测试。
TCK是我们验证OpenJDK端口仍然与Java兼容的方式。该书说明了为什么由于TCK而可以信任著名的OpenJDK发行版。如果您深入参与JV。
西蒙很好地解释了当前TCK的范围(Java 11的139k测试),但我认为他错过了一个重要方面:TCK没有执行。 Oracle不知道您运行了TCK,这可以验证这一点。这就是为什么OpenJDK供应商必须享有良好的声誉和对基础质量质量质量的过程的理解。
这仅仅是开始,但几乎每章都涵盖了我在其他书籍中看到的材料。
作为旁注,整个TCK创建过程非常疯狂。我团队中的工程师会像宗教学者一样越过爪哇骑兵,并在贾瓦多克(Javadoc)发表的每一个声明或贾瓦多克(Javadoc)暗示的情况下填满Excel床单。然后设计测试以孤立地验证每个陈述的确是正确的。从这个意义上讲,TCK没有测试质量。它可以测试符合统一,一致标准的依从性。 JDK跑了一周后可能会失败,我们可能无法单独运行TCK,JDK 8的早期发行在当时确实做到了。
从虚拟书中学习
我在这篇文章顶部提到,我将OpenJDK迁移随便地视为置换式替代品。这本书使我相信,并非总是如此,有一些细微差别。我随便意识到其中大多数,例如我当天与双鱼座一起工作了很多,但是我从未在一个地方看到所有这些细微差别。
这是考虑这种类型迁移的任何人的重要列表。在开始这种迁移之前,应该梳理这些并验证风险。作为一家创业公司,您可能不在乎确切的字体或NTLM支持,但是在企业环境中,仍然有一些项目可能依赖于此。
在比较各种OpenJDK发行版的后章中,Simon包括了一个很好的图表,说明了差异。考虑到Simon为Azul工作,在图表中很明显。尽管如此,图表的内容还是非常准确的。我错过了比较中的Microsoft VM,但我想它有点新,无法注册为主要供应商。
与业务相关的方面
我经常为大型组织做咨询工作。例如银行,保险公司等。在这些组织中,商业支持至关重要。我曾经嘲笑那个概念,但是当我遇到这些组织遇到的一些边缘案例时,我明白了。我们有IBM Debug AIX和WebSphere问题的高级工程师。
同样,我与之合作的银行在较新版本的摇摆版本中遇到了RTL支持问题。随着年龄较大的JDK接近生命周期的终结,他们被迫迁移,但无法解决这些问题。在这种情况下,Oracle对这些问题的支持是一个愚蠢的。对JVM的商业支持是我曾经需要或想购买的东西,但我了解动力。
在本书的最后,西蒙更详细介绍了可以在OpenJDK发行版本顶部分层的额外值。这对我来说很有趣,因为我经常不了解它的自由商业模式。它帮助我俩都了解了发行(和维护)OpenJDK发行的动机。当我与大型组织合作时,这也很有价值,我可以更好地建议他们可以为Java提供的价值(例如,快速响应零日等)。
谁应该读这本书?
这不是每个人的书。如果您使用Oracle JDK,则需要捡起它并进行查看。确保您选择Oracle JDK的原因仍然有效,它们可能会遇到。如果您的工作包括选择JDK进行配置或开发,则应确保您熟悉书中的材料。
如果您只是学习Java或以业余爱好能力使用Java,那么Java历史上的附录可能对您来说很有趣。但是,整个书可能更针对处理生产的开发人员。在这方面,它对服务器和桌面开发人员都有用。
顺便说一句,如果您或您认识的人有兴趣学习Java,请查看my new book for learning Java。