随着HTML5 <canvas>元素的引入,Swing可以在GWT中实现吗?</canvas>

时间:2010-04-03 12:26:50

标签: java swing gwt html5 canvas

通过引入HTML5 <canvas>元素,Swing理论上可以Google Web Toolkit (GWT)使用<canvas>标记进行绘制吗?

我知道将源代码从使用Swing调用移植到GWT调用的努力,但我所追求的是一个纯粹的幕后端口,其中Swing应用程序将在GWT下编译而不需要任何源代码修改。

这在理论上是否可行?为什么?为什么不呢?

4 个答案:

答案 0 :(得分:4)

有一些挑战。

本地数据存储 Swing应用程序可以使用磁盘来存储数据。假设HTML 5中的本地数据存储可用,那么将文件/磁盘访问自动地映射到本地数据存储调用仍然很困难。

多线程&amp;同步 Swing应用程序通常会创建线程,而GWT则无法实现。搞砸了。

网络访问 Swing应用程序可以连接到任意网络位置,这不适用于GWT。

使用浏览器中没有的java语言功能 核心java之外的任何东西都是不可访问的,因此自动端口可能会失败。

记忆&amp;性能优化 垃圾收集模式完全不同。如何针对最佳下载大小进行优化?如何映射多个摆动屏幕以使用代码分割等功能来提高性能?

外观 所有的说和做,你必须亲自动手写一些CSS代码,以获得正确的外观和感觉。自动端口无法做到这一点。

鉴于这一切,我认为除了琐碎的应用程序之外,它不是不可能的。对于普通的应用程序,您也可以重新编写代码。

答案 1 :(得分:2)

这在理论上是可行的,尽管这将是非常重要的工作量和可疑的效用。您需要做的是实现自定义外观,定义生成GWT小部件的UI委托,并在GWT侧,捕获客户端上的鼠标和键盘事件,并将它们提供给Swing事件队列。

问题是典型的Swing应用程序有太多的输入事件和小部件状态更新,必须在浏览器和后端之间来回切换。这会破坏您的应用程序响应能力。

答案 2 :(得分:1)

我认为,鉴于这项技术,这是可能的:http://www.creamtec.com/products/ajaxswing/demos.html

AjaxSwing可能还没有Java2D / HTML5 Canvas(坦白说,我还没有检查过)。但是,随着IE9的加入,还有多远呢?

答案 3 :(得分:0)

简短回答:目前不可能。零可访问性!