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