跨平台Qt应用 成就诺基亚下一个辉煌

诺基亚目前的产品现状和竞争对手们

 

 

根据关注智能手机市场的市场调研公司AdMob Mobile Metrics的最新调查结果显示,在全部由智能手机产生的互联网流量中,目前苹果iPhone已经占据全球智能手机网络流量市场份额50%,而苹果iPhone独家运行的iPhone OS系统也已经占据全球智能手机网络流量市场50%的份额,而相比之下Symbian OS只有19%的份额。以一款产品就能取得这样的成绩,不得不说苹果iPhone在新世纪里是前无古人后无来者。

苹果iPhone留给很多用户的印象之一是其独树一帜的外形和触控操作方式,但是从AdMob Mobile Metrics的研究数据来看,苹果iPhone另一最大特色在于其网络浏览方面的功能,深得用户青睐,可以说已经成为全球上网频率和流量最高的手机。随着智能手机的普及和网络的发展,手机上网会越来越普及,如何提高手机用户上网体验成为手机新品的核心竞争力之一,如果忽略了这第一点,一味最求外形新奇或其他附属功能,将是舍本逐末的徒劳之举。

而目前诺基亚全球执行副总裁安西·范沃基(Anssi Vanjoki)在接受媒体采访时承认,诺基亚N97的用户体验不佳。虽然范沃基表示,N97的销量和收入完全达到了公司的目标,但从用户体验的质量来 看,这款产品却“令人极其失望”。想想N97已经是诺基亚手机里数一数二的顶级型号了, 连这样一款顶级型号的手机用户体验都不佳,诺基亚确实迫切需要一款新的优秀产品来提升竞争力。

那么诺基亚真的造不出一款可以和苹果iPhone相媲美的手机吗?诺基亚用N900回答了大家这个问题。

从基于ARM核心技术的Cortex-A8处理器,有效运行频率为600MHz的CPU到独立的图形处理模块,从分辨率高达800×480的屏幕到侧滑盖的全键盘,可以说,从硬件实力上,N900是不输iPhone的。但是为什么N900不能像iPhone那样成为一款划时代的产品呢?小编认为是因为目前诺基亚的软件实力对比苹果软件商店的强大优势还有非常大的差距。

诺基亚的未来还在自己手中

上文我们说到诺基亚的硬件功力是不输苹果iPhone的,但是软件实力上的巨大差距,让这家来自芬兰的传统手机制造商也反攻无术。于是诺基亚于2009年12月11日在北京万豪酒店举办2009诺基亚中国开发伙伴峰会,会议上主要集中于讨论诺基亚的Qt、Ovi和java 应用的开发,和在开发人员生态环境上的发展这些有关“软实力”的问题。

诺基亚全球副总裁邓元鋆说:“我们看到整个世界在变,诺基亚也在变。我们不再是一家手机公司,我们正在转型为一家走向互联网的公司。我们 以前卖手机,我们把这个世界放在用户和消费者的手上,让他们连接到全球,我们要改变这个世界……中国现在是全球最大的互联网市场,拥有最多的用户,到9月 30日,中国已经有超过3亿6千万互联网用户。最新的数字表示,中国的手机用户已经到了7亿5千万。所以现在中国是一个全球最重要的移动互联市场。我们看 一下中国的互联网市场用户到底在用什么呢?音乐、看新闻、即时通信、搜索、社区、电子邮件等等。已经有数量非常庞大各种应用。我们也看到在中国已经有很多 很成功的互联网公司,在这里你看到,在游戏、搜索、门户、电邮、地图、即时通信、博客、社区这些应用,现在已经有很成功的公司。你们也看到这些成功的公司 都有非常大的规模了,而且都是本地的公司。

但是我们也看到另一个趋势,今天的中国互联网市场,已经逐渐走向移动。今天根据第三方的数据,我们看到用手机上网的用户已经占了整个互联网用户的超过一半。在2009年,也就是今年年底,会有接近2.5亿的手机用户用手机来访问互联网,用手机来上网。而且这个增长率是比一般在家里面用电脑,用笔记本来上网的速度要快很多。到2011年,绝大部分的人都会用无线的终端来上网。所以这个趋势以及这个市场规模会越来越大。

