Qt是最佳的跨平台解决方案2008年,当时如日中天的诺基亚公司宣布以1.53亿美元收购奇趣科技(Trolltech),并更名为Qt Software。这次收购一度被业界视作诺基亚意在加快移动设备和桌面应用的跨平台软件战略部署,加速推出互联网服务业务。但世事无常,随着诺基亚宣布放弃Symbian系统,以及IOS/Android系统的快速崛起,2011年3月,Qt的商业授权和技术支持业务被Digia收购,2012年8月,Digia宣布完成对全部Qt技术平台和知识产权的收购。 CSDN:作为一款跨平台图形界面软件,Qt开发工具可实现在多操作系统以及移动设备之间一致的跨平台用户体验,你觉得被收购后的Qt至今发展如何? 安晓辉:发展得还不错,在嵌入式和很多行业都有更好的表现,目前又支持了Android 、 iOS等移动平台,作为跨平台的解决方案,始终是最强悍的。 具体情况,在我的《Qt on Android核心编程》一中也有提到,摘录如下:
CSDN:每一个工具都有适合的使用场景,Qt也不例外,对于开发者来说,是否选用一种技术,要看这个技术和他的需求是否契合。Qt适合的应用场景有哪些? 安晓辉:Qt特别适合跨平台开发,比如你要支持Windows、Mac OS X、Linux、Android、iOS等等平台,那Qt绝对是值得考虑的技术方案。 比如办公软件,要跨平台,支持Windows、Mac OS X、Linux、Android、iOS等,就可以选用Qt。又比如用于企业办公的网络会议系统,也需要同时支持桌面和移动平台,Qt也是很棒的解决方案。又比如一些行业软件,医疗、工业自动化、自动控制等,都有很多使用Qt的。当然你也可以使用它做游戏,“吃药了”这款游戏就是用Qt做的,还有很多其它的游戏也选择了Qt。 CSDN:Qt支持的平台包括Windows、Mac、Linux等桌面操作系统,QNX、VxWorks、Embedded Linux等嵌入式平台,还包括Android、iOS、WP/Windows Runtime三大移动操作系统,和Java跨平台相比有什么区别?前者的优势是什么? 安晓辉:Java在做web端应用时很有优势,跨平台也威力强大。但是目前的移动端,客户端应用,如果说你在Android上用Java,没有问题,因为Android使用Java作为基础语言构建了针对Android的一套UI框架,但是你在iOS上使用Java来做应用,在Windows Phone上使用Java来做应用,还有其它的一些平台,都是非常吃力的,没有好的解决方案。 而Qt的跨平台,在桌面应用开发,在移动端应用开发,所有平台都是一致的体验,它针对各个平台编写平台相关的QPA插件,直接与各个平台融合在一起,最终既不损失性能又跨平台,对开发者来讲,一次编写,多次编译,到处运行,这实在是太迷人了! CSDN:日前,你出了《Qt on Android 核心编程》一书,能否谈下写这本书的缘由?期间有什么难忘的事? 安晓辉:因为我有写小说的梦,也写过不少未发表的小说,对写作其实是有情结的。我想有一本自己的书,但其实没想到会是技术书。 2008年在西安信利软件使用Qt开发机顶盒产品接触 Qt,一见倾心,她优雅从容,非常好看。之前也用过MFC、WTL、Win32等等框架,但仅仅是用而已。我用Qt做嵌入式开发,工作之外我也想研究她,看看她到底是什么回事儿,从外到里,一层一层剥剥看,所以就去读了源码,慢慢就对Qt有了较为深入的了解,形成了有问题看帮助,帮助不行看源码的习惯。 我觉得一个人技术做到一定程度,会愿意与他人分享,不介意把自己辛苦得来的技能和经验讲给他人来听。这是一种自发的行为吧,也算是一种修炼。知识这玩意儿是为数不多的越分享越多、越碰撞越好的东西。 13年底时我恢复了在CSDN的博客更新,其实这个时候我工作已经很少用Qt了,但Qt刚好出了支持Android的版本,我就想研究它。Qt还出了Qt Quick这个迷人的小姑娘,我也想研究它。于是不断地在博客上记录我的学习历程,我知道的都讲出来给大家看,不作保留。 后来电子工业出版社博文视点的策划编辑高红霞老师联系我,问我愿不愿意出书,那当然愿意啊,我有出书的情结嘛。说干就干了,我们一个电话没打过,事情就敲定了,我开始挑灯夜战,天天晚上都写,不是一点就是两点。不写的时候也在琢磨怎么写。周末也搭上了。连女儿我也很少陪她玩儿了。总之我全身心地投入了这件事情当中,也没在意老婆说的“万一卖不好岂不白辛苦”这种问题,我喜欢,我愿意这么干,我就这么干了。老婆善解人意,支持我,女儿小小年纪也支持我,这是最令我开心的事儿。 《Qt on Android核心编程》这本书就这么出来了,我人也瘦了十来斤,不过我要说的是,做了,爱了,享受了这个过程,无怨无悔。 在写《Qt on Android核心编程》的时候,我发现Qt Quick这个框架无论如何不能包含在里面了,而这么好的东西如果我不把她展示出来,那就太暴殄天物了。于是我跟高老师讲我还要做一本书,Qt Quick的,而且目前国内没有同主题的书,于是我就做选题做大纲,于是又通过了,事儿就这么成了,于是我马不停蹄又投入了新的写作。于是几个月后《Qt Quick核心编程》出来了。 请容许我讲讲这两本书吧。
CSDN:当Qt跨界牵手Android,移动开发会有什么不同? 安晓辉:有这么几点,我觉得非常重要。 1. 跨平台,之前说过了,你为Android开发的应用,稍作改动,就可以支持iOS和其它平台,想想就兴奋嘛。你只要学了Qt,就拥有了全平台的神器。 2. 开发的便利性,比方说你开发Android应用,需要模拟器,而AVD又慢得要死要活的。Qt就不同了,你直接可以在桌面环境下调试你的应用逻辑、甚至是界面,非常方便。Android就不行,因为界面是必须依赖Android系统。 3. 丰富、成熟、强大的类库 ,比如网络处理的类库,以http为例,天生是异步的,很好用。而Android提供的Http类库,比较难用,想异步,就得配上线程,不友好么,这点从我写的一篇介绍AsyncHttpClient的博文的点击量就可以看出来,大家都在寻找更好用的Android网络类库。Qt还有很多其它的类库也很强大,看我的《Qt on Android核心编程》就知道了。 4. 经验的延续性 ,比如你用过Qt开发桌面软件,用它开发Android等移动软件,你的经验一脉相承,没有陡峭的学习曲线。而就算是Java开发人员,要开发Android应用,也要重新学习Android的UI类库。 CSDN:初学者如何借助Qt开发Android应用? 安晓辉:只要针对Android的环境搭建起来了,其它的事情和桌面开发差不多,很方便。 注:更多精彩敬请关注安晓辉老师的Qt on Android专栏 |