自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

“Android VS Qt”:移動(dòng)開(kāi)發(fā)者眼里誰(shuí)更強(qiáng)?

譯文
新聞 Android
雖然Android和Qt這兩大開(kāi)發(fā)平臺(tái)的架構(gòu)大不一樣,但是它們有著一個(gè)共同的目的:為開(kāi)發(fā)移動(dòng)應(yīng)用程序提供一種高效的框架。這邊Android作為一種面向智能手機(jī)的豐富應(yīng)用開(kāi)發(fā)框架,已立穩(wěn)了腳跟;那邊Qt以及先后問(wèn)世的Qt Mobility和Qt Quick卻也是這個(gè)領(lǐng)域強(qiáng)有力的競(jìng)爭(zhēng)者。

[[58181]]【2012年2月22日 51CTO外電頭條】本文將主要從開(kāi)發(fā)者的角度,對(duì)Android和Qt這兩大平臺(tái)作一個(gè)全方位的比較,希望對(duì)移動(dòng)開(kāi)發(fā)者有所幫助。

以下為全部譯文:

Android PK Qt:平臺(tái)概述

大多數(shù)Android應(yīng)用程序是用Java開(kāi)發(fā)的,它們?cè)贒alvik虛擬機(jī)里面運(yùn)行。不過(guò),Android僅僅借鑒了Java的語(yǔ)言語(yǔ)法,并不提供一套標(biāo)準(zhǔn)的應(yīng)用編程接口(API),比如Java SE和Java ME里面的標(biāo)準(zhǔn)API。像觸摸屏和存儲(chǔ)這些設(shè)備服務(wù)通過(guò)谷歌服務(wù)API來(lái)進(jìn)行訪問(wèn)。

請(qǐng)參閱51CTO專題:Android開(kāi)發(fā)應(yīng)用詳解

雖然Android操作系統(tǒng)基于Linux內(nèi)核,但它本身不是一款Linux操作系統(tǒng)。它既沒(méi)有原生的窗口系統(tǒng),也不支持諸如GNU C之類的標(biāo)準(zhǔn)Linux庫(kù)。要想運(yùn)行用C或其他語(yǔ)言編寫的應(yīng)用程序,必須編譯成原生代碼,這可以通過(guò)Android原生開(kāi)發(fā)工具包(Android NDK)來(lái)完成(欲知詳情,請(qǐng)參閱51CTO譯文)。

Qt則是一款跨平臺(tái)框架,面向Symbian、Maemo和MeeGo。雖然Qt為Python、Ruby和Perl等幾種編程語(yǔ)言提供了綁定機(jī)制,但是應(yīng)用程序主要是用C++來(lái)編寫的,并由額外的擴(kuò)展件來(lái)加以改進(jìn)。這些擴(kuò)展件由預(yù)處理程序來(lái)實(shí)現(xiàn),預(yù)處理程序在編譯之前生成標(biāo)準(zhǔn)的C++代碼。眾所周知,Qt框架易于使用,而且支持桌面端出色的圖形用戶界面(GUI)窗口組件。最近對(duì)移動(dòng)平臺(tái)的改進(jìn)、尤其是Qt Mobility和Qt Quick著實(shí)吸引人。憑借成熟強(qiáng)大的Qt Creator集成開(kāi)發(fā)環(huán)境(IDE),Qt框架在移動(dòng)應(yīng)用開(kāi)發(fā)領(lǐng)域找到了一席之地。

請(qǐng)參閱51CTO專題:Qt編程基礎(chǔ)入門  


Android VS Qt:移動(dòng)開(kāi)發(fā)者眼里誰(shuí)更強(qiáng)?
Android(設(shè)備數(shù)量為王,Android將獨(dú)步天下)
Qt(跨平臺(tái)框架,應(yīng)用用C++開(kāi)發(fā),Geek的***)
 

#p#

Android PK Qt:應(yīng)用程序組件和API

