使用嵌入式Web浏览器(例如Chrome)作为Java桌面应用程序的GUI工具包?

28
那些使用HTML5构建的网站看起来很棒,为什么我的Java桌面应用程序不行呢?Swing和SWT有点老派。虽然它们能够完成任务,但创建带动画效果和其他花哨外观的GUI几乎是不可能的。
我想知道是否可以将HTML5作为GUI工具包使用?我想到了一个类似于Swing或SWT的API库,但渲染为HTML5。它应该可以进行主题设置,并且你应该可以在Java中访问页面(即Java和JavaScript/HTML5之间的某种融合)。
那为什么不只创建一个Web应用程序并将其URL发送给我的用户呢?我想要从Java SE应用程序的真正桌面集成中受益(文件、COM、托盘图标等)。就像PhoneGap一样,但用于桌面操作系统而非手机。
令人惊讶的是,在网络上我没有找到这样的东西。但也许是我输入了错误的搜索术语?有人有什么想法吗?
如果不行:我是否可以以某种方式嵌入WebKit/Chrome到我的应用程序中?这样用户就不必安装自己的副本或更改任何设置。

这并不是完全不可能的;你拥有基本上无限的能力。如果你指的是“免费漂亮的LaFs”或者“我不需要编码就能获得高级功能”,那就不同了。但这并不是不可能的。 - Dave Newton
5个回答

9

有两个方案可以考虑:

  • Adobe Air, 它几乎可以满足你想要的功能:就像PhoneGap用于桌面端。
  • Chromium嵌入式框架,只需花费一些努力,就可以将Chromium作为应用程序的框架。

5
你应该看看JavaFX 2.0。它允许您在FXML中指定GUI组件,并支持CSS样式。 它还具有“WebView”组件,可以轻松地在应用程序中显示网页。 2015年11月28日编辑

JavaFX概述部分已移动。

从JDK 7u6开始,JavaFX已包含在标准JDK和JRE捆绑包中。 请下载JDK或JRE以使用JavaFX。

如果您正在寻找JavaFX Scene Builder下载,则可以在主Java SE下载页面的“其他资源”部分找到它。

请更新您的链接到新位置


2

有一段时间过去了,我不知道这是否有用。但是你可以看一下DukeScript (http://wiki.apidesign.org/wiki/DukeScript),这是Netbeans IDE的原始作者提出的一个概念。据我所知,它的想法是在HTML5环境中开发Java应用程序。它依赖于浏览器作为平台(支持Chrome),并且在浏览器内运行一个JVM的Javascript(实际上有两个,它们自己的bck2brwsrTeaVM)。你甚至可以使用JavaFX,并且可以部署到Android、iOS或浏览器。请查看http://dukescript.com以获取示例。


2
利用HTML/JavaScript在桌面应用程序中的一种方式是在应用程序中嵌入一个HTML服务器。然后,网页将成为GUI。如果使用以下示例,则只需几十行代码即可:
例如:仅使用Java SE API在Java中创建简单的HTTP服务器

Docs: http://docs.oracle.com/javase/7/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/package-summary.html

您需要从Web服务器(即使在本地主机上)提供GUI Web页面,以避免JavaScript同源策略冲突,具体描述见此处。

0

相对于标准浏览器中的HTML GUI,您会期望有哪些优势?许多程序都附带自己的HTTP服务器,以简化UI开发。我还读到过QtQuick(YouTube演示),但从未尝试过。

我有以下要指出的事情

  1. 在浏览器中调试/测试GUI更简单
  2. 包体积更小
  3. 开发时间优化
  4. 真正跨平台(至少当您拥有HTTP服务器作为应用逻辑处理器时,跨平台更容易)

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