應付跨平臺需求,Java是最普遍的選擇

Java的領域廣泛,初學者面對一堆生硬的專有名詞,頓時摸不著頭緒,不知該從何開始。為避免走冤枉路,減少摸索的時間,7位專家與你分享學習經驗,並搜集最完整的Java好書及網站,為Java學習之路鋪設康莊大道。

根據Gartner、IDC等多家分析機構的說法,Java與.NET已呈現五五波的態勢,雙方想消滅對方都是不可能的事。不過兩者的立基點有些差異,.NET目前專注在Windows系列平臺;Java則可開發多種平臺的應用程式。雖然現在已可透過Web Services整合異質性平臺,但在Linux、Unix、Mac OS甚至手機Symbian等作業系統的應用,或企業級多層式應用架構的程式,從開發時程、穩定性及互通性等角度考量,Java技術仍是首選。

不過,Java的領域很廣,有興趣進入Java領域的初學者,面對一堆生硬的專有名詞,往往覺得摸不著頭緒,而不知從何開始。如果想學手機程式開發,卻買本JSP的書,那就大錯特錯了!

為避免新手走冤枉路,並縮短摸索的時間,我們特別採訪王森、林上傑、林康司、耿維德、朱仲傑、蘇國鈞、王建興及葉秉哲等多位Java專家,與大家分享學習Java的經驗。雖然他們都說自己不是專家,不過綜合他們的經驗,可發現興趣、毅心、不拒怕英文及多看好的程式範例,是學習程式開發的不二法門。事實上,學習程式開發的方法與心態,放諸四海皆準,學習Java並沒有什麼獨門祕訣,.NET也可以套用類似的邏輯。

學習Java的方法很多元,大體包括:買書、補習及上網找資源。教育訓練是最速成的方法,好處是講師會竭盡所能在短時間之內,把Java領域的畢生所學傳授給學生。

有基礎的開發人員最普遍的學習方法就是買書,不過有關Java的書百百款,品質也參差不齊,「買對書」變得很困難,因此特別請專家推薦了20多本好書,其中以買書狂昇陽教育訓練中心經理王森推薦居多,並提供小小書評,作為讀者選書的參考。

網站也是很重要的資源,其中昇陽網站是很好的學習管道,不但包含所有Java技術有關的介紹、工具及規格書,甚至還有自我教學(Tutorial),只要不拒怕英文,昇陽網站有最新、最完整的Java資訊。

英文能力比較差的人,可選擇IBM Developer Works中文技術網站,有許多內容詳盡的中文技術文章。JavaWorld.com.tw在2003年6月正式成立,目前已成為臺灣最大的Java論壇,集結許多Java高手分享學習Java的心得,並熱心回答網友的問題,是Java社群交流最好的園地。寫程式不需要家學淵源

什麼時候開始學Java真的很重要嗎?資訊界不似音樂或舞蹈,不論年級和輩份,有心隨時可以插隊。筆者訪問王森、林上傑、林康司、耿維德、蘇國鈞、朱仲傑、王建興及葉秉哲等曾在Java2大會擔綱的專家,發現高中、大學以後,才開始接觸電腦的人不在少數,重點在於熱誠。

每所大學因為教學風氣及教授擅長的不同,所以未必會開課Java課程。蘇國鈞即表示臺大電機系僅教授資料結構及演算法等理論,程式語言是自學的。林上傑透露,元智大學教學的方向,著墨微軟的技術居多,之所以學習Java是學長帶學弟,私下傳承的結果,只要有興趣,環境並不會阻礙學習。

鈺新科技副總經理耿維德從大學到研究所都念機械,所學領域雖與程式無關,只因對電腦有興趣,而在社團自學C語言,在交大機械研究所時,也持續接觸程式開發。為人所熟知的資訊作家侯捷,可是30歲以後才開始學C和C++,所以重點非幾歲開始學、是否科班出身,而是學習的方法和心態。昇陽推SAI希望提升校園教授Java的品質

Java剛出現的前幾年,學校開設Java課程的比例比較少,此外,科系也有差別,第二類組資訊工程系開Java課程的比例較高,則資管系則未必會將Java列入必修課程。

