Java 中的 Web 浏览器控件?

Web Browser Control in Java?

我有 C# 背景。我们有一个叫做 WebBrowser 控件的东西,它可以加载 HTML 页面并使用 C# 与 Java 脚本交互。

我想使用 Java 与 HTML / Java 脚本页面进行交互。是否有任何众所周知的 WebBrowser controls/objects 或 Java 的库?

https://docs.oracle.com/javafx/2/webview/jfxpub-webview.htm 我想这就是您要找的小部件。来自 JavaFX 官方网站。

有很多选择,包括商业和开源解决方案。

JavaFX

JavaFX 在 Java 8-10 可用。它provides the WebView control that you can embed into your JavaFX application to display HTML and web pages. It's based on WebKit and renders HTML off-screen using Java Graphics API. It's lightweight. In Java 11 JavaFX is no longer available. It was extracted into a separate project — OpenJFX.

在 Windows、macOS、Linux 上运行。

JxBrowser

这是一个商业图书馆。它provides the BrowserView controls for Swing, JavaFX, SWT. It's based on Chromium, so the modern web pages look exactly as in Google Chrome. It supports two rendering modes离屏(轻量级)和硬件加速(GPU加速,重量级)。

在 Windows、macOS、Linux、Linux 64 位 ARM 上运行。

JCEF

它是一个开源库,代表 CEF (C/C++) 的 Java 端口。据我所知它只支持 Swing。它基于 Chromium,因此现代网页看起来与 Google Chrome.

完全一样

在 Windows、macOS、Linux 上运行。


有什么区别?

2018 年,Sebastian Barth 比较了不同的 Java 库,包括 JavaFX、JCEF、JxBrowser 等,并在 Browser Integration in Java Applications 文章中分享了结果。

还有一个选项 - https://github.com/shannah/webviewjar - 非常精简的库,利用 OS- 内置浏览器,因此整个库小于 1mb - macOS, Windows 和 Linux 本机垫片都在一个罐子里。