從Swift看Android與iOS的近況發展


Apple在WWDC 2014年的其中一個重點發表,就是「Swift程式語言」,網路上已成了最新的手機開發界最注目的焦點話題,這是一個幾乎是集各家精華的高階程式語言。有許多網路的專家評論,在探討為什麼這個語言會那麼受到重視,對比之前Google推出的Go程式語言,發表過後並沒有受到像Swift的注目,這篇是我個人的一些感想。

More Than a Language(不只是語言)

在WIRED雜誌中的這一篇「Why Apple’s Swift Language Will Instantly Remake Computer Programming」中有提到一些令人認同的說法,Swift並不是單單只是個程式語言,它在背後所包含的,還有對語言非常重要的編譯器LLVM(Swift並非是直譯式語言),這個由Steve Jobs時代就領導Mac及iOS編譯器團隊的天才 - Cris Lattner所主導開發的。程式語言固然有它的設計背景及目的,沒有好的編譯器,再好學或是功能再強大的程式語言,也是英雄無用武之地。Swift並非是一個憑空出現的程式語言,它有一個比Java還年長的哥哥 - Objective-C程式語言,Objective-C程式語言一直是Apple用於開發應用程式的基礎,在iPhone與iPad火紅後,這個原本默默無閒的語言,一度成為手機開發界的程式語言一哥。它是個基於C語言的物件導向混合語言,有非常多C語言的特性,可以說是C語言擴大物件導向特性後的母集合。Apple在2006年對這個語言進行大幅度的改造,讓它擁有更多現代化語言的支援,例如64位元支援、垃圾收集等等。距離這時間又過8年之久,Swift語言的出現,其中有不少Objective-C的影子,其中有許多是對Objective-C的改進、或是加強的作法,現在的Swift語言可以和Objective-C共用及引用,或是共存於同個程式之中,Apple並沒有像有些媒體在說的「Objective-C byebye, Swift hello」的作法,畢竟Swift還是個新的程式語言,需要經過時間和市場的考驗,沒有任何公司會用A一定取代B的作法,更何況是像Apple這麼大的公司。

反觀Google的Android陣營,因為歹戲拖棚的Java語言的專利權問題(正確來是在某些函式庫或API的專利所有權,語言本身並沒有問題),還在和Oracle進行世紀法律戰。事實上Oracle在開放原始碼界是惡評頗多,以之前被收購的MySQL資料庫為例,在最近一、二年據說不斷的提高商業的授權金之外,在開放原始碼的使用社群也呈現停滯不前和封閉的情況,原先的很多大公司的使用者如Google、Redhat、Wikipedia等,都宣佈要轉換到相容的MariaDB,今年底有可能出現有五五波的市佔率。 Oracle公司利用Java語言的專利權打官司,當然是為了之前併購所花的成本的收益,商業上的行為是理所當然,但有Java資深的原開發團隊站出來批評,之前還有出現有很多人在討論版上問說,如果用了Java語言寫商用軟體去賣,需不需要繳專利或權利金給Oracle之類的,真是人心惶惶。在OpenJDK之類的取代方案的效能還相差一大截的情況下,短時間也很難解決這個問題。雖然Google在2010年左右推出的Go語言,至今還談不上有很多什麼典型的應用,更不用說要用在手機開發上。Android的核心是Linux的一個分支,其中使用的App是使用Java語言為主的bytecode,Android應用程式通常透過Android SDK進行編譯,執行環境是Google所擁有的Dalvik Virtual Machine,而非使用Java Virtual Machine。

The Power of IDE(開發工具之力)

Apple一向提供免費又好用的Xcode(只能在Mac OS X上使用),這次針對Swift語言也立即有新的Xcode6 beta版本可以讓開發者嘗鮮,在新的iOS7也已經可以支援使用Swift開發的應用程式。當然IDE在開發應用程式是非常重要的,它整合了多種所需的開發工具、編譯器、除錯器和模擬器等等。Xcode是十分優秀的IDE軟體,隨著Mac OS X或iOS的改版,都會有對應的新的功能加入。

談到Google的Android,就不能不說之前實在有夠難用的ADT+Eclipse這個開發工具的組合,有用過的人都知道,跑的慢而且常出錯,再加上跑起來會讓人睡著的Android ARM模擬器,實在沒有去買台Android手機或平板,要測試這些Android App實在有難度。在去年2013的Google I/O大會,Google和JetBrains公司合作了新的整合開發工具 - Android Studio,這家公司的IDE軟體是十分有名的,不論是在功能、效能或智能的輔助,遠遠大勝Eclipse這個全能型的IDE開發工具。Android Studio也加入一些新的Android開發輔助工具的支援,只是一年過去了,Android Studio仍然還在beta版本,它的穩定性…也用過的人才知道,我個人認為是還是常有不穩定的情況,或許又是今年又新增了很多新的應用功能吧。在開發者社群上仍然還是有很多開發者保持觀望的態度,加上最近Eclipse陣營也有發奮圖強的感覺,持續發佈新版本,新的版本穩定性和效能用起來都好很多。在模擬器的部份,像Genymotion或是用Intel提供的x86模擬器,雖然有部份功能被限制住,但跑起來實在是太順暢了。不能不說現在開發Android App的環境改善了很多,如果「順利地」的隨著IDE穩定性和效能的改善,或許開發Android App的人會比較快樂些。

