Vladyslav Lubenskyi
2022 年 1 月 11 日
当寻找一种在 Java 中显示 HTML、执行 JavaScript 或使用 OAuth2 协议的解决方案时,人们通常会寻找一款成熟的嵌入式浏览器。 如果您选择 Chromium,则可以使用 JxBrowser 或 Java Chromium Embedded Framework (JCEF) 进行集成。
我们收集了最常见的比较点并为您编写了本指南。 为了帮助您在库之间进行选择,我们比较了它们的架构、功能和所需的集成工作。
由于开源且免费,JCEF 可能是开源、低预算或学术项目的可行解决方案。
然而,它仍然伴随着维护成本。 您的开发团队需要时间和专业知识来涵盖 JCEF 社区未涵盖的内容:
JxBrowser 无需维护。 您可以在五分钟内开始使用它。 该库为所有 UI 工具包提供更多功能和本机支持。 如果您缺少该功能、发现问题或有疑问,您可以随时依靠我们的帮助。
获得一个稳定且易于使用的 Java 浏览器
JCEF 是 JxBrowser 的开源替代品。 它基于 Chromium 嵌入式框架 (CEF),允许您将 Web 浏览器嵌入到 Java Swing 桌面应用程序中。
要开始使用 JCEF,您需要自己构建它。 这个过程分为三个部分:
JxBrowser 是一个商业专有库。 要开始使用 JxBrowser,请向 Gradle 或 Maven 应用程序添加单个依赖项。 或者下载该库并将 JxBrowser 添加到类路径中。
JxBrowser JAR 文件包含所有必需的二进制文件,不需要开发人员执行任何其他操作。 macOS 的二进制文件经过公证,Windows 的二进制文件经过签名。
JxBrowser 和 JCEF 都在底层使用 Chromium。
JCEF 建立在 CEF 之上。 这是一个著名的 C++ 框架,也与其他编程语言绑定。
JxBrowser 使用专有的内部解决方案进行 Chromium 集成。 它不是基于 CEF。 我们自 2007 年以来一直在开发它,也在 DotNetBrowser 中使用它。
JCEF 提供了一个Swing 组件。 如果您使用 JavaFX 或 SWT 开发应用程序,则需要使用集成桥。 它们是用于 JavaFX 的 SwingNode 和用于 SWT 的 SWT_AWT 桥。
JxBrowser 为所有主要 UI 工具包提供本机组件:JavaFX、Swing 和 SWT。 查看如何使用我们的快速入门指南中的任何工具包创建简单的应用程序。
我们的客户还在 Eclipse RCP、IntelliJ IDEA 和 NetBeans 插件中使用 JxBrowser。
对于这两个库来说,编写一个简单的桌面应用程序所需的工作量是相似的。 以下是带有地址栏和 JCEF 浏览器的示例:
这是使用 JxBrowser 的相同应用程序:
如果您的应用程序在没有 UI 的情况下运行,JCEF 不适合您。 它需要一个可见的 Swing UI,否则浏览器不会完全初始化。
使用 JxBrowser,您可以创建一个具有真正离屏渲染功能的全功能浏览器。 看一看:
JCEF 提供了多种用于管理 Chromium 网络、打印、处理下载等的功能。
使用 JxBrowser,您可以做同样的事情,甚至更多。 在本节中,我们将演示 JCEF 中不可用的功能。
当谈到 DOM 时,您可以将浏览器的全部功能封装到易于理解的 Java API 中。 查看此示例或查看指南。
从 Java 执行 JavaScript 代码,从 JavaScript 调用 Java 方法。 并享受自动类型转换。 看一下这个示例或查看指南。
通过模拟用户交互来加强自动化测试和工具。 查看示例或查看指南。
默认情况下禁用 H264 和 AAC 编解码器等专有技术,但启用它们非常容易:
有许多功能是 JxBrowser 独有的。 他们之中有一些是:
和更多。
库之间的主要架构差异是处理模型。 JCEF 在 Java 进程内启动 Chromium。 而 JxBrowser 在单独的本机进程中启动 Chromium。
JCEF 的模型允许您更快地初始化 Chromium,但它有主要缺点:
JxBrowser 在单独的进程中运行 Chromium,并通过 IPC 与其通信。 这样,Chromium就不会影响Java进程的内存使用。
如果 Chromium 崩溃,Java 进程将继续运行。 JxBrowser 甚至提供 API 来让您的应用程序知道 Chromium 何时崩溃。 这使您能够重新启动浏览器并恢复用户会话。
JCEF 是一个开源项目。 如果您需要帮助,您可以在论坛上提出问题或在错误跟踪器中创建问题。 如果有您想要的功能,您可以做出贡献。
JxBrowser是为商业公司创建的商业产品。 我们关心客户并提供支持服务。 当您联系我们的技术支持时,您将直接与开发产品的工程师交谈。
如果您发现错误,我们将修复它并立即为您提供预览版本。 如果缺少某个功能,我们将为您实现并在未来的版本之一中发布它。
对于高级案例和定制请求,我们提供优质服务。
2021 年,JCEF 推出了五个版本。 每个新版本都会附带 Chromium 版本升级。 由于缺乏发行说明,因此很难分析新版本中还包含哪些内容。
JxBrowser 在 2021 年发布了 12 个版本。每个版本都包含我们在发行说明中详细描述的修复和改进。 我们会在 Chromium 正式发布后 3-4 周内将其升级到最新稳定版本。 这些升级包括最新的安全补丁和修复的漏洞。