我们再看是谁在用手机来上网。在2008年,其实绝大部分还是学生,我们看到2008年学生占了40%左右。但是今年你可以看到,学生的比例已经从40%左右减少到少于20%,是不是学生用手机上网的人数减少了呢?绝对不是。学生用手机上网的人数绝对有很大的增长,但是其他行业的消费者,他们的增长更快,所以总的移动互联用户有很高的增长,学生以外的用户增长的更快,所以企业公司职员、技术人员,还有各种各样的用户都用手机来上网。”

诺基亚在峰会上一再强调自己的转型。我们知道诺基亚经历过历次的重大转型,上一次的重大转型就是诺基亚集中业务到手机产业,成为现今全球最大的手机厂商; 而这一次的转型,诺基亚将从全球最大的手机厂商,转型为一家互联网公司和全球重要的软件及应用平台提供者。是什么支撑诺基亚如此巨大的信心呢?显然是手机互联网的用户在这两年内成倍的增加;诺基亚看到掌上互联网将会给我们的未来生活带来的改变。

不难可以看出,诺基亚也意识到了网络对于未来手机体验的重要性。那么只要抓住网络就可以成功解决摆放在诺基亚面前的所有问题了吗?当然不仅仅是这样,未来的手机应该是一个连接用户和网络的超级随身终端。在便携性和易用性上,手机相比笔记本电脑等传统上网工具具有无可比拟的优势。但是现在手机的硬件还没有强大到跟桌面产品一样,而且手机无线网络还只是有线网络的延伸,并不能取而代之,这时,针对手机的应用产品需求就出现了。满足这部分日益增长的需求就是诺基亚想做的事情。

诺基亚的Qt究竟是什么

既然要满足用户日益增长的针对手机的应用产品的需求,那么诺基亚应该怎么做呢?诺基亚做过一次尝试,就是在iPhone推出不久之后,马上退出了Symbian S60 V5版本的5800来应战,随后又迅速推出了一系列预装Symbian S60 V5版本系统的手机,5530,N97, N97 MINI,5230等等。但是小编还是觉得推出Symbian S60 V5只是诺基亚的缓兵之计。随着最近诺基亚推出Meego和Symbian3,4一系列还在概念中的系统就可以看出。诺基亚确实被iPhone的模式震惊了,自己一直主宰并引导着手机往硬件的逐年改进上发展,突然跳出这么一个“不按常理出牌”的苹果,偏偏靠着无数精彩的软件应用来盈利,并掀起了全球效仿的潮流。马上拿出一款产品来应对潮流也算是当时诺基亚的明智之选,先稳住市场份额,守住自己出货量龙头老大的地位,然后再想办法来反击。那么现在就是诺基亚要反击的时刻,在接下来的2010年,诺基亚会逐步把那些还在概念中的系统变成现实,但是新机应该不见得很快就会上市,因为这次诺基亚一定希望给大家带来全新的体验,一概近些年被苹果iPhone追着屁股打的局面。

于是诺基亚低调的给大家带来了Qt。简而言之,Qt就是一款开发软件和图形界面的工具,它本身也是一款软件产品。Qt 的口号是让用户界面和应用程序开发者创建更好的用户体验 。Qt的优势是一个跨平台应用程序和 UI 开发框架。使用 Qt 只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。在Qt的官方网站下你可以很简单的下载到 Qt的IDE。

集成开发环境(简称IDE Integrated Develop Environment )就是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫做集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。例如,BASIC语言在微软办公软件中可以使用,可以在微软Word文档中编写WordBasic程序。IDE为用户使用Visual Basic、Java和PowerBuilder等现代编程语言提供了方便。不同的技术体系有不同的IDE。比如visual studio.Net可以称为C++、VB、C#等语言的集成开发环境,所以visual studio.Net可以叫做IDE。同样,Borland的JBuilder也是一个IDE,它是Java的IDE。zend studio、editplus、ultraedit这些,每一个都具备基本的编码、调试功能,所以每一个都可以称作IDE。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如 HomeSite、DreamWeaver、FrontPage,等等),因为很多项任务会自动生成。IDE集成代码编辑,代码生成,界面设计,调试,编译等功能,目前还融合了建模功能。

诺基亚使用Qt的目的究竟在何

上文提到过诺基亚这次给大家带来的Qt主要是提供跨平台开发,开发出来的软件应用可以运行在诺基亚现有的Symbian S60,S40,正在开发中的Symbian 3,4,Meego和Meamo中,还可以应用在现有竞争对手的MAC OS,Android中,甚至还可以应用在绝不大部分桌面系统中,就是Windows,MAC OS X和Unix都可以运行用Qt技术开发出来的软件。这样在回过头来看看诺基亚在09年峰会上的决心:诺基亚将从全球最大的手机厂商,转型为一家互联网公司和全球重要的软件及应用平台提供者。一切都很清楚了。

