2010年12月8日 星期三

Qt Conference 2010 會後感言

image

昨天抽空去參加了 Qt Conference 2010。在此特別把看完後的感覺,寫在這裡與大家分享。

對 Qt 有興趣的朋友,我非常推薦去逛逛官網: http://qt.nokia.com 。寫得很好,資料也很豐富。您一定要去試試看!如果,你不排斥英文的話…


何謂 Qt?

Qt 最早是因為兩位 TrollTech(2008 年被 Nokia 收購)的創辦人,於 1991 年時想要開發一種 API,讓 Windows 與 Mac 的程式,用這種 API 開發,就可以執行在兩個平台上,不必個別撰寫。所以,它當初誕生時,就致力以「跨平台」為目標。

與同樣以跨平台為目標的 Java 語言不同,Qt 會編譯成不同平台的「原生碼(Native Code)」,不要求執行端安裝「虛擬機器」後才能執行。兩者的差別在於,倚賴「虛擬機器」才能執行的跨平台語言,在執行時需「當場」翻譯成所在平台能接受的語言,進而有效能上的耗損。而 Qt 不必,執行效能比 Java 會稍微好一點。

Qt 目前可以在 Windows、Mac OS、Linux、以及今年初 Intel 與 Nokia 力推的手機作業系統 MeeGo 上執行。目前最新版本是 2.7.1。整套 Qt 的 SDK,包含可供程式內部呼叫的「類別函式庫(Class Library)」,以及「整合式開發環境(IDE)」。具體可看本篇最上方的 Qt SDK 釋義圖。

為了讓一些已經熟悉 Google Android 的朋友,能以「類比」方式了解 Qt,我製作了下面一個表格。以下資訊是我從會場聽演講聽來的,如果有誤,歡迎指正:


Android
Qt
擁有者
Google
自由軟體基金會
(Intel & Nokia 主推)
底層作業系統 Linux Windows, Mac, Linux, MeeGo 皆可
API 層 Android Qt
使用語言 Java C++
開發工具 Eclipse Qt 自有 IDE
執行檔機械碼 Bytecode 原生碼

大家如果覺得我的說明還不夠「給力」,那可以參考「維基百科」內,有關 Qt 的詞條解釋

Qt 的特色

