JEP 265:Marlin 图形渲染器
概括
更新 Java 2D 以使用 Marlin 渲染器作为默认图形光栅器。
成功指标
Marlin 渲染器的性能必须至少与当前的图形光栅器 Pisces 一样好,并且具有相同或更好的质量和精度。在大多数基准测试中,它的表现必须明显优于双鱼座。它应该表现出优于双鱼座的多线程可扩展性。开发版本已经达到了这些目标。其他目标是在单线程性能上等于或超越闭源 Ductus 光栅器,并在质量和准确性方面与之匹配。 Marlin 已经在 MT 案例中展示了比 Ductus 更好的可扩展性。
动机
JDK 目前使用名为 Pisces 的图形光栅化器。它用于抗锯齿渲染(字体除外),因此其性能对于许多图形密集型应用程序至关重要,但其性能比 Oracle 提供的闭源 Ductus 光栅化器差得多。因此,Marlin 已被一些应用程序用作 Pisces 的替代品,将其放置在引导类路径上。因此,更高性能的光栅化器对于采用非常重要。
描述
图形光栅化器是Java 2D使用的一个实现库。它实现了一个用于与 AWT 和 Java 2D 子系统通信的内部接口,但没有任何供 Java 开发人员外部可见的 API 。 Marlin 全部是 Java 代码(到目前为止),并且是 Pisces 光栅化器的一个分支。尽管它长期以来一直是单独托管的,但现在是通过OpenJDK 图形光栅化器项目的延续来开发的,该项目最初专注于双鱼座。 Marlin 已经基本完成,并经过现场测试并通过了 Oracle 的内部测试。它将逐步进一步开发,然后集成到 JDK 中,作为 Pisces 的替代品,并且根据 Oracle 的选择,也可能集成 Ductus。
测试
这不需要任何新的测试开发,因为没有 API。然而,如果我们发现存在差距,我们预计会为现有 J2DBench 或其他测试套件开发额外的测试场景来检查 MT 性能。测试执行将是现有的功能和合规性测试以及现有的性能测试,例如J2DBench目前版本的 Marlin 已经通过了 JDK 9 中的所有功能、回归和合规性 (JCK) 测试,由 Oracle SQE 小组运行。