Swift難以主導(dǎo)Android平臺(tái)的四個(gè)理由
譯文【51CTO.com快譯】谷歌是否會(huì)將蘋果的Swift語言視為Android平臺(tái)上的“一等公民”? 讓Swift成為Android平臺(tái)上的主流開發(fā)選項(xiàng)無疑困難重重。在今天的文章中,我們將一同探討谷歌為何仍然需要倚重Java。
要找到答案,我們不妨考慮另一個(gè)更為具體的問題:谷歌需要投入多大力量才能讓Swift成為Android開發(fā)者與用戶的***?另外,谷歌為什么要費(fèi)力選擇這樣一條坎坷而漫長的道路?
難題:Android部分
從Android轉(zhuǎn)移至Swift就如同我們舉家移民一樣困難。首先,谷歌需要為Android開發(fā)Swift運(yùn)行時(shí),并保證其功能與現(xiàn)有Java運(yùn)行時(shí)一一對應(yīng)。谷歌在這方面已經(jīng)做出了一些嘗試——包括將Dalvik VM替換為速度更快的ART運(yùn)行時(shí),但二者仍以Java為基礎(chǔ)。
更困難的是,Swift幾乎無法成為Android平臺(tái)上的***語言。投入Swift懷抱的工作必須逐步完成——即首先同時(shí)使用Swift與Java VM,而后慢慢只保留Swift選項(xiàng)。這種過渡需要耗時(shí)數(shù)年,特別是在Android這樣廣泛普及的生態(tài)系統(tǒng)當(dāng)中。
蘋果也面臨著類似的難題,因?yàn)槠湓谶^去兩年中同樣需要在生態(tài)系統(tǒng)中同時(shí)維護(hù)Swift與objective-c。在這一系統(tǒng)當(dāng)中,蘋果擁有著絕對的主導(dǎo)權(quán)。但Android相對來說麻煩更多,因?yàn)槠鋼碛写罅窟\(yùn)營商、手機(jī)制造商再加上谷歌自身這三股重要力量需要平衡。
最終,這一舉措還需要Android開發(fā)者的積極加入——而大多數(shù)人對Swift并不太感興趣。
難題:開發(fā)者部分
除了谷歌制定決策外,開發(fā)者也需要加入進(jìn)來才能保證Swift順利過渡至Android。
當(dāng)初Android之所以選擇了Java,是因?yàn)槠鋼碛胸S富的開發(fā)資源以及從業(yè)者基礎(chǔ)。但更年輕且測試工作還不夠完善的Swift則缺少同樣的發(fā)展動(dòng)力。
不過Swift確實(shí)勢頭強(qiáng)勁,各開發(fā)商的認(rèn)同已經(jīng)讓其在今年4月的Tiobe編程語言排行中位列前二十(目前為第十五名)。
當(dāng)然,開發(fā)者也需要耗費(fèi)相當(dāng)長的時(shí)間來了解并徹底掌握新的語言——這意味著Swift將與Java繼續(xù)共存下去。
由甲骨文轉(zhuǎn)向蘋果
就目前來講,Android計(jì)劃使用OpenJDK而非甲骨文的Java,這主要是由于后者總是在拿后者的知識(shí)產(chǎn)權(quán)騷擾谷歌的開發(fā)工作。但毫無疑問,甲骨文在未來仍將繼續(xù)主導(dǎo)Java的發(fā)展方向。
同樣的,Swift則是蘋果的寵兒。即使已經(jīng)被轉(zhuǎn)為開源,這也只是Swift為了長久發(fā)展并在跨平臺(tái)應(yīng)用中得到肯定的途徑。如果其能夠降低平臺(tái)與運(yùn)行時(shí)對專有技術(shù)的高度依賴性,相信谷歌也將不斷且積極地推動(dòng)Swift轉(zhuǎn)型。
但需要再次強(qiáng)調(diào),Swift的前進(jìn)方向由蘋果所掌握。谷歌當(dāng)然不可能希望自己被關(guān)鍵性競爭對手所控制——即使相關(guān)技術(shù)方案屬于開源項(xiàng)目。從理論角度講,谷歌確實(shí)可以為Swift打造fork并借此取得主動(dòng),但對完整語言的維護(hù)與管理工作將帶來高昂的成本。
按谷歌的思路,轉(zhuǎn)向Go也許更為靠譜
如果谷歌方面真的希望擺脫第三方語言與運(yùn)行時(shí)的束縛,那么由Java轉(zhuǎn)向Swift可能并非***的選擇。內(nèi)部建立語言、運(yùn)行時(shí)及工作鏈才是理想途徑:Go,或者說Golang,正是谷歌的救世主。
Go目前已經(jīng)被應(yīng)用于移動(dòng)開發(fā)領(lǐng)域。其1.5及更高版本能夠同時(shí)支持Android與iOS,且具備“app”軟件包,意味著開發(fā)者能夠?yàn)檫@兩套平臺(tái)編寫全Go應(yīng)用。當(dāng)然需要指出,移動(dòng)設(shè)備對Go的支持能力尚處于實(shí)驗(yàn)性階段。
如果谷歌公司將Go或者Swift作為Java之外的Android平臺(tái)補(bǔ)充方案,那么還有大量工作需要逐步完成。就目前來看,Android生態(tài)系統(tǒng)在相當(dāng)長的周期內(nèi)仍將以Java為核心。
原文鏈接:
【51CTO.com獨(dú)家譯稿,合作站點(diǎn)轉(zhuǎn)載請注明來源】