在 Java 中嵌入 Gecko/WebKit
Posted
技术标签:
【中文标题】在 Java 中嵌入 Gecko/WebKit【英文标题】:Embedding Gecko/WebKit in Java 【发布时间】:2011-02-08 21:12:28 【问题描述】:我希望将 Gecko、WebKit 或其他 Web 浏览器嵌入 Java 作为 Swing/AWT 控件。
我正在寻找不同于 JRex 或 JWebPane
的东西。
【问题讨论】:
遗憾的是,JwebPane 还没有看到曙光。 groups.google.com/group/javaposse/browse_thread/thread/… 可能感兴趣。 【参考方案1】:您可以使用JxBrowser。 它具有一个 Swing/JavaFX 组件,该组件封装了 Chromium 引擎,同时通过 GPU 提供了丰富的 API 和开箱即用的硬件加速。
不幸的是,自 4.0 版本以来,他们已经放弃了对其他引擎(如 Gecko 和 WebKit)的支持。 请注意,它不是免费的,开源项目除外。
【讨论】:
以Selenium为例 所有免费提供开源信息的 JXBrowser 似乎已从他们的网站上删除。有谁知道它是否仍然对开源免费?正如@Supuhstar 所说,这是一款相当昂贵的产品。他们可以随心所欲地收费,但很少有开源项目能负担得起 4,600 美元的项目许可证(而且每个开发人员 1,600 美元的价格对于开源来说没有任何意义,而且对于开源来说也太贵了)源项目)。不幸的是,这似乎是唯一一个可以用于严肃的、基于浏览器的应用程序的 java 组件。 JxBrowser 对于开源和学术项目是完全免费的。您只需在申请评估许可证时选择适当的选项:teamdev.com/jxbrowser#evaluate【参考方案2】:如果 SWT 是一个选项,您可以使用SWT Browser widget,这将使用特定于平台的浏览器(例如 Mozilla、Webkit、IE)来实际显示内容。请查看this Eclipse article 了解概览。
如果你不想使用 SWT,那么我推荐JavaXPCOM。这允许您将 Gecko 嵌入到 Java 应用程序中。
【讨论】:
【参考方案3】:JCEF
JCEF (Java Wrapper for the Chromium Embedded Framework) 是 CEF 的 Java 包装器,而 CEF 又是 Chrome 的包装器:
https://bitbucket.org/chromiumembedded/java-cef https://bitbucket.org/chromiumembedded/cef这两个项目看起来都非常活跃,浏览器渲染比 JavaFX 的 WebView 快得多(至少在 JDK 8u20 中)。
JFXPanel
还可以通过 JFXPanel 在 Swing 应用程序中使用 JavaFX WebView。
public class JavaFxWebBrowser extends JFXPanel
private WebView webView;
private WebEngine webEngine;
public JavaFxWebBrowser()
Platform.runLater(() ->
initialiseJavaFXScene();
);
private void initialiseJavaFXScene()
webView = new WebView();
webEngine = webView.getEngine();
webEngine.load("http://***.com");
Scene scene = new Scene(webView);
setScene(scene);
【讨论】:
以上是关于在 Java 中嵌入 Gecko/WebKit的主要内容,如果未能解决你的问题,请参考以下文章