【问题标题】:Is there a way to embed a browser in Java? [closed]有没有办法在 Java 中嵌入浏览器? [关闭]
【发布时间】:2021-11-08 17:12:06
【问题描述】:

有没有办法在 Java 中嵌入浏览器?更具体地说,是否有可以模拟浏览器的库?

【问题讨论】:

  • JxBrowser 库提供基于最新 Chromium 引擎的 Swing/JavaFX 轻量级组件。网页由 Chromium 引擎在屏幕外渲染并显示在轻量级 Swing/JavaFX 组件中。非常easy to use。它对开源和学术项目是免费的。
  • 我想,它是商业的。我的意思是你怎么能得到@Vladimir 的免费许可证?
  • teamdev.com/jxbrowser#evaluate 的评估表中,选择开源或学术。您将看到简短说明:在此之后,评估许可证将失效。如果您正在做一个开源项目,您可以通过您将收到的电子邮件中提供的链接申请永久许可证。因此,一旦您请求评估,您将收到一封电子邮件,您可以写信请求开源项目的免费许可证。

标签: java browser cross-platform


【解决方案1】:

从 JavaFX 2.0 开始,您现在可以使用 webview

【讨论】:

  • 这里有一个方法:stackoverflow.com/a/8413289/4857
  • 另一种 JavaFX 库是带有 BrowserView 组件的 JxBrowser:teamdev.com/jxbrowser
  • WebView 存在一些性能问题,见stackoverflow.com/questions/10762979/…
  • 糟糕的事情是可能的。性能最差,javascript 很少工作,不需要的行为。永远不能用在任何好的项目中
  • 刚刚试用了 WebView(2021 年 1 月 9 日),现在它的性能非常好! (在 macOS 上)总体上非常好,我想我将通过这种方法制作 GUI(也让我嵌入漂亮的 javascript 小部件)
【解决方案2】:

我相信 JWebPane 将成为将浏览器嵌入 Java 应用程序的官方方式。它基于开源引擎 - WebKit,用于 Apples Safari 和 Googles Chrome 浏览器。详情请参阅this blog