Android架構(gòu)的一個(gè)主要概念是組件復(fù)用(component reuse)。這樣便于發(fā)布活動(dòng)、服務(wù)和數(shù)據(jù),并與其他應(yīng)用程序共享活動(dòng)、服務(wù)和數(shù)據(jù)。Android有四個(gè)基本的組件,每個(gè)組件有著特定的目的?;贏ndroid開(kāi)發(fā)的軟件多少會(huì)用到下列應(yīng)用服務(wù)。

  • Activity Manager:該服務(wù)控制著任何活動(dòng)的生命周期,包括活動(dòng)堆棧的管理?;顒?dòng)為用戶的交互提供了一種接口。這是Android應(yīng)用程序的基本構(gòu)建模塊,負(fù)責(zé)創(chuàng)建窗口。所有活動(dòng)都是android.app.Activity的子類,其中用戶界面的元素通過(guò)setContentView(View)來(lái)設(shè)定。視圖用于用戶界面的構(gòu)建。 
  • Services:Service組件在后臺(tái)運(yùn)行,基本上是為了執(zhí)行冗長(zhǎng)的操作或遠(yuǎn)程進(jìn)程。它們沒(méi)有用戶界面,作為android.app.Service的子類來(lái)實(shí)現(xiàn)。(51CTO視頻專題:Android組件-Service) 
  • Content Providers:這種組件充當(dāng)共享數(shù)據(jù)的存儲(chǔ)庫(kù),無(wú)論共享數(shù)據(jù)是文件系統(tǒng)、SQLite數(shù)據(jù)庫(kù)還是其他持久性存儲(chǔ)位置。Content providers作為android.content.ContentProvider的子類來(lái)實(shí)現(xiàn)。 
  • Broadcast Receivers:電池電量很少、屏幕被關(guān)閉時(shí),該組件充當(dāng)響應(yīng)系統(tǒng)廣播通知的角色。它作為android.content.BroadcastReceiver的子類來(lái)實(shí)現(xiàn)。 

