在这里插入图片描述

当您需要在 SWT 应用程序中显示 Web 内容时,通常有两种选择:内置的 Browser 小部件,或像 Fuzio 这样的商业方案。

本文将详细解析这两种方案的差异,帮助您根据自身需求做出合适的选择。我们将从架构、底层引擎、跨平台一致性、对最新 Web 标准的支持,以及对信创平台的适配等维度进行比较。

概览

SWT Browser Fuzio
授权类型 开源 商业授权
使用的 Web engine 不固定,由操作系统提供 Chromium 147(捆绑内置)
API 规模 8 个接口, 11 个类 60+ 个包,580+ 个类与接口
跨平台引擎一致性 否(每个 OS 不同) 是(所有平台一致)
支持的 UI 工具包 SWT Swing、JavaFX、SWT、Compose Desktop
编程语言 Java Java、Kotlin
Java 进程内存隔离 不支持 支持
技术支持 不提供 提供保密支持 ,含 SLA

内置的 Browser 是一个简单但功能可靠的小部件,它使用操作系统提供的浏览器引擎。当您处于以下情形时可以选择 Browser

  • 您必须使用免费方案。
  • 仅需展示简单的网页,不涉及复杂的浏览器功能且使用场景非关键。
  • 不需要跨平台一致的渲染表现。

Fuzio 是一款基于 Chromium 的高级商业网页视图控件。在以下情况下可选择 Fuzio:

  • 使用场景复杂或对核心关键业务。
  • 需要控制浏览器引擎的版本。
  • 需要在不同平台上使用一致的浏览器引擎。
  • 需要自动化测试 SWT 中的网页内容。
  • 需要使用某些高级功能。
  • 需要适配国产信创平台。
  • 需要技术支持、bug 修复或定制功能。

嵌入

由于 Browser 小部件是 SWT 的一部分,因此将其嵌入到应用程序中非常容易:

var browser = new Browser(shell, SWT.NONE);
browser.setUrl("https://example.com");

使用 Fuzio 时,您需要先将依赖项添加到项目中。根据您的构建系统,您可以使用 GradleMaven 构件、将 JAR 文件添加到类路径,或者创建一个独立的 Eclipse 插件。

添加完库之后,嵌入代码如下:

var engine = Engine.newInstance(HARDWARE_ACCELERATED);
var browser = engine.newBrowser();
var browserView = BrowserView.newInstance(shell, browser);
browser.navigation().loadUrl("https://example.com");

Fuzio 多了一个 Engine 的初始化步骤,但这正是其多进程架构的体现。

浏览器引擎

Standard Widget Toolkit(标准小部件工具包,简称 SWT)的初衷是提供符合操作系统原生体验的用户界面。为了实现这一目标,SWT 使用操作系统提供的小部件,而不是像其他工具包那样创建自己的一套小部件。

因此,SWT 中的每个小部件都是对原生对应部件的封装。该工具包提供了使用小部件的 API,但小部件的渲染、可访问性、焦点管理以及其他功能则由操作系统处理。Browser 小部件也是以这种方式工作的。

Browser 是对操作系统提供的网页视图控件的简单封装:

操作系统 底层引擎
Windows WebView2(基于 Microsoft Edge)
macOS WKWebView(基于 WebKit)
Linux WebKitGTK(基于 WebKit)

相比之下,Fuzio 配备了基于 Chromium 的内置浏览器引擎,最新版本 Fuzio 2026.1.0 内置 Chromium 147。其设计理念是确保无论操作系统和已安装软件如何,浏览器行为都能保持一致。
在这里插入图片描述

浏览器引擎:操作系统提供 vs 捆绑内置

开发与测试成本

过去,不同浏览器对同一个网站的渲染方式常常有所不同。来自不同厂商的浏览器支持各自的 HTML、CSS,甚至 JavaScript 子集。这种令人头疼的不兼容性导致了巨大的开发和测试成本,也成为了问题的根源。

Internet Explorer 如今早已退出历史舞台,值得庆幸。但是,不兼容的问题也随着它的消失而解决了吗?很遗憾,并没有。浏览器仍会因对代码的执行和样式的渲染方式各异,给开发者带来困扰。

