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

这些HTML5网站看起来很棒 – 为什么我的Java桌面应用程序没有? Swing和SWT就是老派。 他们完成了自己的工作,但是用动画制作看上去漂亮的GUI,一切都是不可能的。

我想知道:是否可以使用HTML5作为GUI工具包? 我有一个库,它有一个类似于Swing或SWT的API,但在HTML5中呈现。 它应该是可以的,您应该访问Java中的页面(即Java和JavaScript / HTML5之间的某些融合)。

为什么不创建一个Web应用程序并向我的用户发送URL? 我想从Java SE应用程序(文件,COM,托盘图标等)的真实桌面集成中受益。 就像PhoneGap一样,但对于桌面操作系统而不是手机。

令人惊讶的是我在网上找不到那样的东西。 但也许我刚刚输入了错误的搜索字词? 有人有想法吗?

或者如果没有:我能以某种方式将WebKit / Chrome与我的应用程序一起嵌入吗? 因此,用户无需安装自己的副本,也无需更改任何设置。

我想到两件事:

  • Adobe Air ,或多或少正是您所需要的:桌面的PhoneGap。
  • Chromium Embedded Framework ,您只需付出一点努力就可以使用Chromium作为应用程序的框架。

TeamDev Ltd.最近发布了JxBrowser库,允许你做你想做的事情。 它允许将基于Chromium的Web浏览器控件嵌入到Java Swing / AWT应用程序中。 它支持Chromium多进程架构并在屏幕外呈现网页。 使用JxBrowser,您将获得一个完全轻量级的Swing Browser组件,该组件可以显示与Google Chrome应用程序完全相同的网页。

你应该看看JavaFX 2.0 。 它允许您在FXML中指定GUI组件,并支持CSS样式。 它还有一个“WebView”组件,可以让您轻松地在应用程序中显示网页。

编辑2015年11月28日

JavaFX概述部分已经移动。

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

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

请更新指向新位置的链接。

在桌面应用程序中使用HTML / JavaScript的方法之一是在应用程序中嵌入HTML服务器。 然后一个网页将成为GUI。 如果你使用,它实际上是几十行代码

示例: 仅使用Java SE API的Java中的简单HTTP服务器

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

您需要从Web服务器(甚至在localhost上)提供GUI Web页面,以避免此处描述的JavaScript相同的源策略冲突

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

与标准浏览器中的HTML gui相比,您期望有什么优势? 很多程序都有自己的HTTP服务器,用于简化UI开发。 我也读过QtQuick ( YouTube演示版 ),但我从未尝试过

我有以下几点需要指出

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