跳到主要内容

JEP 265:Marlin 图形渲染器

QWen Max 中英对照

概述

更新 Java 2D,以使用 Marlin 渲染器作为默认的图形光栅化器。

成功指标

Marlin 渲染器的性能必须始终至少与当前的图形光栅化器 Pisces 一样好,同时具有相同或更高的质量和精度。在大多数基准测试中,它必须显著优于 Pisces。它应展示出比 Pisces 更出色的多线程可扩展性。开发版本已经达到了这些目标。额外的目标是在单线程性能上达到或超过闭源的 Ductus 光栅化器,并在质量和精度上与其相当。Marlin 已经展示了在多线程情况下比 Ductus 更好的可扩展性。

动机

JDK 当前使用一种名为 Pisces 的图形光栅化器。它用于抗锯齿渲染(字体除外),因此其性能对于许多图形密集型应用程序至关重要,但其性能比 Oracle 提供的闭源 Ductus 光栅化器差得多。因此,一些应用程序已经开始通过将其放置在引导类路径中,使用 Marlin 作为 Pisces 的替代品。因此,一个更高性能的光栅化器对于推广和采用非常重要。

描述

图形光栅化器(graphics rasterizer)是 Java 2D 使用的一个实现库。它实现了一个内部接口,用于与 AWT 和 Java 2D 子系统进行通信,但并没有为 Java 开发者提供任何外部可见的 API。Marlin 全部由 Java 代码编写(到目前为止),并且是 Pisces 光栅化器的一个分支。尽管它曾长期独立托管,但现在正通过 OpenJDK graphics-rasterizer 项目 的延续进行开发,该项目最初专注于 Pisces。Marlin 已经基本完成,并经过了现场测试以及 Oracle 内部测试。它将逐步进一步开发,随后被集成到 JDK 中,作为 Pisces 的替代品,同时在 Oracle 的选择下,或许也会替代 Ductus。

测试

这不需要任何新的测试开发,因为没有 API。然而,如果我们发现现有测试存在空白,我们预计会为现有的 J2DBench 或其他测试套件开发额外的测试场景,以检查多线程(MT)性能。测试执行将包括现有的功能和合规性测试,以及现有的性能测试,例如 J2DBench。当前版本的 Marlin 已经通过了 JDK 9 中的所有功能、回归和合规性(JCK)测试,这些测试由 Oracle SQE 团队负责运行。