Qt支持所有的UNIX系统,当然也包括Linux,MAC OS X系统,还支持Win7/Vsita,WinNT/Win2k、Windows 95/98平台。
基本上Qt同X-Window上的Motif、Openwin、GTK等图形界面库和Windows平台上的MFC、OWL、VCL、ATL是同类型的。不过Qt还具有下列一些优点。
(1)优良的跨平台特性。
Qt支持下列操作系统:Microsoft Windows 95/98、Microsoft Windows NT、Linux、Solaris、SunOS、HP-UX、Digital UNIX (OSF/1、Tru64)、Irix、FreeBSD、BSD/OS、SCO、AIX、OS390和QNX等。
(2)面向对象。
Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots 的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。
(3)丰富的API。
Qt包括多达250个以上的C++类,还提供基于模板的collections、serialization、file、I/O device、directory management和date/time类。甚至还包括正则表达式的处理功能。
(4)支持2D/3D图形渲染,支持OpenGL。
(5)大量的开发文档。
(6)XML支持。

但是真正使得Qt在自由软件界的众多Widgets(如Lesstif、Gtk、EZWGL、Xforms及fltk等)中脱颖而出的还是基于 Qt的重量级软件KDE。Qt虽然是商业公司的产品,但是走的却是开源路线,提供免费下载,全部都是开放源代码,非商业用途亦采用GPL的版权宣告,著名的Open Source"KDE"项目便是采用Qt开发的。Trolltech也针对嵌入式环境推出了Qt/Embedded产品。与桌面版本不同,Qt/Embedded已经直接取代了X Server及X Library等角色,将所有的功能全部整合在一起。Qt/Embedded同样具有跨平台的特点,省掉了不少移植软件的功夫,这样的概念和Java十分接近。同时它还采用模块化设计,其最大的好处是有弹性,Qt/Embedded号称最小,可以缩到800 KB左右,最多可以长到3 MB(for Intel x86),这样的弹性也让Qt/Embedded更适合在嵌入式环境下生存。Qt/Embedded延续了Qt在X上的强大功能,在底层摒弃了X lib,仅采用FrameBuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏及用户自定义的设备等。Qt/Embedded类库完全采用C++封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。它的类库接口完全兼容于同版本的Qt-X11,使用X下的开发工具可以直接开发基于Qt/Embedded的应用程序QUI界面。与前两种GUI不同的是,Qt/Embedded的底层图形引擎只能采用FrameBuffer,这就注定了它是针对高端嵌入式图形领域的应用而设计的。由于该库的代码追求面面俱到,以增加它对多种硬件设备的支持,造成了其底层代码比较凌乱,各种补丁较多的问题。Qt/Embedded的结构也过于复杂和臃肿,很难进行底层的扩充、定制和移植,尤其是用来实现signal/slot机制的moc文件。Qt/Embedded当前已经升级为Qtopia Core和Qtopia Core,继承了Qt4的新技术,包括:高性能渲染引擎、模板容器类及基于行为的主窗口架构,改进的功能特点包括文本渲染与多线程技术。当编译 Qtopia Core时,可以去除不用的功能,以最小化软件的占用空间。

Qt的担忧:跨平台不是说说那么简单

跨平台是程序设计师长久的梦想,谁都想要程序只写一次,就能在各种平台执行,Java当初就是以『Write once, run every where.』打响知名度,因此号称是终极程序语言,也吸引了很多人头向Java阵营。Java以语言角度算是不错的语言,语法干净简洁,OO支持也算完整,Framework设计的也不错,写出来的程序语法也蛮漂亮的,还Open Source,且支持应用很广,从GUI、Component、Web、Embedded都有支持,但Java技术最大的致命伤就是执行速度缓慢,透过 Virtual Machine技术使得Java得以实现跨平台,什么是Virtual Machine呢?简单的说,就是在给个OS上在装一个JavaOS跑Java程序,这种方式就像你写了一个Windows程序,然后也宣称是跨平台,只要User在Linux或Mac装上VMWare,然后在VMWare下灌Windows XP,这样也能在Linux、Mac下执行你的Windows程序,但经验告诉我们,用VMWare跑其它OS,速度大约只剩下6成左右而已,Java程序速度慢的原因就在这里,这是Virtual Machine的宿命。

