有没有一种方法可以在Java中嵌入浏览器?

74

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


JxBrowser 库提供了基于最新的Chromium引擎的Swing/JavaFX轻量级组件。Web页面由Chromium引擎在屏幕外渲染,并显示在轻量级Swing/JavaFX组件中。它非常易于使用。对于开源和学术项目是免费的。 - Vladimir
我认为这是商业性质的。我的意思是,@Vladimir 怎么可能得到免费的许可证? - gumuruh
在 https://www.teamdev.com/jxbrowser#evaluate 的评估表格中,选择开源或学术。您将看到简短的说明:评估许可证在此时间后将无法使用。如果您正在进行开源项目,您可以通过电子邮件中提供的链接请求永久许可证。因此,一旦您请求评估,您将收到一封电子邮件,您可以写信请求开源项目的免费许可证。 - Vladimir
15个回答

37
自JavaFX 2.0以来,现在可以使用webview

enter image description here


1
如何操作请参见此处:https://dev59.com/Q2sy5IYBdhLWcg3wtwMd#8413289 - Ande Turner
另一种JavaFX库是JxBrowser,它具有BrowserView组件:http://www.teamdev.com/jxbrowser - Vladimir
WebView存在一些性能问题,请参见https://dev59.com/Fmgv5IYBdhLWcg3wNuN5。 - Stefan
最糟糕的事情就是这个。性能最差,JavaScript 很少起作用,行为不受控制。它永远不能用于任何好项目中。 - Zahan Safallwa
刚尝试了一下 WebView(2021年1月9日),现在表现非常好!(在macOS上)整体非常好,我认为我将通过这种方法制作GUI(还可以嵌入漂亮的JavaScript小部件)。 - Shebla Tsama

22

我相信JWebPane将成为将浏览器嵌入Java应用程序的官方方式。它基于开源引擎WebKit,该引擎被用于苹果的Safari和谷歌的Chrome浏览器。详细信息请参见此博客


1
2011年4月,几乎没有任何迹象,就像JMF一样,对于视频任务来说就像不可能完成的任务。Firefox 4昨天发布了。 - user285594
22
更新:在JavaFX 2.0(库系列)中,JWebPane已更改为WebView。请参见http://download.oracle.com/javafx/2.0/webview/jfxpub-webview.htm以获取示例截图。有关其运行的示例,请参见http://www.javamexico.org/blogs/oscarryz/webview_en_javafx(尽管不是使用Java编写的,而是一种实验性的JVM语言)。 - OscarRyz
3
JavaFX中的WebView是否真正具备跨平台独立性,或者它是否依赖于特定平台的本地组件?更重要的是,它在渲染网页方面表现如何?它由WebKit驱动,但在渲染网站方面,它与使用真正浏览器渲染网站有多接近? - KJW
1
2015年10月,大家在吗? - javaguest
1
现在是可能的。虽然我在使用jQuery的网站上遇到了问题。 - e13420xx
显示剩余3条评论

9

至少有一些东西总比什么都没有好,但是与Chrome或Firefox 4相比,它非常缓慢且图形质量很差。 - user285594
Lobo已经2年没有更新了。 - Paul Verest
@OzhanDuz 有关JDIC问题的任何细节吗?我喜欢这种方法,但自己还没有使用过。 - Patrick Linskey
远离JDIC,它不是多平台的,我不确定但开发可能已经停止或不活跃。使用DJ Native Swing,您将获得定期更新、更好的API和更稳定的体验。 - user452425

9
你可以使用SWT创建GUI界面。它的浏览器控件可以轻松地嵌入IE、Mozilla或Safari(取决于你所运行的平台)。

browser.evaluate()的返回值仅限于几种类型。JavaFx WebEngine可以通过将返回值包装在JSObject中来处理各种返回类型。 - Stefan

3

3

JxBrowser 还未被提及。它可以嵌入 Mozilla Firefox (Gecko)、Apple Safari (WebKit) 或 Internet Explorer。 程序员指南


此外,如果您不需要跨平台解决方案,TeamDev 的JExplorer是一种更便宜的选择。 - xmedeko
2
从4.0版本开始,JxBrowser集成了Chromium引擎。 - Vladimir
我已经寻找这个问题的真正答案多年了,而JxBrowser 4版本确实是一个改变游戏规则的东西。它正是你希望的Swing浏览器组件。 - CarlG
1
现在,JxBrowser 允许将 Google Chromium 引擎嵌入到 Java Swing/JavaFX 应用程序中。它支持两种渲染模式:轻量级(离屏)和重量级(GPU 加速)。对于开源项目,它是免费的。 - Vladimir

3
到目前为止,我熟悉的最强大的可嵌入浏览器是SWT中的浏览器。实际上,它非常灵活,以至于您在Eclipse中可以看到的JavaDoc悬停实际上就是一个浏览器,而JavaDoc视图实际上支持诸如动画之类的东西!
使用SWT的唯一风险是不同平台有不同版本的SWT库。我不确定是否有一个单一的jar文件可以包含所有人。

3

现在被称为飞碟,http://code.google.com/p/flying-saucer/。 - hotzen

2

我已经成功地使用SWT从Java中打开了一个浏览器。你可以在代码示例中找到如何使用SWT打开浏览器窗口的示例。这非常容易实现。


browser.evaluate() 的返回值仅限于某些类型。JavaFx WebEngine 可以通过将返回值包装在 JSObject 中来处理所有类型的返回值。 - Stefan

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接