SWT 方法就容易受到这种问题的困扰。在实际应用中,一个跨平台的 SWT 应用程序不仅要面对 Edge 和两种不同版本的 WebKit,还要面对它们的众多版本。结论很清楚:存在的浏览器运行时越多,所需的开发和测试工作就越多。

Fuzio 提供了内置的浏览器引擎。通过这种方式,开发者能够确切知晓应用程序所使用的 Chromium 版本。该版本在所有操作系统上保持一致,只有在 Fuzio 升级时才会改变。

测试矩阵的对比一目了然:

SWT Browser Fuzio
Windows 测试目标 多个 WebView2 / Edge 版本 单一 Chromium
macOS 测试目标 多个 WKWebView 版本 单一 Chromium
Linux 测试目标 多个 WebKitGTK 版本 单一 Chromium

在这里插入图片描述

浏览器越少,开发和测试所需的工作量就越少。

安全性与更新

许多公司都要求浏览器引擎保持最新状态。这是一项合理的安全要求。仅在 2025 年,Chromium 就修复了 179 多个漏洞,其中六个漏洞已知存在可利用的攻击手段。

SWT 使用系统浏览器的方式在企业管理网络中运行良好,在这种网络中,可通过域策略强制进行及时更新。

Fuzio 让开发者可以控制浏览器的版本。通过这种方式,应用程序能够确保符合公司的安全策略,而无需依赖运行环境。在未受管理的网络或个人计算机中,只要应用程序能够适时升级,这种方式同样适用。

Fuzio 大约每月发布一个新版本,并同步升级 Chromium。我们会在 Chromium 官方发布稳定版本后的 3–4 周内完成升级,确保集成最新的安全补丁和漏洞修复。每个版本都包含修复和功能改进。

功能

内置的 Browser 是一个功能强大的小部件,但其功能受限于自身的架构。使用不同的浏览器引擎会限制 API,使其仅包含 WebView2WKWebViewWebKitGTK 之间兼容的功能。

Browser 支持以下操作:

  • 加载网站及本地 HTML 文件
  • 管理 cookies
  • 管理弹出窗口
  • 执行基本授权操作
  • 在 Java 和 JavaScript 之间相互调用
  • 监听页面位置或标题更改的事件

Fuzio 底层使用 Chromium,这使得它更易于支持更广泛的功能。除了常规的浏览功能外,它还提供了 Chromium 特有的功能。以下列表并不完整,但展示了一些关键功能,帮助您了解 Fuzio 的能力:

  • Chrome 扩展程序安装与管理
  • 截图与 HTML 转 Bitmap
  • 打印
  • 表单自动填充
  • 自定义协议
  • 控制 HTTP 流量与拦截网络请求
  • 高级身份验证(包括 NTLM、SSL 客户端证书、SuisseID、U2F、集成 Windows 身份验证和 Kerberos)
  • 4K 60FPS GPU 渲染
  • WebRTC 与屏幕共享
  • 启用 H.264 / HEVC / AAC 等专有编解码器
  • 以及更多功能

对浏览器的控制

创建一个 SWT 浏览器只需要一行简单的代码:new Browser(...)。但是,这行简单的代码隐藏了实际技术的复杂性。底层的浏览器是非常复杂的项目,它们有不同的进程模型、安全特性,以及各自嵌入到 SWT 这样的平台的方式。

当需求简单时,我们希望这种复杂性被隐藏起来。然而,当情况变得复杂,对浏览器进行更深入的控制可能就变得必要了。Fuzio API 提供的概念层级结构赋予您这种控制权:

在这里插入图片描述

Fuzio 架构

各层级的职责:

  • Engine —— 启动 Chromium 主进程。如果您需要五个主进程,那就创建五个 Engine 实例。在一个 Engine 内创建的对象与其他 Engine 在物理上是隔离的。
  • Profile —— 在每个引擎中,您拥有一个或多个 Profile。这些是Chromium 的配置文件,允许将所有的浏览器数据和设置分开保存。您可以在配置文件级别管理缓存、代理、网络、下载、权限以及其他功能
  • Browser —— 在一个 Profile 中,您可以创建多个 Browser 实例。可以将其视为 Chromium 中的标签页。这些是实际的浏览器,您可以通过它们执行导航、分发鼠标和键盘事件、截图、打开 DevTools 以及执行其他操作。即使浏览器对用户不可见,它也能完全正常运行,因为默认情况下渲染是在内存中完成的。要显示浏览器,请使用 BrowserView
  • Frame —— 一个浏览器中可以包含多个 Frame 实例,代表页面上的实际框架,允许您操作 JavaScript 和 DOM。

