我目前正在研究适合开发离线 html5 创作应用程序的各种跨平台框架。除了跨平台操作(Windows、Linux、OS-X)之外,我的应用程序还具有以下主要要求:
嵌入式数据库 嵌入式(或主流浏览器)HTML5 渲染引擎 高性能可编辑 DND 树、拆分面板和富文本编辑器小部件 中型图像处理 U 盘便携性
我认真研究了这些框架:
jQuery (JavaScript), HTML5, CSS3 Google Web Toolkit [GWT] (Java to JavaScript) JavaFX 2.0 (Java) QT (C++ (Java binding available)) Xulrunner (XML, JavaScript) GTK+ (C) Adobe Air Pajamas
我在所有这些技术的书籍上花了一点钱,我已经开始编写原型代码,看看每个框架能带我多快和多远。
最初,JavaFX 2.0 让我跑得最快,而且幅度很大。对此的简单解释是,使用 JavaFX,所有工具、IDE、库、文档、代码示例、周转、调试、社区支持、制造商 (Oracle) 支持和学习曲线都以最少的阻抗不匹配出现。
JavaFX 最大的胜利可能是它易于实现客户端嵌入式数据库 (Derby)。令人惊讶的是,对于所有其他框架,这项任务要困难得多,而且“笨拙”。
不幸的是,当我发现 WebView 小部件不从本地 file:// URL 执行 JavaScript 时,我遇到了一个严重的 JavaFX 绊脚石。QtWebKit、GTKWebKit、Safari 和 Opera(都基于 WebKit)也表现出相同的 file:// JavaScript 阻止行为(但 Chrome 没有),所以我推测这是默认的 WebKit 安全措施。
当时,我认为 file:// JavaScript 问题是 JavaFX 的一大障碍,所以我继续开发 jQuery、GWT 和 Xulrunner 原型。然而,结果是,我的原型制作效率大幅下降。与这些其他框架的科学怪人和阻抗不匹配明显比 JavaFX 更糟糕。
如此之多,以至于在杂草丛生中徘徊了数周之后,我回到了我的 JavaFX 原型,非常有动力去寻找工作。我最终通过在原型中嵌入 Java SE 6 的 Web 服务器并通过使用以下格式的 URL 加载 JavaFX WebEngine 来连接到本地文件解决了这个问题:“http://localhost:58357/xxxxx.html”解除阻塞 JavaFX 原型这种方式就像回家一样。这是一股真正的新鲜空气,更不用说大大提高生产力了。
基于这些经验,这里有一些见解可能有助于 JavaFX 与 Qt 的辩论。
- 我同意 JavaFX 与 Qt 的问题,因为这两个框架分别最终成为我的 #1 和 #2 最喜欢的、最有成效的选择。
- 也就是说,我会将 jQuery/HTML5/CSS3 框架添加到组合中。这个框架非常强大,并且充满了 x 平台
应用程序开发的潜力,以至于我什至可以说它是不可避免的。在我对小部件控件的广泛搜索中,可编辑 DND 树、拆分面板和富文本所见即所得编辑器小部件的主要候选者结果是开源 jQuery 插件。一旦解决了本地 file:// 问题,jQuery/HTML5/CSS3 就可以很好地与 JavaFX WebView 小部件兼容。jQuery/HTML5/CSS3 不足的一个领域是客户端数据库存储。这就是 JavaFX 和 jQuery/HTML5/CSS3 框架的组合被证明非常强大的地方。
- 尽管 Qt 模块是用 C++ 编写的,但 Qt 模块具有 Java 和 JavaScript 语言包装器,这意味着开发人员无需了解或使用 C++ 即可使用 Qt。
- 这就提出了一个问题,即它不一定是 JavaFX 与 Qt,非此即彼的问题。事实上,一个更有建设性和有益的问题很可能是“JavaFX 和 Qt?”。
- 这带来了另一个重要的一点:我很快发现我最好的跨平台应用程序开发框架实际上是 JavaFX 2、直接 Java SE、Swing(用于传统自定义小部件)、WebKit 和 jQuery/HTML5/ 的混合体CSS3。未来,GWT、相关的第三方 GWT 库和 Qt 模块可能会加入其中。这里的重点是使用单一、纯基因框架的计划很快就被淘汰了。
- 目前,将整个混合框架绑定在一起的一个通用线程是普通的 Java SE。而且因为 JavaFX 2 是基于 Java SE 构建的,所以我的投票是从 JavaFX 2 开始,然后根据需要添加 Swing、WebKit、jQuery/HTML5/CSS3、GWT 和 Qt。
- 最后,这篇文章说服了我加入 JavaFX 的行列。
http://fxexperience.com/2012/04/interview-with-peter-zhelezniakov/
- H