專欄文章
RD養成術之Java 學習路徑
前言
撰文者:Jarey
近期因Android的熱潮,Java程式設計也就跟著突然熱了起來。有一陣子身邊許多原本寫C / C++的朋友都一股熱的投入Java的懷抱,也有許多朋友問我Java容易學?學Android是否要從Java開始學起?要如何學習才能最快速的進入Androd程式開發的大門?最近心有所感,想說將這十年來的Java學習歷程撰寫成記錄,提供給剛要進入Java大門的朋友們做為一個學習參考。
小弟剛好是從JDK1.1就開始投入Java世界,Java的確是有它迷人的地方,也曾開創了許多創新的應用領域(J2ME、Applet、WebStart...),可惜在推廣到最終並無法成為市場的應用主流(J2ME à Android、 Applet à Flash、WebStart à Flash AIR)。在這一路學習的路上走來,Java最後只有在J2EE企業領域保有相當的競爭力,其它在Web與手機(ME)這些領域慢慢的因相容性(J2ME的實作要看手機廠高興)、普及性(Applet需要JRE,而JRE的支援要看Browser的臉色,早期就是看微軟的臉色是否要預載)問題而被淡化掉。早期在台灣若你只會寫Java能發展的地方有限,必竟台灣是以系統廠與硬體代工為產業主流,J2EE這些大型企業及軟體建置向來都是歐美的強項。在著J2SE就更不用說了,因為要有JRE支援同時也會有效能上的考量,最慘的是Sun堅持的Swing獨立風格的UI(因為堅持Java需保有跨平台特性),另撰寫的視窗程式與OS(作業系統)本身的視窗程式看起來就是格格不入,導至Java UI分裂成兩大陣營Swing(Pure Java UI元件)與SWT(支持Native UI元件)分裂的結果當然是另開學者學習無所適從,是兩套都要學,還是壓寶一套? 同時Java也因內部成員各內鬥與意見不合,另Java至JDK6後就長達五年的時間沒有任何的改版發展,直到最近甲骨文買下Sun後,最近才又開始有所成長推出了Java7。接著還可以看到國外不少書藉與專家在評估Java是己死了...。種種原因都讓Java的死忠支持者不免對Java的前途感到憂心,但誰也沒想到的是Android的發起,另Java語言重新站了起來(這裡只提到語言是因為Android底層並不是JVM也不是KVM而是DVM,Google只借重了Java的語法和compiler)。
基於上述現實,在台灣大多桌面軟體都還是倒向使用微軟的平台VC系列與.NET平台。因為如此我不得不先暫時放下我熱愛的Java,轉而去學習Embedded Linux 開發,並於系統廠從事F/W撰寫工作,因此中斷了三年左右的Java語言學習,改投靠C來謀生。不過另人想不到的是事隔多年後,因為Google Android的投入,Java在台灣突然有了出路。還記得某天去到天瓏書局,發現在Java系列書藉中竟然擠了一大群人,同時發現前十大排名暢銷書中,竟有七本是與Android或Java有關的書籍。這代表新的機會來臨了,我找到了Java開發的新出路,那便是從Android開始。
那麼原本有Java的底子的進入Android學習會比較快嗎? 我只能說要擁有良好正確Java物件導向核心觀念的開發者,的確會比較快進入Android的領域。但這不代表你就能很快的開發出可靠穩定的程式。因為Android 本身是一個很大的框架,框架與函式庫(Lib)不同之處在於,使用函式庫是拿別人包好的軟體來呼叫使用,主控權還是在你,你可以決定主程式的寫法,函式庫只是你的開發工具。而框架就不同了,它意味著你必須在別人設計好的架構底下將你的程式放進去,也就是主要控制權其實是來至框架,你必須要相當了解框架的架構與運作流程,你才有辦法將你的程式加入其中,這就像你要加入功能至別人寫好的程式中,你必須要先理解對方程式的寫法,你才有辦法將新的功能加入其中,只不過現在面對的是一組高度結構化的框架系統,這代表的是你必須要相當良好的物件導向的概念與設計模式,才能了解到框架設計的精髓,最後你所撰寫的程式才能與框架完美的結合運作。另外在觀念IDE工具當道的世界,你同時必須了解許多工具的操作(Eclipse)與專案開發的結構(MVC概念)甚至是基本的UI設計概念(色彩學、UI設計模式、Layout 排版技巧)。因此我只能說若你是一位剛開始正準備學習進入Android應用程式開發的程式設計師,我的看法是不管學習任何語言都不可能一步登天,必須要站穩腳步、循序漸進的學習,進而培養提升自己正確的觀念。以下一節將介紹一般學習Java路線常遇到的學習關卡與如何一道道的破解這些關卡。