在寻找可以在 Java 中显示 HTML、执行 JavaScript 或使用 OAuth2 协议的解决方案时,JCEF 和 JxBrowser 是两个常见的选择。本文将从架构、功能和集成工作等方面进行比较,帮助您在两个库之间做出选择。
JCEF 是一款开源且免费的工具,适用于开源、低预算或学术项目。虽然它免费,但仍需要一定程度的维护成本。开发团队需要投入更多时间和专业知识来处理 JCEF 社区未涵盖的事项。
相比之下,JxBrowser 是一个商业专有库,无需任何维护工作。您可以在五分钟内开始使用它。JxBrowser 提供了更多功能,并对所有 UI 工具包提供了本地支持。如果您在使用过程中遇到问题,可以随时依赖我们的帮助。
从架构角度看,JCEF 是基于 Chromium 嵌入式框架 (CEF) 的开源替代品。要使用 JCEF,您需要自行构建它。JxBrowser 则是基于专有的内部解决方案进行 Chromium 集成。它不基于 CEF,自 2007 年以来一直在持续开发。
在 UI 支持方面,JCEF 提供了一个 Swing 组件,适用于 JavaFX 或 SWT 开发的应用程序。JxBrowser 则为所有主要的 UI 工具包提供原生组件,包括 JavaFX、Swing 和 SWT。我们的客户还在 Eclipse RCP、IntelliJ IDEA 和 NetBeans 插件中使用 JxBrowser。
两个库在嵌入桌面应用方面的工作量大致相似。JCEF 和 JxBrowser 都可以轻松地与桌面应用程序集成。如果您需要一个无 UI 的应用程序,JxBrowser 可以提供具有离屏渲染的完整功能,而 JCEF 则需要一个可见的 Swing UI。
在功能方面,JCEF 和 JxBrowser 都提供了一系列功能,包括管理 Chromium 网络、打印、处理下载等。然而,JxBrowser 提供了更多功能,包括使用 DOM、JavaScript 和 Java 之间的交互、模拟用户输入等。
在架构方面,JCEF 在 Java 进程中启动 Chromium,而 JxBrowser 在单独的本机进程中启动 Chromium,并通过 IPC 通信。这种设计使 Chromium 不会影响 Java 进程的内存使用,且在 Chromium 崩溃时 Java 进程仍可继续运行。JxBrowser 还提供了 API,使您的应用程序能够得知 Chromium 是否崩溃并重新启动浏览器,以恢复用户会话。
在获取帮助方面,JCEF 是一个开源项目,您可以在论坛上提问或在错误跟踪器中创建问题,也可以提出功能建议和想法。JxBrowser 是商业产品,提供支持服务。当您联系客服时,会直接与产品开发工程师交流,确保问题得到快速解决。如果缺少功能,我们会为您实现并在未来版本中发布。
就版本更新和发布周期而言,JCEF 在 2021 年推出了五个版本,每次更新都附带了 Chromium 版本升级。JxBrowser 在 2021 年推出了 12 个版本,每个版本都附带了修复和改进,并详细描述在发行说明中。JxBrowser 的版本升级通常在 Chromium 正式发布后的 3-4 周内进行,包括最新的安全补丁和修复的漏洞。
综上所述,JCEF 和 JxBrowser 在功能、集成、架构、支持和更新方面各有优势。JCEF 是开源、低预算或学术项目的可行解决方案,而 JxBrowser 提供更多功能和本地支持,无需维护工作。选择哪个库取决于您的项目需求和资源。