在 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的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中嵌入 Office

如何在lua中嵌入java代码

在 Java 桌面应用程序中嵌入谷歌地图

在Java应用程序中嵌入Web浏览器[重复]

如何在 Java 应用程序中嵌入 V8?

如何在java类中嵌入版本字符串