OS Version(作業系統版本)

iOS長久以來在Apple公司的專權管理下,在作業系統的版本都能保持在較新的情況,而且App Store也有很嚴格的管理。雖然可以透過特定工具破解安全機制(JB),然後進行安裝盜版的App軟體,但仍然有超過一半的使用者並不會這麼作。畢竟破解了安全機制,也代表個資或安全性曝露在很大的風險下。iOS在中國地區是很奇蹟式的有存在App Store的,四年過去了,也創造出真正有獲利和出知的案例。iOS在中國的市佔率並不高,只有個位數字,但在市場上的知名度和品牌的形象,卻是非常的好。iOS要推新的功能或服務,甚至像Swift這樣的語言相當的容易,所有的iOS開發者都知道這一點,沒有什麼後顧之憂。

Android長久以來都是以壓倒性的數量,佔去智慧手機的作業系統市場佔有率,但其使用的版本之混亂實在難以想像,這到底是一種行銷的策略還是根本沒預料的結果?在2014年的Android發表了最新的Android KitKat,但是在市場上還有不斷上市的3年前的2.2、2.3作業系統版本(約有20%,其實我覺得沒統計到的更多)。Android的開放態度也讓電信業者或手機業者自行發揮到了極致的程度,各種硬體、螢慕大小、介面有的沒有的一大堆。尤其是在Google管不到的中國地區,Android的"開放精神"更加發揚光大,除了複製了Google該有的服務如Gmail、Google Map外,連Google Play的App市集也都是自家搞起來一整套,加上從Google Play破解而來的一大堆好用的遊戲和軟體(甚至免費的都去廣告和浮水印),幾乎是自成一格的、具有濃厚中國風的"安卓",另外在中國的網路政策下,像Facebook、Twitter、Intragram、Youtube之類的網路服務,在這些手機上是看不到的。

Google自然不是省油的燈,Android雖然是開放原始碼,但也有沒開放的部份,許多的核心技術以及新的技術走向,仍然是由Google所控制住。再者,Android中的問題和臭蟲非常的多,大部份的中國廠商也只能自力救濟或是只作外觀高階內部低階的智慧手機,主要針對低價的國內市場,也沒辦法出口和其他大廠牌競爭。至於混亂的App市場,許多App開發者和廠商也多半往國外有Google Play的市場經營,在中國的App市場是無利可圖的,因為第三方App市場的安全環境十分脆弱,造成大概只有破解和駭客比較有利可圖。中國的Android發展並不是特例,在印度、中東地區也有類似的情況發生。Android的新功能或新服務,除了因為版本混亂之外,常常也是都是非常先進或beta的很前面,沒有個一、二年時間看不太到有實作的硬體出現。現有的廠商多半都是著重於硬體規格的比較,或是同規格更低價的方式來競爭,對於軟體的著墨反而比較少。

作業版本加上硬體規格的混亂,以及App市場的控管不良,Android的開發者十分頭痛這些問題。雖然(聽起來應該)能面對很大的市場,在開發者的收益部份,Android硬是比iOS少了很多。這樣的情況在這一兩年內並沒有減輕,反而有變本加厲的情況。這個問題似乎變得愈來愈棘手難以解決,尤其是在像中國這樣的App市場,有超過20個以上的App商店提供者,從電信業者到網站入口業者不等,加上盜版風氣及無法可管,付費的Android App似乎愈來愈難以生存。

The Future

當然,Swift不是什麼救世靈藥,Android被Oracle告短時間也不會有什麼動搖市場的影響。其實我一直認為這兩大陣營的對象原本就不同,Android的走向有點像是Windows在PC的方式,很多不同的硬體都可以支援的作業系統,只是時至今日,Android比Windows開放多了,有能力的廠商自然會搞出自己的一套修改版或加強版之類的。而iOS的走向依然是在Mac OS X,而且比Mac OSX還封閉,Mac OS X因為用了Intel的硬體後,出現了大量黑蘋果的使用者。而iphone和ipad依然是使用Apple自行研發設計的硬體,他的價格定位仍然是在高價的客群。

在這篇文章中,思考為什麼Apple可以發展Swift而Android作不到,當然能看到未來的一些蛛絲馬跡,iOS仍然會持續走向封閉而高價的工業設計精品路線,這條路是Android短時間作不到的,Android的創新而廣泛的應用,會更擴到到各種的領域中,這也是iOS作不到的。各自發展出一片天空了。