《第一行程式碼》作者郭霖:從Java程式設計師到Android開發者的第一步(圖靈訪談)

盼盼姐發表於2014-10-14

郭霖,Android軟體開發工程師。從事Android開發工作四年,有著豐富的專案實戰經驗,負責及參與開發過多款移動應用與遊戲,對Android系統架構及應用層開發有著深入的理解。2013年3月開始,在CSDN上發表Android技術相關博文,很快就獲得了大量網友的好評。短短一年時間部落格訪問量超過50萬次,評價近3000條。榮獲CSDN認證專家,並被評選為2013年CSDN年度部落格之星。2014年,他創作了《第一行程式碼——Android》一書。郭霖現就職於蝸牛移動,繼續從事Android開發工作。

《第一行程式碼》作者郭霖:從Java程式設計師到Android開發者的第一步(圖靈訪談)

問:你是如何成為一位Android開發者的?

也算是機緣巧合吧。之前我走的是Java Web方向,一次偶然的機會了解到了Android作業系統,我覺得移動領域剛剛起步,潛力很大,而且正好又是使用的Java語言,專業和我非常對口,於是我就踏上了這條路。

問:為什麼要寫《第一行程式碼——Android》這本書?它能為想要成為Android開發者的讀者們解決什麼問題?在看你的書之前,需要有什麼樣的技能和知識做基礎?

我很喜歡看書,也看過很多的技術書,寫書對於我來說算是一個紀念。至於為什麼要寫《第一行程式碼——Android》這本書,我認為基礎還是非常重要的,這本書可以很好地幫助Android初學者入門,也可以幫助有經驗的Android開發人員鞏固基礎。

寫這本書的時候我是完全站在初學者的角度上來寫的,因此只要有Java基礎就可以看。對於Java的掌握程度那當然是越熟練越好了,但最低要求是至少要懂Java的基本語法。學習Java的書籍實在是太多了,我也沒有都看過,說不上哪本好,大家還是自己找找看吧。

問:關於Android碎片化問題,你對開發者們有什麼建議?

碎片化的問題確實讓人非常頭疼,這是由於Android系統開源的特性所必然導致出現的問題。在這種問題上我不敢說我對開發者們有什麼建議,但我自己的做法就是不會為了少部分的使用者群而去編寫大量的相容性程式碼。比如說現在Android 2.x的市場已經非常少了,但有很多的軟體還是一定要去相容這些老版本的系統。我認為這種行為其實在一定程度上縱容了碎片化的產生,也變相導致Android新版本系統普及過於緩慢。當然了,沒有提供一種簡便升級系統的辦法是Android新系統無法迅速普及最主要的原因。碎片化問題即使谷歌都沒有辦法完全解決掉,我覺得作為一名普通的開發者就沒有必要去深入研究了。

問:Android 的後臺推送原理是什麼?和iOS 相比有什麼區別?

後臺推送的原理都是相同的,就是讓客戶端和伺服器保持一個長連線,當伺服器想要推送的時候,就傳送一條訊息到指定客戶端就可以了。雖說原理相同,但Android的推送要更加複雜一些,因為iOS系統中已經內建好了推送功能,只需要使用提供好的API就能簡單地完成推送功能。而Android雖說也提供了類似的GCM服務,但由於在國內使用受到很多限制,所以推送還是要自己做的。不過目前國內也有一些第三方的推送平臺,使用它們的話也可以很簡單地完成推送功能。

問:對於想要從事移動開發的程式設計師來說,iOS, Android, WP各有什麼優勢?哪個未來前景更好?

從開發語言上來講,Java和C#相對簡單,上手成本比較低,這是Android和WP的優勢。但iOS目前也推出了Swift語言,很大程度上緩解了OC上手困難的問題。從使用者群體上來講,Android和iOS基本上佔據了絕大部分的使用者群,WP的使用者群體則相對較少。從軟體的豐富程度來講,Android和iOS都擁有絕對的優勢,WP短期內並沒有趕超的勢頭。因此,未來的前景我仍然認為Android和iOS會相對較好,WP的發展情況較難預測。