【讨论】:

  • JWebPane 没有显示活动/生命的迹象......但是 mozswing 似乎工作得很好。我尝试了 JNLP 下载版本,页面呈现良好。内存使用率很高,但对 Web 标准的支持很好,因为它基于 Mozilla 浏览器。可在confluence.concord.org/display/MZSW/Home
  • 自 2010 年 4 月起,这是不可能的。看来 JWebPane 是蒸汽软件 :(
  • 2011 年 4 月,几乎,仍然没有迹象,就像 JMF 一样,因为视频任务就像不可能完成的任务。 Firefox 4 昨天发布。
  • 更新 JWebPane 在 JavaFX 2.0(库系列)中更改为 WebView,请参阅:download.oracle.com/javafx/2.0/webview/jfxpub-webview.htm 运行的示例屏幕截图,请参阅:javamexico.org/blogs/oscarryz/webview_en_javafx(不是用 Java 编写的虽然但在实验性 JVM 语言中)
  • JavaFX 中的 WebView 是真正独立的跨平台还是依赖于任何平台特定的原生组件?更重要的是,它如何叠加到渲染页面?它由 WebKit 提供支持,但在呈现网站时,这是否接近于拥有真正的浏览器?
【解决方案3】:

你可以试试这个:https://jdic.dev.java.net/


(来源:java.net

或者这个:http://lobobrowser.org/java-browser.jsp


(来源:lobobrowser.org

【讨论】:

  • 至少有一些东西很好。但与 Chrome 或 Firefox 4 相比,它的速度非常慢,而且图形非常糟糕
  • Lobo 2 年没有更新
  • @OzhanDuz 有关 JDIC 问题的任何详细信息?我喜欢这种方法,但我自己还没有使用过。
  • 远离 JDIC,它不是多平台的,我不确定,但开发可能会停止或不活跃。使用 DJ Native Swing,你会得到定期更新,更好的 api 和更稳定的。
【解决方案4】:

您可以将SWT 用于您的GUI。它的浏览器控件允许您轻松嵌入 IE、Mozilla 或 Safari(取决于您运行的平台)。

【讨论】:

  • browser.evaluate() 的返回值仅限于视图类型。 JavaFx WebEngine可以通过将返回值包装在JSObject中来处理各种返回类型。
【解决方案5】:

JxBrowser 尚未提及。它嵌入了 Mozilla Firefox (Gecko)、Apple Safari (WebKit) 或 Internet Explorer。 Programmer's Guide

【讨论】:

  • 如果您不需要跨平台解决方案,JExplorer 也是 TeamDev 提供的更便宜的解决方案。
  • 从 4.0 版本开始 JxBrowser 与 Chromium 引擎集成。
  • 多年来,我一直在寻找这个问题的真正答案,而 JxBrowser 版本 4 确实改变了游戏规则。这正是您所希望的摆动浏览器组件。
  • 现在JxBrowser 允许将 Google Chromium 引擎嵌入到 Java Swing/JavaFX 应用程序中。它支持两种渲染模式:轻量级(离屏)和重量级(GPU 加速)。它对开源项目是免费的。
【解决方案6】:

【讨论】:

【解决方案7】:

我已使用SWT 从 Java 成功打开浏览器。您可以找到code examples 了解如何使用 SWT 打开浏览器窗口。这很容易做到。

【讨论】:

  • browser.evaluate() 的返回值仅限于视图类型。 JavaFx WebEngine可以通过将返回值包装在JSObject中来处理各种返回类型
【解决方案8】:

到目前为止,我所熟悉的最强大的嵌入式浏览器是 SWT 中的浏览器。 事实上,它是如此灵活,以至于你在 Eclipse 中看到的 JavaDoc hover 实际上是一个浏览器,而 JavaDoc 视图实际上支持动画之类的东西!

使用 SWT 的唯一风险是针对不同平台有不同版本的 SWT 库。我不确定是否有一个单独的罐子可以包括在内以覆盖所有人。

【讨论】:

    【解决方案9】:

    您可以使用JDIC API 在 Swing/AWT GUI 中嵌入浏览器。 I don't see any mention of OS X,所以可能对你没用。

    【讨论】:

      【解决方案10】:

      您也可以尝试来自 DJ Native Swing 的 JWebBrowser:http://djproject.sourceforge.net/ns

      【讨论】:

        【解决方案11】:

        你可以试试WebrendererIce Browser

        【讨论】:

        • Ice 浏览器实际上已不再销售,该产品已停产
        【解决方案12】:

        如果您需要纯 Java 解决方案,那么您可以尝试JWebEngine。它使 HTML 4 非常好。您可以在小程序、Java webstart 和任何平台上使用它。使用非常简单。

        【讨论】:

        • 但是,它不是开源解决方案。它可能无法满足所有需求。
        • 开源不是 OP 的要求。
        【解决方案13】:

        您可以尝试使用JEditorPane,它不会解释高级 HTML、Javascript 或高级 CSS,但您可以自己编写这部分,称为 EditorKit。这就是 JEditorPane 参考的类/对象,或者它必须如何显示其内容。

        我知道它是可能的,因为我尝试过但失败了 (:P),但它现在可能已经过时或弃用了,我不知道。

        【讨论】:

        • JEditorPane 仅支持 HTML 3.2
        【解决方案14】:

        如果您查看 The Minecraft 启动器(旧版本),通过 LoginForm 或 LauncherFrame,您可能能够找到该方法。 kippykip 在 youtube 上有一个关于如何反编译和编辑它的教程:here

        【讨论】:

          【解决方案15】:

          也许Chromium Embedded Framework 是您的选择。具体到Java有

          用于 SWT 的 javacef:https://github.com/wjywbs/javacef

          用于 AWT 的 java-cef:https://bitbucket.org/chromiumembedded/java-cef

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-10
            • 2015-12-09
            • 1970-01-01
            • 1970-01-01
            • 2020-02-18
            相关资源
            最近更新 更多