这种分层模型让您可以从一个简单的 demo 开始,逐步增加复杂度,而不需要重写整个集成。

开发者工具

SWT 的 Browser API 本身不支持开发者工具。在 Windows 和 macOS 上,您可以通过外部手段连接到 Microsoft Edge 或 Safari 的 DevTools 实例,但流程繁琐;Linux 平台上目前没有可用的开发者工具方案

Fuzio 提供了一个统一的 API,可用于在所有支持的操作系统上打开 Chromium 的 DevTools。您还可以为任何 JavaScript 库安装开发者工具扩展(例如 React DevTools、Vue DevTools),获得与 Google Chrome 一样的原生开发体验。
在这里插入图片描述

Fuzio 中带有 React 扩展的 DevTools。

自动化测试

目前,SWT Browser 中加载的网页内容无法进行自动化测试

Fuzio 与支持 Chromium DevTools 协议的自动化测试框架兼容,例如 Selenium、Puppeteer 或 Playwright。

信创平台支持

在信创平台上,SWT Browser 的能力受到两个相互独立因素的限制。首先,Eclipse Platform Project 并未针对龙芯(LoongArch)等架构发布官方 SWT 二进制包;可用的构件主要依赖社区移植版本,而这些版本的发布节奏通常较慢。
其次,由于 SWT Browser 通过系统提供的 WebKitGTK 进行渲染,因此其对现代 Web 标准的支持程度实际上取决于所使用的 Linux 发行版。

Fuzio 则把 Chromium 147 直接打包进发行物,在信创平台上与在主流 Linux/Windows/macOS 上渲染同一份 Chromium

信创平台 支持架构
银河麒麟 Kylin x64 / ARM64
开放麒麟 openKylin x64 / ARM64
Loongnix x64 / ARM64 / LoongArch64

Fuzio 提供 fuzio-linux64-loong 专用构件,一行依赖即可支持龙芯架构:

dependencies {
    implementation("tech.fuzio:fuzio-linux64-loong:${fuzioVersion}")
}

对于政府、金融、能源等需要信创合规的行业,Fuzio 是目前国内唯一开箱即用的 Java 嵌入式 Chromium 方案。

支持与协助

由于 SWT 是一个开源项目,您始终可以依靠社区的支持。如果您发现了一个错误或有不错的功能建议,可以在 GitHub 上分享您的发现,并自由为其贡献。但是,社区的响应速度和优先级与商业支持有显著差异,对于核心业务系统这种不确定性可能难以接受。

Fuzio 是一款由即库科技(Jiku Technology)开发和提供技术支持的商业产品。当您联系我们的技术支持团队时,您将直接与负责该产品开发的工程师进行沟通。

SWT Browser Fuzio
支持语言 英文社区 中文 / 英文
沟通渠道 GitHub 工单系统 / 微信直接对接工程师
响应时区 无保障 中国时区(UTC+8)
SLA 一个工作日内响应

我们的技术支持服务涵盖:

  • 产品使用指导
  • 故障排查协助
  • bug 修复
  • 功能建议评估与反馈

总结

场景 推荐方案
仅需显示简单网页,无需高级浏览器功能 SWT Browser
项目对成本极度敏感、必须使用免费方案 SWT Browser
商业软件,对稳定性和崩溃隔离有要求 Fuzio
需要跨平台一致的浏览器引擎与渲染表现 Fuzio
需要 DevTools Fuzio
需要对 SWT 中的网页内容做自动化测试 Fuzio
需要适配信创平台(麒麟 / LoongArch) Fuzio
同时使用 Swing、JavaFX 或 Compose Desktop Fuzio
需要中文技术支持和 SLA Fuzio
需要 Chrome 扩展、网络拦截、自定义协议等 Fuzio

参考链接

更多推荐