Java剛開始進入校園時,上課的老師及教授也未必做好準備,因此教學品質不一,歷經幾年學習及調整,才能逐漸上軌道。為協助學校提供品質更好的Java課程,昇陽今年針對國內大專院校推出SAI(Sun Academic Initiative;昇陽電腦學術種子領航計畫),目前共計有80多所學校參與。SAI由昇陽提供教師的教育訓練,教授Java入門課程,學校授課時則提供原廠教材,僅收取書本費,希望藉此提升Java的教學品質。想走得長遠,就要重視基本理論

電腦進修的管道很多,因此非本科系畢業的開發人員,在職場也佔不小的比例。資訊相關科系出身的開發人員,因為受過紮實的基礎教育,寫程式的習慣往往比較正規,較少出現以a、b、c宣告變數的情況,但不代表半路出家的開發人員就一定比較差。

耿維德依過去在恆逸資訊教學的經驗分析:「科班與非科班技術上的差別,一年的時間就可以追上。」但觀念上的差異,兩者是平等的,因為資訊相關科系的人才,對物件導向的觀念也未必是正確的。

艾群科技專案研發部資深工程師朱仲傑表示:「資訊科系的開發人員,因為曾接受演算法、資料結構等理論基礎的正規教育,一開始的確有優勢。」其他科系轉戰程式開發的人才,若只有進修初階課程,即投入程式開發工作,初期難以確保開發的品質,不過,但隨經驗的累積,這樣的差別將逐漸消失。

王建興認為:「在解決特定問題手法,可看出兩者的差別。」資訊相關科系在求學階段,必須接受計算機概論、多執行緒、作業系統、硬體架構、演算法及資料結構等背景知識的洗禮,進入職場後無論還給老師多少,只要腦子裏還存有基本的概念,就對解決問題有幫助。例如演算法是前人解決問題的經驗,當你知道前人解決過相同的問題,而且解得那麼漂亮,就不必自己從頭摸索起。

理工科系多少具有基本的概念,文法商畢業的學生雖然可能沒有基礎,不過目前多數教育訓練中心的電腦課程,會教授基本的計算機概論,但王建興和葉秉哲認為:「那只是一個開始。」其實很多科班出身的人,早在學分修完之後,就把生硬的理論拋到九霄雲外,即使是這樣,還是照樣可以寫程式。

不過,葉秉哲認為:「如果要在資訊界走得長遠,理論是必要的功課。」懂得這個道理的人,就會回頭重拾課本。而非科班的人只要有心,也可以自行涉獵相關資訊。所以重點不是科班出身與否,而是必須認同「理論」的重要性。邏輯概念及求新求變是生存之道

真正適合投入程式開發與否的關鍵,在於邏輯概念及喜歡追求新知的精神。程式開發著重邏輯思考,不過,邏輯概念與生俱來,無論是否為資訊相關科系畢業的開發人員,都存在「暴力法」開發手段,才致使應用程式暗藏難以除錯的陷阱。

何謂「暴力法」? Borland資深產品經理李匡正曾舉為企業除錯遇到的例子:民國年與西元年的轉換。正確公式是「民國年+1911=西元年」,但他協助客戶除錯時,看到的寫法是「if 民國年=87 then 西元年= 1998…一路寫了20年」。只要語法正確,編譯器並不會認為有問題,系統執行時,當然也會得到正確的結果,直到第21年,才會出現無法預料的狀況。所以邏輯概念不夠清晰的話,最好選擇程式開發以外的資訊工作。

另一種不適合程式開發的類型,是求穩定、不適應改變的個性,曾有會計老師在推廣教育中心,遇到學生是薪水不錯的資訊工程師,他想轉學會計的動機,是因為資訊科技日新月異,永遠要追趕新的技術,讓他覺得疲累;而會計理論學一套就可以用一輩子,的確比較輕鬆。

相較於上述的例子,蘇國鈞在資策會看到的是相反的思考,有空服人員不想當萬年空姊,來學一技之長;也有金融界的職員厭倦一陳不變的生活,希望轉換跑道。

王建興認為:「軟體的本質就是改變。」開發人員的本性必須喜歡求新求變,否則不適合走這一行。其實,資訊原理的變化很慢,許多新技術的概念是一樣的,例如分散式系統的理論很早就出現,在近幾年各種成熟的技術才普及到企業。雖然新技術層出不窮,但企業對技術的導入很謹慎,所以在業界出現成熟的案例之前,資訊人員對新科技的資訊,倒也不必過度焦慮。

