[技術(shù)門診241期]正確高效的Android應(yīng)用程序開發(fā)
原創(chuàng)本期特邀《Android經(jīng)典應(yīng)用程序開發(fā)》一書作者韓超老師,針對Android應(yīng)用程序開發(fā)的問題給予解答,歡迎網(wǎng)友積極提問,與專家一起討論!
查看本期門診精彩實錄:http://doctor.51cto.com/develop-255.html
參與***技術(shù)門診:OSSIM,企業(yè)信息安全管理利器
精選本期網(wǎng)友提問與專家解答,以供網(wǎng)友學(xué)習參考。
Q:韓老師,你好!我是一名具有十年JAVA程序經(jīng)歷的程序開發(fā)者,由于工作需要轉(zhuǎn)型Android系統(tǒng)開發(fā),現(xiàn)在屬于學(xué)習階段的新手,感覺憑借自己深厚的C語言基礎(chǔ)仍很吃力。請問像我這樣的熟練程序員如何盡快轉(zhuǎn)向移動開發(fā),在轉(zhuǎn)型中我的優(yōu)勢是什么?需要在那些方面做些改進?另外需要有那些技術(shù)上突破?請不賜解答!
A:你的問題比較典型。
***,你的語言基礎(chǔ)肯定是有優(yōu)勢的,《Android經(jīng)典應(yīng)用程序開發(fā)》比較適合你這樣沒有語言障礙的人來閱讀。
第二,如果你是Java SE的工程師,Android UI的設(shè)計理念和AWT具有很大類似性,尤其控件和布局的組織方面。
第三,Android的圖形系統(tǒng)比較特殊,分為2D,3D和可繪制內(nèi)容幾個部分,這是繪圖的原始內(nèi)容。正如《Android經(jīng)典應(yīng)用程序開發(fā)》第五章所介紹的那樣。
第四,你想讓轉(zhuǎn)入移動開發(fā),需要了解嵌入式系統(tǒng)和桌面的區(qū)別。Android自動適應(yīng)各種小屏幕的特點,是你在UI的時候需要注意的。
第五,技術(shù)上的突破,***的方向就是通過Android應(yīng)用開發(fā),轉(zhuǎn)向系統(tǒng)開發(fā)。
Q:韓老師,您好,我接觸android的時間不長,但是我覺得安卓的編程跟linux編程是差不多的,是不是先掌握了linux編程會比較好一點呢?
A:如果你想進行Android應(yīng)用的開發(fā),暫時不需要Linux的技術(shù),學(xué)習Java編程技術(shù)即可。如果你想進行Android系統(tǒng)的開發(fā),并且關(guān)注底層,那么:Linux是本,Android是末。
Q:韓老師您好,學(xué)習android不久,從目前形勢看,android再火3年左右吧!之后應(yīng)該會慢慢下滑——,從長久方面看,J2ee 和 android,哪個方面更合適?
A:首先,對于技術(shù)的未來的走向,我不做估計。我想你的估計看中的不是技術(shù)本身,而是技術(shù)給個人帶來的內(nèi)容。其次,不要把籌碼都壓在一個技術(shù)上,IT發(fā)展很快,轉(zhuǎn)型是每個工程師的必由之路。Java EE用于服務(wù)器端,Android用于嵌入式系統(tǒng),二者原本應(yīng)用領(lǐng)域不同。第三,關(guān)于Java EE(注意:J2ee是其舊名字)對于Java系統(tǒng)的開發(fā),并不應(yīng)該認為Java EE就高于Java SE,Java SE又高于Java ME,它們是Java在不同領(lǐng)域的應(yīng)用,技術(shù)本身并無高低之分。從事JavaEE但是只做配置性工作的工程師,也是很初級的。Java SE是關(guān)鍵的基礎(chǔ),要成為一個真正有底蘊的工程師,決不可以繞過Java SE直接接觸Java EE。Java SE的編程技術(shù),類庫是基礎(chǔ)(與Android類似),還有一些特殊的技術(shù),例如JMX, JAXP,IDL,RMI等等。Java EE本身就是Java SE的一個“增量”,關(guān)注CS架構(gòu),業(yè)務(wù)層,Bean等。想進行實際的Java EE開發(fā),還是要以Java SE為基礎(chǔ)。當然目前有些人的確是在脫離實現(xiàn)的情況下,空談Java的架構(gòu)和概念,我個人認為這不是正確的做法。
Q:老師您好,我發(fā)現(xiàn)現(xiàn)在越來越多的人已經(jīng)進軍android了,就像之前的java一樣,人越來越多了。各種培訓(xùn)班也開始培訓(xùn)android了。所以我覺得做android ui或應(yīng)用層面的開發(fā),或許會淪落為和之前的java開發(fā)人員一樣,人多肉不是那么多的情況。想請教老師的是如何避免自己陷入這樣的困境呢?我們應(yīng)該學(xué)習些什么知識來強大自己呢?我看到很多老師推薦android系統(tǒng)級的開發(fā)或者移植。那么如果選擇系統(tǒng)級的開發(fā)和移植的話 您認為選擇專于那一塊會更好一些,因為畢竟一個人的精力有限,況且我們也應(yīng)該術(shù)業(yè)有專攻。
A:你好,你遇到的問題是一個普遍問題,我依次作出幾點說明:
***,可以明確地說,“java開發(fā)人員淪落”是一個錯誤的看法實際上是“低端的java開發(fā)人員淪落”Java系統(tǒng)博大精深,除了Java SE之外還有Java ME,Java EE和JavaFX涉及到你的電腦以及你所使用的網(wǎng)絡(luò)的各個方面正是由于國內(nèi)急功近利的開發(fā)和培訓(xùn),產(chǎn)生了很多Java ME手機開發(fā)的低端工程師他們的技術(shù)是短期催生的,技術(shù)底蘊淺,并且進行Java系統(tǒng)中較為簡單的Java ME開發(fā)因此,他們的淪落是必然結(jié)果這并不代表Java技術(shù)的淪落,想要了解Java即使,建議你去看看英文的官方網(wǎng)站。
第二,關(guān)于“android ui或應(yīng)用層面的開發(fā)”這部分的難度要大于Java ME手機開發(fā)但是,這部分的難度也不是太大,如果只是淺淺地學(xué),淪落是必然的《Android經(jīng)典應(yīng)用開發(fā)》涉及的內(nèi)容也多余UI層面學(xué)習好了這種應(yīng)用開發(fā),你會有一些轉(zhuǎn)型的方向“非典型應(yīng)用”,“系統(tǒng)級應(yīng)用”,“系統(tǒng)定制”。
第三,關(guān)于“系統(tǒng)級的開發(fā)和移植”這是非常有前途的開發(fā)方面我的另外兩本書《Android系統(tǒng)原理和應(yīng)用開發(fā)》和《Android系統(tǒng)級深入開發(fā)-移植和調(diào)試》是系統(tǒng)級方向的。有幾個要點你可以參考:
[*] 如果不認真打好Linux基礎(chǔ),這部分就不用想了
[*] 如果你熟悉了Linux用戶空間的開發(fā),做Android框架開發(fā)比較容易
[*] 如果你進一步熟悉了Linux驅(qū)動開發(fā),做Android移植比較容易
Q:關(guān)注以下問題:
1、Android在做屏幕適應(yīng)時,除了建立多套Layout,有沒有其他好的方法?
2、Android開發(fā),如果不做底層開發(fā),僅作應(yīng)用開發(fā),發(fā)展錢途如何?
3、Android在商業(yè)應(yīng)用軟件移動化中有沒有發(fā)展空間?
4、做其他移動平臺開發(fā)的如何快速轉(zhuǎn)入Android?
A:1.一個Layout可以自適應(yīng),也可以采取排列組合的方式建議參考《Android經(jīng)典應(yīng)用開發(fā)》的3.2和7.5。
2. 有一定的前途,但是你要注意一個問題僅做應(yīng)用開發(fā)≠僅做典型應(yīng)用開發(fā)典型應(yīng)用是基礎(chǔ),精通后,你可以過渡到非典型的引用開發(fā)我在隨后的其他書籍中會有所介紹。
3.現(xiàn)在還沒有看到很明確的前景,在tablet平板電腦中可能有所發(fā)展。
4.這要看你是什么平臺的。如果做是Java ME應(yīng)用的,轉(zhuǎn)入Android應(yīng)用還算容易對于Android底層開發(fā),必須從Linux開始,我在前面的出版的書籍《Android系統(tǒng)原理和應(yīng)用開發(fā)》、《Android系統(tǒng)級深入開發(fā)-移植和調(diào)試》已經(jīng)強調(diào)過多次。