JavaFX 2.0和Qt用于跨平台应用程序

Foo*_*Bar 14 c++ java qt cross-platform javafx-2

我需要一些处理跨平台应用程序(特别是带有GUI的程序)的开发人员的建议.

我将很快创建一个需要跨平台的应用程序,因此我对两个不同的框架进行了一些初步研究:JavaFX 2.0和Qt.

老实说,两者都不仅仅满足我的需求.那么我问自己为什么我会选择一个而不是另一个(SPOILER ALERT:我不知道答案:P).我知道JavaFX 2.0是一个相当新的(截至2012年)并且不是跨平台完全支持,但它最终会得到支持.

我提出的问题是:您将哪一个用于跨平台应用程序,以及您在做出该决定时看到的标准是什么?

感谢您抽出时间来阅读!:)

编辑: 在考虑这个问题时供您参考,我将编写的应用程序涉及读/写XML文件,显示图像,以及创建一些具有自定义功能的小部件.我在C#中使用.NET编写了类似的应用程序,但在考虑JavaFX 2.0或Qt以实现跨平台可用性时,我希望得到建议.

再次感谢!:)

Bru*_*ira 19

这是一个老问题:稳定性与前沿性.我会尝试根据您的应用程序功能为您提供一些个人见解.

JavaFX 2.0是相当新的(截至2012年),并不是跨平台完全支持

嗯,它完全支持Linux,Windows和Mac.我可以这么说,因为我正在Mac上开发一个JavaFX 2.2应用程序,服务器在Linux机器上运行,而Windows机器上的客户机运行.

读/写XML文件

我还没有看到一些工具/界面比sax2更好/更容易/更快地解析XML.当然QtXMLPatterns模块解析器保护者尊重,但他们甚至开发了一个基于SAX2的XML解析器(顺便说一下,这个解析器并不完整,并且与传统的SAX1方法不完全兼容)所以我会说添加JavaFX 2得分.

显示图像

这两种技术都可以轻松地显示图像,但JavaFX 2.2缺少一些图像处理工具(特殊格式编解码器).如果图像处理是一个关键问题,我会说Qt在战斗中略微领先.

创建一些具有自定义功能的小部件.

截至目前,这在JavaFX 2中并不是一件容易的事,因为Stage对象没有像ALWAYS_ON_TOP这样的选项,直到3.0(2013年的某个地方)才会有这个任务.这不是一件难事,但Qt已经有了一些很好的自定义工具/ display/handle我们根本无法在JavaFX中重现的小部件.

您将使用哪一个用于跨平台应用程序,以及在做出该决定时您看到了什么标准?

好吧,JavaFX 2.2是由Java构建的.我个人觉得使用Java编程比C++更好更容易.你永远不必在java中使用指针,你总是可以依靠垃圾收集器进行内存管理,网上有很多教程和文档(我相信它超过了C++)和一个不断发展的Java Gurus社区.

在摘要中,我选择了JavaFX 2.2,因为它很漂亮,因为它很酷,因为我可以更轻松地处理MVC,因为我喜欢Java,但我相信如果应用程序的小部件是主要目的,你应该选择Qt它的.

我希望它有所帮助,欢呼


小智 13

我目前正在研究适合开发离线html5创作应用程序的各种跨平台框架.除了跨平台操作(Windows,Linux,OS-X),我的应用程序也有以下主要要求:

嵌入式数据库嵌入式(或其次,主流浏览器)HTML5渲染引擎高功能可编辑DND树,分割器面板和富文本编辑器小部件中型图像处理USB棒可移植性

我仔细研究了这些框架:

jQuery(JavaScript),HTML5,CSS3 Google Web Toolkit [GWT](Java to JavaScript)JavaFX 2.0(Java)QT(C++(Java绑定可用))Xulrunner(XML,JavaScript)GTK +(C)Adobe Air睡衣

我花了不少钱买所有这些技术的书籍,我开始编写原型,看看每个框架能带我多快和多远.