C/C++的哲学就不一样了,C/C++强调的是『Write once, compile every where.』,同一份程序代码,只要在该平台重新Compile成该平台的执行档,就能在该平台执行,若文字模式下的程序,的确可以跨平台,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一样且没有标准,所以GUI程序并没办法跨平台Compile,因为各平台都有专属的 Library。但是C/C++优势就是执行速度快,若能解决GUI Library的问题,则跨平台即可解决。

除了GUI Library需要统一外,还得看该Library设计的好不好才行,Linux GUI我没写过就不说了,若在Windows平台,Borland的C++ Builder使用Delphi的VCL Library,Microsoft的Visual C++可以用MFC和.NET Framework,首先来看Borland的C++ Builder,它使用标准的ANSI C++语言开发,利用VCL写出来的程序也算蛮漂亮的,执行速度很快,比较麻烦的是C++ Builder当初为了缩短上市时间,并没有设计自己的Library,而是藉用Delphi的Library,导致C++ Builder在Compile时,是先用Delphi的Compiler将VCL compile成object file后,再用C++ Builder将你写的C++程序compile成object file,最后再用Linker将所有的object file link起来,由于这都是IDE在做,对程序设计师似乎影响不大,但VCL由于是Delphi的Library,所以若想深入研究VCL的source code时,则必须学Delphi的Pascal才行,否则看不懂VCL source code,这也是很多人对C++ Builder却步的原因。

再来看Microsoft的Visual C++,MFC用的是完整的ANSI C++语言,所以语言部分不是问题,但若你看过用MFC写的程序,你一定会惊讶为什么这么复杂,程序代码非常冗长不好看,且MFC是有名的喃学,若 Visual C++搭配.NET Framrwork,则无法使用ANSI C++,得用其.NET平台版本的C++/CLI,相信这点很多人就有意见了,不过.NET Framework由于设计的不错,所以写出来的程序相当精简漂亮,感觉和C++ Builder差不多,不过无论是C++ Builder或Visual C++开发的GUI,所开发出来的程序都无法跨平台,当然也无法跨平台Compile。

之前曾看到有人在讨论Qt,一个跨平台GUI的Framework,当初我以为只是另外一个走Virtual Machine技术的产物,只不过使用C/C++为语言而已,所以当时也没特别注意,今天下课到天珑书局逛逛,看到有Qt的原文书,就顺手翻了一下,我才发现跟我原本想象的完全不一样。

Qt拥有一个单一的Library,让你开发各种不同平台的程序,目前支持Windows、Linux、 Mac、UNIX、Embedded Linux,讲白话点,就是它提供了一个Library让你开发GUI程序,写好之后,只要在各平台重新Compile后,就可以在各平台执行,而且使用完整的ANSI C++语言,且不限Compiler,只要是C++的Compiler都可以,重要的是,该Library相当漂亮,写出来的程序很像C++ Builder或.NET Framework的那样精简,不会向MFC那样复杂。目前Qt已经到第四个版本,GUI部分算支持的相当完整,且支持数据库、XML、Multi- Thread、Socket等方面的programming。若以 OO角度来说,无论后端是什么数据库,只要透过相同的Interface,不同数据库的Class来实做这个Interface,前端GUI的程序写法完全不用改变,同理,面对不同的OS,理论上只要透过相同的Interface,不同OS的Class各自实做这个Interface,前端GUI的程序也完全不用改变,最后只要靠Compiler将程序compile成各平台的原生程序即可,这样即可保证其执行速度,不用再靠Virtual Machine。但很可惜这个理想,这么多年来都没人可以做出来,或许是我孤陋寡闻吧。Qt无疑是GUI终极解决方案,有强力的ANSI C/C++语言背书,又有单一的GUI Library,且精简漂亮,又能Compile成各平台的原生执行档,几乎是最完美的解决方案了,剩下只是看其好用不好用而已。C/C++技术还有什么遗憾吗?就是Web,目前还没看到C/C++可以开发Web Application的技术,Microsoft也宣称短期之内不会让ASP.NET支持C++/CLI,若以技术而言,GUI的Library绝对比 Web的Library难度高,因为得面对各平台API的实做,而Web只要吐出HTML即可,不过既然Qt对最难的GUI都能解决了,相信诺基亚这次一定会给全球软件产业产生深远影响。

你可能感兴趣的:(qt,跨平台,library,手机,microsoft,delphi)