跳到主要内容

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 小组运行。