最初,JavaFX 2.0以最快的速度带我走得最远.对此的简单解释是,使用JavaFX,所有工具,IDE,库,文档,代码示例,周转,调试,社区支持,制造商(Oracle)支持和学习曲线都与最少量的阻抗不匹配结合在一起.

可能JavaFX最大的胜利是它易于实现客户端嵌入式数据库(Derby).对于所有其他框架,令人惊讶的是,这项任务更加困难和"笨拙".

不幸的是,当我发现WebView小部件不从本地file:// URL执行JavaScript时,我遇到了一个严重的JavaFX绊脚石.QtWebKit,GTKWebKit,Safari和Opera(所有基于WebKit)也展示了相同的文件:// JavaScript阻止行为(但Chrome没有),所以我猜测这是一个默认的WebKit安全措施.

当时,我认为文件:// JavaScript问题是JavaFX showstopper所以我继续开发jQuery,GWT和Xulrunner原型.结果,我的原型制作生产率急剧下降.与其他框架相比,Frankensteining和阻抗不匹配明显比使用JavaFX更糟糕.

这么多,以至于经过几个星期在杂草中徘徊,我回到了我的JavaFX原型,非常积极地找到一个解决方案.我最终通过在原型中嵌入Java SE 6的Web服务器,并通过以下列格式加载JavaFX WebEngine URL来连接到本地文件:"http:// localhost:58357/xxxxx.html"解锁JavaFX原型以这种方式就像回家一样.这真是一股清新的空气,更不用说大的,大的生产力助推器了.

基于这些经验,以下是一些可能在JavaFX与Qt辩论中有用的见解.

  • 我同意JavaFX与Qt的问题,因为这两个框架最终分别成为我最喜欢,最有成效的选择.
  • 也就是说,我将jQuery/HTML5/CSS3框架添加到组合中.这个框架非常强大,并且充满了x平台
    应用程序开发的潜力,我甚至可以说它是不可避免的.在我广泛搜索小部件控件时,可编辑DND树,拆分器面板和富文本wysiwyg编辑器小部件的主要候选者被证明是开源jQuery插件.一旦你解决了本地文件://问题,jQuery/HTML5/CSS3与JavaFX WebView小部件很好地兼容.jQuery/HTML5/CSS3不足的一个领域是客户端数据库存储.这是JavaFX和jQuery/HTML5/CSS3框架的组合被证明非常强大的地方.
  • 即使它们是用C++编写的,Qt模块也有Java和JavaScript语言包装器,这意味着开发人员不需要知道或使用C++来使用Qt.
  • 这表明它不一定是JavaFX vs 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


小智 7

我从时间戳看到的是4个月之前我报道我选择了JavaFX2而不是QT来进行我的原型研究项目.大约2个月前,我开始从JavaFX2切换到QT,从那时起就没有回头了.争论的主要内容是从原型设计过渡到生产阶段.为了编写生产代码,QT被证明比JavaFX2领先一步.

和往常一样,魔鬼在细节中,它是一堆产生重大影响的小东西.使用JavaFX2,我经常面对并解决诸如无法控制的分割窗格调整大小行为,有限的树控制和有限的WebKit API访问(例如尝试实现浏览器缩放按钮,或将整个网页保存到本地html文件)这样的小事情 - 可行但比它应该的100X笨重).当加在一起时,这些"次要"的解决方案会减缓进度.

使用QT,这样的障碍很少,因此,从原型到产品的过渡是自然的,无缝的,并且数量级更快.

在不利方面,使用QT进入"Hello World"需要更长的时间.但是,一旦到达那里,生产力就会迅速超越并远远超过JavaFX2.其中一个原因是QT文档,示例程序和开发人员社区更加广泛.QT自1992年以来一直存在,自2011年以来一直存在JavaFX2,这种年龄差异使两个GUI框架的成熟度水平发生了显着差异.

至于Java vs C++问题,一直没有问题.两者都是很棒的语言.就个人而言,出于各种效率,生产力和性能原因,我发现C++是优秀的GUI语言,但这又是个人的结论.