根據我在會場聽了一天的感覺,Qt 特色如下。我故意不說這是「優點」,因為「優點」實在是因應用場合不同而不同,很難說得準:

  1. 跨平台
    • Qt 可以執行於 Windows、Mac OS、Linux、MeeGo 等平台。
    • 我在當場觀看 Demo 時,發現本來做在手機上用左右翻動換頁的使用行為,用相同的原始碼在 Windows 上重新編譯一遍,包成 Windows Application 的 Qt 應用程式,也有相同的「使用體驗」(用滑鼠左右拖放可翻動換頁)。感覺相當新鮮。如果 PC 上使用的是觸控式螢幕,或者是 Porting 在平板電腦上,應該可以「做一套,跑全套」,節省不少開發時間。
    • 另一個我看 Demo 時被感動到的是,Qt 工程師當場示範從無到有開發一個 Web Cam 監視系統,還在 Windows、Mac OS、Linux (Fedora)、Nokia 手機上各跑一次給我看。從開始到結束大概只有 20 分鐘。讓我折服於 Qt 對支援各種硬體類別的完整性。幾乎每種常見硬體,都有相對應的類別支援。使用上只要 New 出該類別,就可以操控該硬體。如:Web-Cam 的類別「好像」(因為他寫得很快,我又還沒練成「Qt 神功」)叫做 QCamera。
  2. 高效能
    • 由於它不是先編譯成類似 Bytecode 這種中間碼,然後執行時再「當場」、「動態」翻譯成原生碼,所以不會虛耗 CPU 時間,同樣的硬體環境,執行效能會比跑 Java 的 Android 要好一點點。
  3. 開發工具完整
    • 玩過 Android 官方推薦開發工具 Eclipse 的朋友會同意我這點:Eclipse 在支援 Android 程式碼開發還可以,但支援 UI 開發這部份實在小 Bug 太多了。
    • Qt 使用自製的「整合式開發環境(IDE)」,對 Qt 開發絕對是 100% 支援。最主要的是支援 UI Designer 開發的「Qt Designer」,可以讓 UI 設計師「畫」出介面後,產生一種名為 QML (Qt Markup Language) 的檔案,交給程式師繼續用「Qt Creator」以 C++ 語言開發。只要 Qt Designer 畫得出來,就不用怕「是否有辦法實作」這個問題。解決長久以來「介面設計師」與「程式設計師」在「夠不夠炫」與「能不能實作」這兩件事爭執不休的困擾。
  4. 介面設計與程式設計分離
    • Qt 的介面使用 QML 這種類似 CSS (沒錯!雖然它叫 「…ML」,感覺上應該像 XML,但實際看過後,會同意它的語法與 CSS 非常像)的描述語言描述。接著 C++ 工程師可以在 QML 上,透過 Qt Creator,添加自己的程式碼。讓整個程式「動」起來。
  5. 通用函式庫
    • 無論你是開發 Windows、Mac OS、Linux、或 Nokia 目前全面支援的 MeeGo 手機作業系統,通通只要學一種 API,就可以開發出執行於不同平台的應用程式出來。
  6. 與 HTML 整合
    • 如果你已經有使用 HTML 做出來、執行於網頁上的應用程式,如果客戶要求你做出手機上的專用程式(也就是不要用手機上的瀏覽器開啟你的網站使用該網頁),是不是會讓你頭很痛呢?
    • Qt 可以把一個 HTML 頁面 Porting 進來,並且使用 Qt 內建元件「重畫(Re-rendering)」該介面,讓它看起「像」原生的手機應用程式。只要使用 QView.Load( QUrl(“http://….")); 這樣的語法就可以了。而且,用 C++ 寫成的 Qt 函式與生存於 HTML 的 JavaScript 函式,還可以彼此互相呼叫。就我來看,算是整合得相當不錯了!

感想

聽完一天的 Qt 研討會,我會覺得以技術觀點來說,它是個好東西。不過如果太過強調它是個「手機開發平台」,與 Apple 的 Xcode 與 Google 的 Android 硬碰硬的話,那它流行起來的可能性就不高。因為 Qt 的 UI 我覺得沒有 Apple iPhone 漂亮,功能上又頂多跟 Android 打成平手,很難有機會勝出。它應該強調在 Windows App、Mac OS App、Linux App 都可以用相同 API 製作應用程式,極力切入如「數位像框」、「媒體播放器」、「Internet TV」、「導航設備」…這些 Apple 與 Google 著力著不太到(Android 可以在上述設備著力到一點,Apple 則完全不行)的地方,我覺得才能以「後起之秀」與 Apple iOS、Google Android 這些前輩一搏。

會後,我大起膽子向 Nokia 裡負責 Qt 的大頭(Chuck Piercey,Director of Business Development and Key Accounts, Qt Development Frameworks)遞名片、主動攀談。詢問成為 Qt 授權訓練中心的步驟與可能性,他也很親切的表示,亞洲區還沒有負責的人,並把我介紹給歐洲區的 Partner Manager, Ketil Hoigaard,與美洲區的 Partner Manager, Patrick Yi,要我跟他們聊聊。我也跟兩位聊了 15 分鐘,得知成為 Qt 授權訓練中心的步驟。呵呵~還好我用英文唬爛的功力沒退步得太嚴重,最後大家很開心的握手相約保持聯繫,結束一天的 Qt 議程。


喜歡這篇文章嗎?喜歡的話請幫忙按一個「讚」喔!
歡迎加入「紀老師電腦教學網」的 Facebook 粉絲團,取得更多資訊喔!

關於作者
紀俊男,現任和群資訊總經理。曾任職於筌寶電子、趨勢科技、西基電腦、展望電腦等公司。教書經驗約 20 年。專長是程式設計、系統管理、嵌入式系統等領域。您可以在本篇留言與之聯繫、討論、或邀課。

8 則留言:

  1. 請問紀老師有取得Qt教育訓練授權中心嗎?或者是針對C++的程式開發人員有沒有好的自我學習書籍可以推薦呢?

    回覆刪除
  2. 後來沒有。本來看好 Qt 的,不過後來 Android 變成主流,我也就沒再鑽研 Qt。

    C++ 我很推薦「C++ Primer Plus」這本書,已經出到第六版了。不過我個人喜歡看英文書,所以中文書沒太注意。如果您也能接受英文書,您可以看看「C++ Primer Plus」這本。

    以下是該書在 Amazon 的連結:
    http://www.amazon.com/Primer-Plus-6th-Developers-Library/dp/0321776402/ref=sr_1_4?ie=UTF8&qid=1330244445&sr=8-4

    回覆刪除
  3. 據我了解Qt在大陸才有派員,台灣這裡只能自行研究,博碩文化有翻譯代理大陸的電子工業出版社-"精通Qt4視窗介面"的書籍.

    回覆刪除
    回覆
    1. 您好:

      現在台灣有沒有派員我是不太了解。不過 2010 年那時候,台灣的確有個 Qt 的代表,我也跟他見過幾次面。不過該台灣區 Qt Office 只有他一個人「校長兼撞鐘」就是了。Nokia 後來對 Qt 也沒有非常積極(可能 Nokia 自己自顧不暇了吧?),現在到底那個台灣官方 Office 還在不在,我目前轉關注 Android 與 iOS,也很久沒有碰 Qt 了。不過還是感謝您的圖書資訊 :-)

      刪除
    2. 你好,不曉得站長還有在Follow QT的消息嗎?
      我目前在義大利的電子公司工作,公司使用的是QT來開發軟體部分,不過台灣的資料似乎大都在2010年左右,看來兩年前在台灣似乎有流行一陣子,目前自己正在自學QT相關的資訊,因此想要了解近期QT的走向。

      刪除
    3. 您好:

      我現在都轉做 iOS 與 Android。台灣這邊也是漸漸把 Qt 都儀忘了。討論人數越來越少。Nokia 自己本身也改用 Windows Phone 作為主推機種。導致台灣工程師更不看好 Qt。其實我很喜歡 Qt,可惜沒受到台灣工程師的重視。台灣的確從 2010 年開始,把重心轉到 iOS 與 Android 了。

      刪除
  4. 新的QT5好像也可以支援 Android 跟 ios 了,不知道好不好用?!
    好用的話希望QT可以再流行起來

    回覆刪除
  5. 最近在測試QT 5.2 做專題,確實可以在WINDOWS 、MAC 和 android手機上用同一份原始碼 正常編譯執行,只是想了解他與ANDROID直接透過JAVA呼叫JNI的C++函示庫寫法相不知道哪種執行速度會比較快....
    另外QT的物件大多是給電腦使用所以在手機上有些物件要操作可能不會很順手.....

    回覆刪除