《第一行代碼》做者郭霖:從Java程序員到Android開發者的第一步

非商業轉載請註明做譯者、出處,並保留本文的原始連接:http://www.ituring.com.cn/article/125914程序員

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

圖片描述

問:你是如何成爲一位Android開發者的?微信

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

問:爲何要寫《第一行代碼——Android》這本書?它能爲想要成爲Android開發者的讀者們解決什麼問題?在看你的書以前,須要有什麼樣的技能和知識作基礎?框架

我很喜歡看書,也看過不少的技術書,寫書對於我來講算是一個記念。至於爲何要寫《第一行代碼——Android》這本書,我認爲基礎仍是很是重要的,這本書能夠很好地幫助Android初學者入門,也能夠幫助有經驗的Android開發人員鞏固基礎。學習

寫這本書的時候我是徹底站在初學者的角度上來寫的,所以只要有Java基礎就能夠看。對於Java的掌握程度那固然是越熟練越好了,但最低要求是至少要懂Java的基本語法。學習Java的書籍實在是太多了,我也沒有都看過,說不上哪本好,你們仍是本身找找看吧。優化

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

碎片化的問題確實讓人很是頭疼,這是因爲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 系統源碼呢?

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

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

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


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

圖片描述

相關文章
相關標籤/搜索