Android應(yīng)用程序始于Activity實(shí)例。這個(gè)代碼片段演示了基本理念。

  1. package org.mypackage.mynamespace; 
  2. import android.app.Activity; 
  3. import android.os.Bundle; 
  4. import android.widget.TextView; 
  5. public class Androidproj2Activity extends Activity {   
  6.      @Override  
  7.    public void onCreate(Bundle savedInstanceState) {  
  8.        super.onCreate(savedInstanceState); 
  9.        TextView textView=new TextView(this); 
  10.        textView.setText("Hello World"); 
  11.        setContentView(textView);     

Qt用不同的方式來(lái)處理Android針對(duì)活動(dòng)所作的處理。它使用了幾個(gè)組件,比如域類或狀態(tài)機(jī)來(lái)跟蹤組件狀態(tài)。如果使用之前版本的Qt,在創(chuàng)建用戶界面時(shí),你就得使用窗口組件,或者在QGraphicsView上構(gòu)建屏幕。結(jié)果是用戶體驗(yàn)很差勁,在觸摸屏手機(jī)上更是差勁。但是隨著Qt Mobility和Qt Quick的發(fā)布,用Qt移動(dòng)平臺(tái)來(lái)開(kāi)發(fā)應(yīng)用程序變得更切實(shí)際了。

Qt Mobillity API框架提供了一系列廣泛的功能和技術(shù),包括如下:

  • Bearer Management:該API控制著系統(tǒng)的連接狀態(tài)、管理可用網(wǎng)絡(luò)連接以及使用***的可用連接。 
  • Contacts:該API讓客戶機(jī)能夠請(qǐng)求來(lái)自本地和遠(yuǎn)地的聯(lián)系人數(shù)據(jù)。 
  • Location:該API用于接收來(lái)自任意數(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語(yǔ)言,以聲明式方式建立對(duì)象樹(shù)提供了一種機(jī)制。QtDeclarative C++模塊將QML與C++對(duì)象集成起來(lái)。開(kāi)發(fā)者可以構(gòu)建對(duì)智能手機(jī)及其他設(shè)備來(lái)說(shuō)很常見(jiàn)的流暢的用戶界面。查看該列表,即可看到Qt Quick的所有組件。

這個(gè)Qt Quick代碼片段讓你可以大致了解腳本是什么樣子:

  1. import Qt 4.7 
  2. Rectangle { 
  3. Width : 270 
  4. Height : 170 
  5. Text { 
  6.      anchors . horizontalCentre : parent . horizontalCenter 
  7.      anchors . verticalCenter : parent . verticalCenter 
  8.      text : "Hello World" 
  9.      } 

Qt移動(dòng)平臺(tái)的基本起始點(diǎn)是main方法。下面是一個(gè)基于窗口組件的移動(dòng)應(yīng)用程序的示例起始點(diǎn):

  1. #include "mainwindow.h" 
  2. #include <QtGui/QApplication> 
  3. int main(int argc, char *argv[]) 
  4.     QApplication app(argc, argv); 
  5.     MainWindow mainWindow; 
  6.     mainWindow.setOrientation(MainWindow::ScreenOrientationAuto); 
  7.     mainWindow.showExpanded(); 
  8.     return app.exec(); 

Android VS Qt:移動(dòng)開(kāi)發(fā)者眼里誰(shuí)更強(qiáng)?
Android(設(shè)備數(shù)量為王,Android將獨(dú)步天下)
Qt(跨平臺(tái)框架,應(yīng)用用C++開(kāi)發(fā),Geek的***)
 

#p#

Android PK Qt:平臺(tái)的優(yōu)缺點(diǎn)

由于Android是一款手機(jī)開(kāi)發(fā)平臺(tái),其觸摸屏和攝像頭等API訪問(wèn)系統(tǒng)資源再自然不過(guò)了。而Qt則是一款跨平臺(tái)的應(yīng)用框架,它***面向桌面端,后來(lái)借助Qt Mobility包及其API擴(kuò)展到了移動(dòng)平臺(tái)。因而,Qt訪問(wèn)系統(tǒng)資源的機(jī)制大不一樣。表1顯示了Android的一些主要功能和Qt的對(duì)應(yīng)功能。

表1

Android

Qt移動(dòng)平臺(tái)

借助ContactsContract和CalendarContract等API,Android能夠管理個(gè)人信息(聯(lián)系人和日歷)。

Qt Mobility為個(gè)人信息管理提供了一套API,比如Contacts API、Organizer API和Versit API。

Android讓用戶可以訪問(wèn)用于監(jiān)控網(wǎng)絡(luò)類型和連接速度等基本電話信息的Telephony API,以及用于處理電話號(hào)碼串的實(shí)用工具。

Qt Mobility通過(guò)Bearer Management API,提供了與AndroidTelephony API對(duì)應(yīng)的API。

Android中的消息傳送通過(guò)Message API來(lái)訪問(wèn)。

Qt Mobility提供了自己的Messaging API。

用于視頻編碼的圖像捕獲設(shè)置、播放/停止預(yù)覽、拍取照片和檢索幀都可以通過(guò)CameraAPI來(lái)訪問(wèn)。

Qt Mobility提供了Multimedia API,以處理攝像頭硬件及其他添加的功能。

在Android中,開(kāi)發(fā)者可以通過(guò)XML描述文件或IDE中的布局設(shè)計(jì)器(如Eclipse)裝入應(yīng)用程序的用戶界面。

Qt for Symbian提供了設(shè)計(jì)應(yīng)用程序的兩種方法:Qt Creator中的Form Designer和Qt Quick的QML,用于布局設(shè)計(jì)。

Android基于Java和Dalvik虛擬機(jī),它們離不開(kāi)基于Linux的Android操作系統(tǒng)。

Qt主要基于C++,是一款跨平臺(tái)的應(yīng)用框架,離不開(kāi)Symbian、Maemo和Meego等操作系統(tǒng)。

Android應(yīng)用程序局限于Android平臺(tái),而該平臺(tái)主要是為智能手機(jī)、平板電腦其他手持設(shè)備而開(kāi)發(fā)的。

Qt是一種跨平臺(tái)框架,主要為桌面開(kāi)發(fā)而設(shè)計(jì),后來(lái)移植到了移動(dòng)平臺(tái)。一個(gè)合理設(shè)計(jì)的Qt應(yīng)用程序可以在Symbian、Maemo和Meego移動(dòng)設(shè)備上執(zhí)行,也可以在Windows、Linux和Mac OS桌面平臺(tái)上執(zhí)行,不需要任何大幅改動(dòng)。

結(jié)束語(yǔ)

對(duì)每一個(gè)開(kāi)發(fā)項(xiàng)目來(lái)說(shuō),歸根結(jié)底就看產(chǎn)品的高效性和適銷性。由于各大廠商開(kāi)始制造基于Android的智能手機(jī)、平板電腦、電子書閱讀器及其他手持設(shè)備,Android及其操作系統(tǒng)無(wú)疑證實(shí)了其適銷性。實(shí)際上,似乎是個(gè)劣勢(shì)的因素(Android應(yīng)用程序局限于Android平臺(tái))恰恰成了Android平臺(tái)的一大優(yōu)勢(shì)。

Android的開(kāi)放理念也確保了只要編寫擴(kuò)展件或替換件,就能消除用戶界面或原生應(yīng)用程序設(shè)計(jì)方面的任何缺陷。Android為你提供的工具可以開(kāi)發(fā)出外觀、感覺(jué)和功能與你設(shè)想的一模一樣的手機(jī)界面和應(yīng)用程序。不過(guò),Android開(kāi)發(fā)者的工作效率因速度緩慢的仿真器受到了阻礙。

另一方面,Qt通過(guò)Qt Creator IDE,提供了一種非常高效的開(kāi)發(fā)環(huán)境。由于Qt 不是為某一款操作系統(tǒng)而設(shè)計(jì),Qt應(yīng)用程序在智能手機(jī)領(lǐng)域的適銷性高度依賴Symbian、MeeGo和Maemo等操作系統(tǒng)。然而,Qt應(yīng)用程序可以移植到Android設(shè)備上,不過(guò)要獲得技術(shù)上的成熟性可能需要借以一段時(shí)日。

【51CTO譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請(qǐng)注明原文出處、作者及51CTO譯者!】


Android VS Qt:移動(dòng)開(kāi)發(fā)者眼里誰(shuí)更強(qiáng)?
Android(設(shè)備數(shù)量為王,Android將獨(dú)步天下)
Qt(跨平臺(tái)框架,應(yīng)用用C++開(kāi)發(fā),Geek的***)
 

責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2012-10-31 11:22:26

Windows 8

2010-08-04 16:26:32

Android開(kāi)發(fā)

2013-10-30 12:51:34

2012-06-13 01:23:30

開(kāi)發(fā)者程序員

2012-11-29 10:02:31

移動(dòng)云應(yīng)用BYOD策略移動(dòng)應(yīng)用程序

2011-12-17 22:22:06

Android

2010-10-15 09:18:36

Android移動(dòng)開(kāi)發(fā)

2011-05-16 09:42:31

2012-10-23 14:01:21

Yibo 客戶端已經(jīng)停

2012-12-31 13:17:10

移動(dòng)開(kāi)發(fā)者營(yíng)銷

2011-12-29 17:09:08

開(kāi)發(fā)者沙龍

2014-09-01 09:53:50

Android框架

2013-09-10 09:35:53

移動(dòng)開(kāi)發(fā)者全能開(kāi)發(fā)者技能

2021-01-14 09:55:21

Java微服務(wù)Go

2013-01-17 13:06:47

移動(dòng)開(kāi)發(fā)者營(yíng)銷推廣

2011-04-06 15:22:00

虛擬引擎移動(dòng)游戲開(kāi)發(fā)

2013-07-19 16:20:27

觸控手游

2012-10-28 10:56:18

2015-09-07 10:15:53

移動(dòng)端開(kāi)發(fā)

2013-07-22 11:28:35

觸控開(kāi)發(fā)者沙龍cocos2d-x
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)