新聞中心
[[58181]]【2012年2月22日 外電頭條】本文將主要從開發(fā)者的角度,對Android和QT這兩大平臺作一個全方位的比較,希望對移動開發(fā)者有所幫助。

創(chuàng)新互聯(lián)建站主營張家界網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),張家界h5重慶小程序開發(fā)搭建,張家界網(wǎng)站營銷推廣歡迎張家界等地區(qū)企業(yè)咨詢
以下為全部譯文:
Android PK Qt:平臺概述
大多數(shù)Android應(yīng)用程序是用Java開發(fā)的,它們在Dalvik虛擬機(jī)里面運(yùn)行。不過,Android僅僅借鑒了Java的語言語法,并不提供一套標(biāo)準(zhǔn)的應(yīng)用編程接口(API),比如Java SE和Java ME里面的標(biāo)準(zhǔn)API。像觸摸屏和存儲這些設(shè)備服務(wù)通過谷歌服務(wù)API來進(jìn)行訪問。
請參閱專題:Android開發(fā)應(yīng)用詳解
雖然Android操作系統(tǒng)基于Linux內(nèi)核,但它本身不是一款Linux操作系統(tǒng)。它既沒有原生的窗口系統(tǒng),也不支持諸如GNU C之類的標(biāo)準(zhǔn)Linux庫。要想運(yùn)行用C或其他語言編寫的應(yīng)用程序,必須編譯成原生代碼,這可以通過Android原生開發(fā)工具包(Android NDK)來完成(欲知詳情,請參閱譯文)。
Qt則是一款跨平臺框架,面向Symbian、Maemo和MeeGo。雖然Qt為Python、Ruby和Perl等幾種編程語言提供了綁定機(jī)制,但是應(yīng)用程序主要是用C++來編寫的,并由額外的擴(kuò)展件來加以改進(jìn)。這些擴(kuò)展件由預(yù)處理程序來實(shí)現(xiàn),預(yù)處理程序在編譯之前生成標(biāo)準(zhǔn)的C++代碼。眾所周知,Qt框架易于使用,而且支持桌面端出色的圖形用戶界面(GUI)窗口組件。最近對移動平臺的改進(jìn)、尤其是Qt Mobility和Qt Quick著實(shí)吸引人。憑借成熟強(qiáng)大的Qt Creator集成開發(fā)環(huán)境(IDE),Qt框架在移動應(yīng)用開發(fā)領(lǐng)域找到了一席之地。
請參閱專題:Qt編程基礎(chǔ)入門
| Android VS Qt:移動開發(fā)者眼里誰更強(qiáng)? |
| Android(設(shè)備數(shù)量為王,Android將獨(dú)步天下) |
| Qt(跨平臺框架,應(yīng)用用C++開發(fā),Geek的***) |
#p#
Android PK Qt:應(yīng)用程序組件和API
Android架構(gòu)的一個主要概念是組件復(fù)用(component reuse)。這樣便于發(fā)布活動、服務(wù)和數(shù)據(jù),并與其他應(yīng)用程序共享活動、服務(wù)和數(shù)據(jù)。Android有四個基本的組件,每個組件有著特定的目的?;贏ndroid開發(fā)的軟件多少會用到下列應(yīng)用服務(wù)。
- Activity Manager:該服務(wù)控制著任何活動的生命周期,包括活動堆棧的管理。活動為用戶的交互提供了一種接口。這是Android應(yīng)用程序的基本構(gòu)建模塊,負(fù)責(zé)創(chuàng)建窗口。所有活動都是android.app.Activity的子類,其中用戶界面的元素通過setContentView(View)來設(shè)定。視圖用于用戶界面的構(gòu)建。
- Services:Service組件在后臺運(yùn)行,基本上是為了執(zhí)行冗長的操作或遠(yuǎn)程進(jìn)程。它們沒有用戶界面,作為android.app.Service的子類來實(shí)現(xiàn)。(視頻專題:Android組件-Service)
- Content Providers:這種組件充當(dāng)共享數(shù)據(jù)的存儲庫,無論共享數(shù)據(jù)是文件系統(tǒng)、SQLite數(shù)據(jù)庫還是其他持久性存儲位置。Content providers作為android.content.ContentProvider的子類來實(shí)現(xiàn)。
- Broadcast Receivers:電池電量很少、屏幕被關(guān)閉時,該組件充當(dāng)響應(yīng)系統(tǒng)廣播通知的角色。它作為android.content.BroadcastReceiver的子類來實(shí)現(xiàn)。
Android應(yīng)用程序始于Activity實(shí)例。這個代碼片段演示了基本理念。
- package org.mypackage.mynamespace;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- public class Androidproj2Activity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TextView textView=new TextView(this);
- textView.setText("Hello World");
- setContentView(textView);
- }
- }
Qt用不同的方式來處理Android針對活動所作的處理。它使用了幾個組件,比如域類或狀態(tài)機(jī)來跟蹤組件狀態(tài)。如果使用之前版本的Qt,在創(chuàng)建用戶界面時,你就得使用窗口組件,或者在QGraphicsView上構(gòu)建屏幕。結(jié)果是用戶體驗(yàn)很差勁,在觸摸屏手機(jī)上更是差勁。但是隨著Qt Mobility和Qt Quick的發(fā)布,用Qt移動平臺來開發(fā)應(yīng)用程序變得更切實(shí)際了。
Qt Mobillity API框架提供了一系列廣泛的功能和技術(shù),包括如下:
- Bearer Management:該API控制著系統(tǒng)的連接狀態(tài)、管理可用網(wǎng)絡(luò)連接以及使用***的可用連接。
- Contacts:該API讓客戶機(jī)能夠請求來自本地和遠(yuǎn)地的聯(lián)系人數(shù)據(jù)。
- Location:該API用于接收來自任意數(shù)據(jù)源的位置數(shù)據(jù)。
- Messaging:該API用于發(fā)送和接收多種類型的消息,如短信和電子郵件。
- Multimedia:該API有助于播放和錄制媒體,并管理媒體內(nèi)容的組合。
- Publish和Subscribe:該API用于共享應(yīng)用程序之間的上下文信息和讀取項(xiàng)目值、瀏覽項(xiàng)目值以及訂閱變更通知。
- Service Framework:該API用于發(fā)現(xiàn)任意服務(wù),并為任意服務(wù)創(chuàng)建實(shí)例。
- System Info:該API用于發(fā)現(xiàn)與系統(tǒng)有關(guān)的信息和能力。
Qt Quick為使用QML語言,以聲明式方式建立對象樹提供了一種機(jī)制。QtDeclarative C++模塊將QML與C++對象集成起來。開發(fā)者可以構(gòu)建對智能手機(jī)及其他設(shè)備來說很常見的流暢的用戶界面。查看該列表,即可看到Qt Quick的所有組件。
這個Qt Quick代碼片段讓你可以大致了解腳本是什么樣子:
- import Qt 4.7
- Rectangle {
- Width : 270
- Height : 170
- Text {
- anchors . horizontalCentre : parent . horizontalCenter
- anchors . verticalCenter : parent . verticalCenter
- text : "Hello World"
- }
- }
Qt移動平臺的基本起始點(diǎn)是main方法。下面是一個基于窗口組件的移動應(yīng)用程序的示例起始點(diǎn):
- #include "mainwindow.h"
- #include
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- MainWindow mainWindow;
- mainWindow.setOrientation(MainWindow::ScreenOrientationAuto);
- mainWindow.showExpanded();
- return app.exec();
- }
| Android VS Qt:移動開發(fā)者眼里誰更強(qiáng)? |
| Android(設(shè)備數(shù)量為王,Android將獨(dú)步天下) |
| Qt(跨平臺框架,應(yīng)用用C++開發(fā),Geek的***) |
#p#
Android PK Qt:平臺的優(yōu)缺點(diǎn)
由于Android是一款手機(jī)開發(fā)平臺,其觸摸屏和攝像頭等API訪問系統(tǒng)資源再自然不過了。而Qt則是一款跨平臺的應(yīng)用框架,它***面向桌面端,后來借助Qt Mobility包及其API擴(kuò)展到了移動平臺。因而,Qt訪問系統(tǒng)資源的機(jī)制大不一樣。表1顯示了Android的一些主要功能和Qt的對應(yīng)功能。
表1
|
Android |
Qt移動平臺 |
|
借助ContactsContract和CalendarContract等API,Android能夠管理個人信息(聯(lián)系人和日歷)。 |
Qt Mobility為個人信息管理提供了一套API,比如Contacts API、Organizer API和Versit API。 |
|
Android讓用戶可以訪問用于監(jiān)控網(wǎng)絡(luò)類型和連接速度等基本電話信息的Telephony API,以及用于處理電話號碼串的實(shí)用工具。 |
Qt Mobility通過Bearer Management API,提供了與AndroidTelephony API對應(yīng)的API。 |
|
Android中的消息傳送通過Message API來訪問。 |
Qt Mobility提供了自己的Messaging API。 |
|
用于視頻編碼的圖像捕獲設(shè)置、播放/停止預(yù)覽、拍取照片和檢索幀都可以通過CameraAPI來訪問。 |
Qt Mobility提供了Multimedia API,以處理攝像頭硬件及其他添加的功能。 |
|
在Android中,開發(fā)者可以通過XML描述文件或IDE中的布局設(shè)計器(如Eclipse)裝入應(yīng)用程序的用戶界面。 |
Qt for Symbian提供了設(shè)計應(yīng)用程序的兩種方法:Qt Creator中的Form Designer和Qt Quick的QML,用于布局設(shè)計。 |
|
Android基于Java和Dalvik虛擬機(jī),它們離不開基于Linux的Android操作系統(tǒng)。 |
Qt主要基于C++,是一款跨平臺的應(yīng)用框架,離不開Symbian、Maemo和Meego等操作系統(tǒng)。 |
|
Android應(yīng)用程序局限于Android平臺,而該平臺主要是為智能手機(jī)、平板電腦其他手持設(shè)備而開發(fā)的。 |
Qt是一種跨平臺框架,主要為桌面開發(fā)而設(shè)計,后來移植到了移動平臺。一個合理設(shè)計的Qt應(yīng)用程序可以在Symbian、Maemo和Meego移動設(shè)備上執(zhí)行,也可以在Windows、Linux和Mac OS桌面平臺上執(zhí)行,不需要任何大幅改動。 |
結(jié)束語
對每一個開發(fā)項(xiàng)目來說,歸根結(jié)底就看產(chǎn)品的高效性和適銷性。由于各大廠商開始制造基于Android的智能手機(jī)、平板電腦、電子書閱讀器及其他手持設(shè)備,Android及其操作系統(tǒng)無疑證實(shí)了其適銷性。實(shí)際上,似乎是個劣勢的因素(Android應(yīng)用程序局限于Android平臺)恰恰成了Android平臺的一大優(yōu)勢。
Android的開放理念也確保了只要編寫擴(kuò)展件或替換件,就能消除用戶界面或原生應(yīng)用程序設(shè)計方面的任何缺陷。Android為你提供的工具可以開發(fā)出外觀、感覺和功能與你設(shè)想的一模一樣的手機(jī)界面和應(yīng)用程序。不過,Android開發(fā)者的工作效率因速度緩慢的仿真器受到了阻礙。
另一方面,Qt通過Qt Creator IDE,提供了一種非常高效的開發(fā)環(huán)境。由于Qt 不是為某一款操作系統(tǒng)而設(shè)計,Qt應(yīng)用程序在智能手機(jī)領(lǐng)域的適銷性高度依賴Symbian、MeeGo和Maemo等操作系統(tǒng)。然而,Qt應(yīng)用程序可以移植到Android設(shè)備上,不過要獲得技術(shù)上的成熟性可能需要借以一段時日。
| Android VS Qt:移動開發(fā)者眼里誰更強(qiáng)? |
| Android(設(shè)備數(shù)量為王,Android將獨(dú)步天下) |
| Qt(跨平臺框架,應(yīng)用用C++開發(fā),Geek的***) |
網(wǎng)頁名稱:“AndroidVSQt”:移動開發(fā)者眼里誰更強(qiáng)?
本文URL:http://www.dlmjj.cn/article/djjddpc.html


咨詢
建站咨詢
