将 Java Swing 应用变成 Web 应用

Webswing 是什么

Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器。

1472262559817

Swing 框架的时代已经过去,桌面应用不流行了,现在是在线应用、移动应用的天下。但已有的 Swing 桌面应用怎么办呢?使用 Applet 技术已经被证明是不安全的了,将应用重写成 Web 应用成本又太高,所以 Webswing 应运而生。通过 Webswing,你的应用可以安全地运行在服务端,用户的浏览器端只显示界面,并且这一切不用改任何一行已有代码。

工作原理

从用户的视角 Webswing 就像一个常规的 Web 应用。用户在访问 URL 并鉴权成功后可选择已授权的 Swing 应用进行运行,服务端会创建应用实例并通过 Webswing 将界面渲染到浏览器端。用户和应用交互时就像在使用桌面应用一样。

从技术的视角看,Webswing 由两部分构成。第一部分是 Web 分发器,它负责和浏览器通过 WebSocket (或者浏览器支持的一些推送技术)进行通讯,也负责启动应用实例以及 JMS 消息通讯。第二部分是通过 Webswing 定制的java.awt.Toolkit实现来执行的 Swing 应用,通过这个 AWT Toolkit 实现将应用内容发送到浏览器端,然后浏览器端将内容数据转换为 Canvas 元素进行最终渲染。浏览器鼠标、键盘事件将被发送到 Webswing,然后转换为 Swing 事件格式并发送给 Swing 应用实例进行处理。

示例截图

运行一个简单的 Swing 应用:

1472268112066

浏览器里面跑 NetBeans 就是这种体验:

1472267934469