通过引入HTML5 <canvas>
元素,Swing理论上可以Google Web Toolkit (GWT)使用<canvas>
标记进行绘制吗?
我知道将源代码从使用Swing调用移植到GWT调用的努力,但我所追求的是一个纯粹的幕后端口,其中Swing应用程序将在GWT下编译而不需要任何源代码修改。
这在理论上是否可行?为什么?为什么不呢?
答案 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)
简短回答:目前不可能。零可访问性!