問:一直以來,Android的內部功能相比於iOS都更勝一籌,比如先進的應用內分享機制、自由定製的launcher 和widget,等等,但是iOS 7 特別是 iOS 8 帶來的新特性在很大程度上趕上甚至反超 Android,你怎麼看?

我從沒認為Android系統要比iOS更勝一籌,雖說我自己是從事Android行業的,但我並不希望Android可以幹掉iOS。這兩個系統各有各的優勢,共存是非常合理的現象。至於iOS 7和8推出的新特性我認為是很正常的現象,一個系統要是永遠沒有創新,那就只能是等死。這條理論同樣適用與Android身上,所以Android也在一直進步,比如最近Android L系統的推出,在介面效果上甚至也有趕超iOS的趨勢。谷歌和蘋果都是偉大的公司,所以我不會片面的評價他們的系統到底誰比誰強。

問:你覺得Android L的最大亮點是什麼?對於開發者來說,如何適應多屏開發的趨勢?

Android L號稱是Android歷史上改變最大的一個版本,其中多數功能是系統內部的優化,比如ART執行環境、耗電性優化等。與應用層開發者相關的最主要的改變應該就是Material Design,新的UI,新的控制元件,給人耳目一新的感覺。

另外,之所以敢稱Android L是Android歷史上改變最大的一個版本,是因為從這個版本開始,Android系統就不再是僅僅應用於手機和平板上了,而是可以應用在手錶、電視和汽車上。Android L中已經建立了Android Wear、Android TV和Android Auto這幾個分支,也是為Android日後的多元化鋪路吧。至於多屏開發的問題其實是外界人把它想複雜了,Android系統發展到了今天,已經提供了太多不同尺寸螢幕適配的解決方案,相信懂Android開發的朋友們都不會受這個問題困擾的。

問:你認為移動開發人員應該學習使用者體驗設計嗎?如何入手?

所謂技多不壓身,如果你有充足的時間和精力,多去學點東西肯定是有好處的。使用者體驗設計可以在很大程式上幫助開發人員編寫出更優秀的程式,能掌握這個本領的話對自身的能力也是有很大提升的。

問:要成為Android開發高手要經過幾個階段?

這種問題我不敢回答,因為我自己也還不是一個高手。但是就我自身的成長經歷來說,首先,一定要把Java的基本功打紮實,然後就可以學習Android相關的基礎知識了(比如說看《第一行程式碼》)。接著,可以去嘗試編寫一些小軟體,這樣基本就能達到入門水準了。

自己能寫出來程式碼只能算是第一步,接著你還要能讀懂別人寫的程式碼,這是很重要的一門功夫,也是要慢慢培養的。等你掌握了這門功夫後,後面的發展方向就非常寬廣了,可以閱讀你們公司大牛寫出的程式碼,以及各種開源框架甚至是系統的原始碼,不斷充實自己。

問:對於想深入學習底層架構的同學,應該怎樣閱讀 Android 系統原始碼呢?

我覺得閱讀系統原始碼非常有必要遵循的一個原則就是抽絲剝繭、點到即止。應該認準一個功能點,然後去分析這個功能點是如何實現的。但只要去追尋主體的實現邏輯即可,千萬不要試圖去搞懂每一行程式碼都是什麼意思,那樣很容易會陷入到思維陷阱當中。因為這些龐大的系統都不是由一個人寫出來的,每一行程式碼都想搞明白,就會感覺自己是在盲人摸象,永遠也研究不透。如果只是去分析主體的實現邏輯,那麼就有比較明確的目的性,這樣閱讀原始碼會更加輕鬆,也更加有成效。

問:讀完《第一行程式碼》該如何開始下一步的晉級之路?

我覺得基礎知識掌握之後,並沒有統一的進階方向,因為你已經擁有了開發很多功能的能力,後面應該根據公司的業務需求去深入研究相關領域的技術,這個就因人而異了。但只要基本功掌握的足夠牢固,不管是什麼方向的技術,你一定都能勢如破竹地拿下的。


更多精彩,加入圖靈訪談微信!

相關文章