結合專業知識,半路出家不輸科班出身
蘇國鈞表示,非資訊科系畢業的開發人員不必妄自菲薄,在教育訓練中心,有許多文法商畢業的學生,為了興趣或工作考量,而進修程式開發;也有在職人員,為求第二專長學習電腦,以提升自身在職場的不可取代性。

非本科系出身的優勢就在擁有本業的專業知識(Domain Know-How),曾有位醫生因為既有的醫療系統始終無法符合要求,而決定前往資策會學習Java。在課程即將結束之際,醫生與同一組的學員,共同開發一套小型醫療系統,在結業發表會中展示,頗受廠商的矚目。其實他們設計的畫面並不精美,但醫生結合專業領域的知識,開發出來的系統,完全切中使用者的需求,這就是資訊科系出身的開發人員,最欠缺的部分。

朱仲傑表示:「資訊科系技術能力強,卻未必了解使用者的需求。」即使系統分析階段與客戶訪談次數頻繁,開發出來的系統,仍可能無法完全符合客戶的需求,不是邏輯或公式錯誤,就是以開發人員的角度設計系統,致使系統介面及操作流程都不夠親和流暢。

所以非資訊相關科系或其他行業轉型的開發人員,應掌握擁有自身領域的專業知識的優勢,站在使用者的角度,開發真正貼近需求的系統。相對的,本科系畢業的開發人員,則最需努力補強實務面的專業知識。

Java從何學起?
在大學一年級最常開設的入門程式語言課程,通常是C或Pascal,因此許多人認為學Java之前應先學C,其實C與Java並不相同,反而與Visual C++比較類似,但也不沒必要先學C++。

很多人會拿 C 和 Java 相比較,Java架構在 JVM 上面執行效能很難與 C 抗衡,但是,簡單容易上手就是Java的優勢。就如王建興所言:「Java與C、C++相較,操控硬體的能力相當,但Java的開發效能提升許多。」

蘇國鈞表示:「現在國外已有大學將Java設為電腦語言先修課程。」可見以Java作為程式入門語言,並無不妥。耿維德表示:「真正入門的障礙是物件導向的觀念。」

在學Java的過程中,一定會帶到物件導向程式設計,很多人看到「物件導向」就覺得是很抽象的專有名詞,而產生抗拒心理,朱仲傑解釋:「其實物件導向是很生活化的概念,周遭的每樣東西都是物件。」如果用生活化的角度思考,其實物件導向並不困難。

至於從何學起,Java是一個平臺,包含很多技術,耿維德表示:「學Java沒有捷徑,但是有順序。」先從基本的語法、物件導向程式設計、Web、EJB最後是Design Pattern。其間也可根據專案所需的技術調整,正如臺灣最大的Java論壇JavaWorld中,開放原始碼版主Jini在「給新手的一封信」中所言:「桌面應用程式就鑽研AWT、Swing;Web應用程式就鑽研JSP/Servlet;要開發PDA或手機應用程式,就鑽研MIDP、J2ME。」文⊙李延華

專家簡介

王森
現職:昇陽教育訓練中心經理
電腦啟蒙階段:國小
Java專精領域:J2ME
Java學習途徑:書

林上傑
現職:昇陽教育訓練中心約聘講師
電腦啟蒙階段:大學
Java專精領域:JSP、Servlet
Java學習途徑:書

耿維德
現職:鈺新科技副總經理(前恆逸資訊資深講師)
電腦啟蒙階段:大學
Java專精領域:Java相關課程均有涉獵
Java學習途徑:網站

朱仲傑
現職:艾群科技專案研發部資深工程師
電腦啟蒙階段:高中
Java專精領域:J2EE、J2ME
Java學習途徑:書

蘇國鈞
現職:資策會專任講師
電腦啟蒙階段:大學
Java專精領域:Java相關課程均有涉獵
Java學習途徑:書

王建興
現職:清華大學資訊工程學系博士候選人
電腦啟蒙階段:國小
Java專精領域:J2EE、Design Patterns
Java學習途徑:書

葉秉哲
現職:交大資訊科學系博士
電腦啟蒙階段:高中
Java專精領域:JVM、J2EE、Design patterns
Java學習途徑:書

熱門新聞

Advertisement