導航:首頁 > 程序命令 > 程序員到軟體工程有多長的路要走

程序員到軟體工程有多長的路要走

發布時間:2023-07-05 07:39:45

⑴ IT程序員的出路是什麼

先來談談《程序員》雜志,我剛接觸程序員雜志,是在大二,那時,我剛轉繫到計算機系,一來認識的人少,二來我校的機算機課程與我所期待的大相徑庭,我對程序的那股子熱情,可真是萬千抑鬱無處可泄啊。直到有一天,我經過報刊亭時,看到一份雜志的標題特別吸引眼球------《程序員》。「程序員」?我以後好像是要當這個來著,啊,終於找到組織了。我毫不猶豫的買下了那份雜志。記得那時04年的第10期,封面是一個職業人士擺著一個微笑的POSE,旁邊有一隻老虎,封面的大標題是J2SE5.0會戰.NET2.0,裡面還有一篇「程序員的田園」的文章印象比較深刻(那個叫於淵的作者,後來出了本《自己動手寫操作系統》)。不過說句實話,《程序員》雜志的內容實在不太適合大學生閱讀,一來絕大多數的在校生不可能像《程序員》面向的中高級開發者那樣有著豐富的開發經驗,能理解技術類文章的內容,二來非技術類的文章,大部分對於大學生來說,又太過於縹緲,什麼SOA、SAS、SAAS、SAP(女子美容館?)、ASP(不是那個編程的ASP噢)、敏捷、極限,看了半天,兩字,沒懂!所以,程序員雜志中,我印象最深刻的,只能是一些關於程序員生存現狀的調查或白描之類的文章,畢竟這和自己的未來有些關系。還有很多因為項目溝通不慎而深陷開發泥潭的故事也給我留下了深刻印象。有一個署名「惡魔」的大俠,他的文章總是很有趣。

《程序員》雜志的美工還是不錯的,每期雜志的設計上,都是挺下功夫的,很有自己的風格。好啦,本人水平、經驗實在有限,對程序員只能有這些膚淺的認識。總的說來,《程序員》的確是一本程序員寫給程序員看的雜志,他清晰的專業定位,對技術的深度剖析,對企業應用的前沿關注,是許多其它雜志無法企及的,但從另一個角度來說,這也或許正是《程序員》的短板所在。

《程序員》外IT雜志第一類,大眾電腦類

你知道如何製作一個FLV視頻,如何把它上傳到「土豆網」嗎?你知道哪裡有在線做攝像頭大頭貼的網站嗎?你知道如何把PPT轉成SWF文件嗎?你還知道最近網民中是更喜歡用EMULE還是迅雷下東西嗎?

看到這些疑問,相信很多程序員都會露出不屑的表情------「這種東西,是大眾網民才關心的東西,我這樣的人,關注的可是更『高級的』東西。」非也、非也!

自從學了編程之後,我有意識的將自己和「普通電腦用戶」區別開來,給自己穿上了一件皇帝的虛衣,自以為在電腦和網路的世界裡,我這樣的人是高高在上的------「怎可與大眾為舞?」其實,這樣的想法是何等的可笑,連網民、用戶到底期待的是什麼,又怎麼去搞有前途的應用?像BT,網路螞蟻,哪一個不是抓住了用戶的切實需求而成功的?那個「一點技術含量都沒有的」HAO123,居然能賣到8位數人民幣,要知道,建HAO123這樣的網站,基本就不需要什麼編程知識。最近重新撿起了《電腦報》、《大眾軟體》、《計算機應用文摘》之類的雜志,發現了群眾智慧的無窮,嘿,還真挺靠譜的!又聽聞GOOGLE的開復大哥在給他的員工講「要去多了解些像芙蓉姐姐這樣的事情」,果然,英雄他所見就是那個略同啊!

《程序員》外IT雜志第二類,IT、互聯網評論類

這類雜志很少涉及技術細節,但卻以「旁觀者清」的姿態出現,許多觀點一針見血,或令人恍然大悟、或令人拍案稱奇。比較偏向企業應用的,如《軟體世界》,基本就不談什麼技術細節,全都是企業啦,外包啦,SOA什麼的,不過由於不涉及一些技術細節,很多文章還都是非常通俗易讀的。特別值得一提的是該雜志每期的卷首語寫的特別的有品,以一種旁觀者的姿態出現,或譏或捧,非常耐看。有比較偏向於指導高校學生如何走好職場第一步的,如《IT博客-----軟體工程師》,80後的財富新貴們、吳瑩瑩都曾上過封面。

這份雜志除了非常關注IT行業就業和創業的動向外,還有一個非常大的靚點,就是情感類的文章也有不少的份量。要知道,在競爭激烈、技術味道濃郁的IT界,情感往往是被放在次要的住置,可是它往往又是人們最柔軟、最需要呵護的地方,於是,這份雜志獨樹一幟地涉及「IT人的情感世界」,自然就非常的出彩了。

《程序員》外IT雜志第三類,IT商業類

為什麼說做程序員命苦呢,看了這類雜志,你很快就豁然開朗了。程序員,說到底,就是個技術人員,就算是高級的程序員,比方說,技術主管什麼的,那還是放在企業的技術部門。技術部,對於IT企業來說,當然很重要,但是對於一個成熟的企業來說,管理部和決策部才是一個企業的心臟地帶。這決不是說程序員無法進入公司的決策層,大家隨便想想,95%的IT企業都是靠技術發家的。但是等到企業形成規模後,開始有了技術部後,程序員的地位,就由「當家人」轉成了「老闆手下的愛將」,雖然地位也不低,可是各方面的發展就受到非常大的約束了。

所以,我們可以看到,中國有非常多的程序員有非常好的能力、有好創意的也不在少數,但恰恰是因為進了很成熟的公司,於是他的能力只能被限定在老闆的想像力之內,他的才情自然就無處可泄了。很多程序員都和我有一樣的體會,雖然自己很喜歡編程,但給別人寫的程序,總覺得不像那麼回事;總想著要是有一天寫自己的程序,給大家來用,那才是自己想做的事。大家可以看到,今天的互聯網,機會仍是不少的,一個有意識、有市場頭腦、又能把握住機遇的程序員,他想做成一件事的機率還是非常高的。關鍵,還在於意識,有時,要改變意識,多看幾本書,多看幾本雜志,會很有啟發,當然,這只是起點,要走的路還很長,但就是這第一步,邁與不邁之間,也許你的命運就完全不同了。

⑵ 從程序員到軟體工程師[1]

從程序員到軟體工程師[1]

看了程序員系列文章,頗多同感。做為一個從業13年,一直做軟體開發的人,我想給那些已經、將要和有志於走上這條路的朋友一點點忠告。

首先,說說程序員和軟體工程師。雖說都是編程的幹活,但是還是有一點高下區別。

主要說來區別是程序員programmer是將程序(已經有流程,偽代碼或設計模板)寫成代碼;需要熟練掌握至少一門編程語言。而軟體工程師則要將目的描述成程序語言並實現的能力。例如將數學演算法、自然語言、思維模式描述成程序演算法,程序流程/類或/和人工智慧,並寫成代碼的能力。

對初入行的人,當然重在語言,要做一個合格的程序員,首先要熟練掌握語言。包括語言特性和實現的能力。例如使用盡量中文說的面試題,就要求面試對象掌握C++中的類的封裝;構造函數的重載和運算符重載。

做過一兩年後,要想繼續吃這碗飯就必須提高自己,首先當然是深入了解語言,特別是語言的思維方式,編譯器的工作方式和常用設計模板。就拿C++的多態性來說,很多公司面試就會問什麼是虛函數/純虛函數(思維方式)?用C如何實現函數重載(函數指針和了解編譯過程)?介面類/工具類/工廠類和 Sigleton類的實現(常用設計模板)。另外還有一大塊就是內存管理了。

如果能做到深入了解語言本身,那麼恭喜你,你現在Title至少是高級程序員了。

在對自己的語言有信心後,下一步就想一想自己要想哪方面發展。是管理方面(項目經理)還是技術方面(軟體工程師)。既然這里討論編程,我們就先不考慮項目經理。想發展為一個軟體工程師其實也有兩條路。一條是走系統軟體工程師或者叫架構工程師的路;另一條就是演算法工程師。

在國內的朋友我建議走架構工程師的路。要求就是知識面廣,對整個系統熟悉,能很快了解和分析客戶/設計需求,很快估計工作量、風險和所需要的資源(承擔相當部分項目經理的任務),能根據現有技術人員儲備提供一個解決方案。當然還需要一定的表達能力和文檔寫作能力。例如我當年走訪某省農行,和對方聊了銀行卡和醫院醫療卡的聯網,當天晚上就和市場部的人合作,搞了一個通宵,寫出了60頁的技術方案和外加40頁的基於此方案的標書。

一般來講,要做到對整體系統的深入了解,沒有兩三年的時間是做不到的'。所以給國內程序員的建議是不要頻繁跳槽,尤其是不要頻繁跨行業跳槽。踏踏實實地將本行業的軟體吃透,最好每個部門或模塊都工作過。如果有這個想法,一般情況下你可以和項目經理溝通,通常他們會鼓勵你這樣到各個部門/模塊工作。

我出國後,發現情況有點變化,由於語言和文化的區別,對自己走系統工程師的路沒有很大的信心。只好轉向走演算法工程師的路了。

確定了這條路後,突然發現自己的數學能力太差了。不得不重新惡補線性代數,概率和數理統計等高等數學。同時將《數據結構與演算法:C++版》好好從頭到尾讀了一遍。然後終於矇混到了一個職位。

當時第一個任務就是在一個嵌入系統中寫一段程序將bmp壓縮為jpg。各位可能會問了,這個在網上滿大街都是源代碼,為啥還要自己寫呢?其實這就是我不太建議國內工程師走演算法這條路的原因。除非你是數學大牛,有自己原創的演算法。否則在國內實在沒有演算法工程師很大的生存空間。但是在國外有很大的不同,稍正式的公司基本上都禁止使用open source。因為open source也是有版權的,有的是不能商用,更有的 left是那些公司碰都不敢碰的。因為 left要求你使用了他的代碼,你也必須公開你的代碼。

當然,我們可以看那些open source,然後自己重寫。不過相信我,通常情況下如果你不是想簡單做些變數替換就交差的話,看原代碼不如看這個演算法文檔本身。

;

⑶ 程序員的長久路該怎樣規劃

軟體開發之路是充滿荊棘與挑戰之路,也是充滿希望之路。java學習也是如此,沒有捷徑可走。夢想像《天龍八部》中虛竹一樣被無崖子醍醐灌頂而輕松獲得一甲子功力,是很不現實的。每天仰天大叫"天神啊,請賜給我一本葵花寶典吧",殊不知即使你獲得了葵花寶典,除了受自宮其身之苦外,你也不一定成得了"東方不敗",倒是成"西方失敗"的幾率高一點。
"不走彎路,就是捷徑",佛經說的不無道理。
1.如何學習程序設計?
Java是一種平台,也是一種程序設計語言,如何學好程序設計不僅僅適用於Java,對C++等其他程序設計語言也一樣管用。有編程高手認為,Java也好C也好沒什麼分別,拿來就用。為什麼他們能達到如此境界?我想是因為編程語言之間有共通之處,領會了編程的精髓,自然能夠做到一通百通。如何學習程序設計理所當然也有許多共通的地方。
1.1培養興趣
興趣是能夠讓你堅持下去的動力。如果只是把寫程序作為謀生的手段的話,你會活的很累,也太對不起自己了。多關心一些行業趣事,多想想蓋茨。不是提倡天天做白日夢,但人要是沒有了夢想,你覺得有味道嗎?可能像許多深圳本地農民一樣,打打麻將,喝喝功夫茶,拜拜財神爺;每個月就有幾萬十幾萬甚至更多的進帳,憑空多出個"食利階層"。你認為,這樣有味道嗎?有空多到一些程序員論壇轉轉,你會發現,他們其實很樂觀幽默,時不時會冒出智慧的火花。
1.2慎選程序設計語言
男怕入錯行,女怕嫁錯郎。初學者選擇程序設計語言需要謹慎對待。軟體開發不僅僅是掌握一門編程語言了事,它還需要其他很多方面的背景知識。軟體開發也不僅僅局限於某幾個領域,而是已經滲透到了各行各業幾乎每一個角落。
如果你對硬體比較感興趣,你可以學習C語言/匯編語言,進入硬體開發領域。如果你對電信的行業知識及網路比較熟悉,你可以在C/C++等之上多花時間,以期進入電信軟體開發領域。如果你對操作系統比較熟悉,你可以學習C/Linux等等,為Linux內核開發/驅動程序開發/嵌入式開發打基礎。
如果你想介入到應用范圍最廣泛的應用軟體開發(包括電子商務電子政務系統)的話,你可以選擇J2EE或.NET,甚至LAMP組合。每個領域要求的背景知識不一樣。做應用軟體需要對資料庫等很熟悉。總之,你需要根據自己的特點來選擇合適你的編程語言。
1.3要腳踏實地,快餐式的學習不可取
先分享一個故事。
有一個小朋友,他很喜歡研究生物學,很想知道那些蝴蝶如何從蛹殼里出來,變成蝴蝶便會飛。有一次,他走到草原上面看見一個蛹,便取了回家,然後看著,過了幾天以後,這個蛹出了一條裂痕,看見裡面的蝴蝶開始掙扎,想抓破蛹殼飛出來。這個過程達數小時之久,蝴蝶在蛹裡面很辛苦地拚命掙扎,怎麼也沒法子走出來。這個小孩看著看著不忍心,就想不如讓我幫幫它吧,便隨手拿起剪刀在蛹上剪開,使蝴蝶破蛹而出。 但蝴蝶出來以後,因為翅膀不夠力,變得很臃腫,飛不起來。
這個故事給我們的啟示是:欲速則不達。
浮躁是現代人最普遍的心態,能怪誰?也許是貧窮落後了這么多年的緣故,就像當年的大躍進一樣,都想大步跨入***主義社會。現在的軟體公司、客戶、政府、學校、培訓機構等等到處彌漫著浮躁之氣。就拿我比較熟悉的大連大工IT職業培訓來說吧,居然打廣告宣稱"20多年的計算機職業教育,遼寧省十佳學校",殊不知中國計算機發展才幾年,軟體發展才幾年,居然去報名的學生不少,簡直是藐視天下程序員。培訓出來的「程序員」大多不知道OO,OP為何物?社會環境如是,我們不能改變,只能改變自己,鬧市中的安寧,彌足珍貴。許多初學者C++/Java沒開始學,立馬使用VC/JBuilder,會使用 VC/JBuilder開發一個Hello World程序,就忙不迭的向世界宣告,"我會軟體開發了",簡歷上也大言不慚地寫上"精通VC/Java"。結果到軟體公司面試時要麼被三兩下打發走了,要麼被駁的體無完膚,無地自容。到處碰壁之後才知道捧起《C++編程思想》《Java編程思想》仔細鑽研,早知如此何必當初呀。
"你現在講究簡單方便,你以後的路就長了",好象也是佛經中的勸戒。
1.4多實踐,快實踐
彭端淑的《為學一首示子侄》中有窮和尚與富和尚的故事。
從前,四川邊境有兩個和尚,一個貧窮,一個有錢。一天,窮和尚對富和尚說:"我打算去南海朝聖,你看怎麼樣?"富和尚說:"這里離南海有幾千里遠,你靠什麼去呢?"窮和尚說:"我只要一個水缽,一個飯碗就夠了。"富和尚為難地說:"幾年前我就打算買條船去南海,可至今沒去成,你還是別去吧!" 一年以後,富和尚還在為租賃船隻籌錢,窮和尚卻已經從南海朝聖回來了。
這個故事可解讀為:任何事情,一旦考慮好了,就要馬上上路,不要等到准備周全之後,再去幹事情。假如事情准備考慮周全了再上路的話,別人恐怕捷足先登了。軟體開發是一門工程學科,注重的就是實踐,"君子動口不動手"對軟體開發人員來講根本就是錯誤的,他們提倡"動手至上",但別害怕,他們大多溫文爾雅,沒有暴力傾向,雖然有時候蓬頭垢面的一副"比爾蓋茨"樣。有前輩高人認為,學習編程的秘訣是:編程、編程、再編程,筆者深表贊同。不僅要多實踐,而且要快實踐。我們在看書的時候,不要等到你完全理解了才動手敲代碼,而是應該在看書的同時敲代碼,程序運行的各種情況可以讓你更快更牢固的掌握知識點。
1.5多參考程序代碼
程序代碼是軟體開發最重要的成果之一,其中滲透了程序員的思想與靈魂。許多人被《仙劍奇俠傳》中凄美的愛情故事感動,悲劇的結局更有一種缺憾美。為什麼要以悲劇結尾?據說是因為寫《仙劍奇俠傳》的程序員失戀而安排了這樣的結局,他把自己的感覺融入到游戲中,卻讓眾多的仙劍迷扼腕嘆息。
多多參考代碼例子,對Java而言有參考文獻[4.3],有API類的源代碼(JDK安裝目錄下的src.zip文件),也可以研究一些開源的軟體或框架。
1.6加強英文閱讀能力
對學習編程來說,不要求英語, 但不能一點不會,。最起碼像Java API文檔(參考文獻[4.4])這些東西還是要能看懂的,連猜帶懵都可以;旁邊再開啟一個"金山詞霸"。看多了就會越來越熟練。在學Java的同時學習英文,一箭雙雕多好。另外好多軟體需要到英文網站下載,你要能夠找到它們,這些是最基本的要求。英語好對你學習有很大的幫助。口語好的話更有機會進入管理層,進而可以成為剝削程序員的"周扒皮"。
1.7萬不得已才請教別人
筆者在Martix與Java論壇的在線輔導系統中解決學生問題時發現,大部分的問題學生稍做思考就可以解決。請教別人之前,你應該先回答如下幾個問題。
你是否在google中搜索了問題的解決辦法?
你是否查看了Java API文檔?
你是否查找過相關書籍?
你是否寫代碼測試過?
如果回答都是"是"的話,而且還沒有找到解決辦法,再問別人不遲。要知道獨立思考的能力對你很重要。要知道程序員的時間是很寶貴的。
1.8多讀好書
書中自有顏如玉。比爾蓋茨是一個飽讀群書的人。雖然沒有讀完大學,但九歲的時候比爾蓋茨就已經讀完了所有的網路全書,所以他精通天文、歷史、地理等等各類學科,可以說比爾?茨不僅是當今世界上金錢的首富,而且也可以稱得上是知識的巨富。
筆者在給學生上課的時候經常會給他們推薦書籍,到後來學生實在忍無可忍開始抱怨,"天吶,這么多書到什麼時候才能看完了","學軟體開發,感覺上了賊船 "。這時候,我的回答一般是,"別著急,什麼時候帶你們去看看我的書房,到現在每月花在技術書籍上的錢400元,這在軟體開發人員之中還只能夠算是中等的 ",學生當場暈倒。(註:這一部分學生是剛學軟體開發的)

1.9使用合適的工具
工欲善其事必先利其器。軟體開發包含各種各樣的活動,需求收集分析、建立用例模型、建立分析設計模型、編程實現、調試程序、自動化測試、持續集成等等,沒有工具幫忙可以說是寸步難行。工具可以提高開發效率,使軟體的質量更高BUG更少。組合稱手的武器。到飛花摘葉皆可傷人的境界就很高了,無招勝有招,手中無劍心中有劍這樣的境界幾乎不可企及。
2.軟體開發學習路線
兩千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒進也不保守並非中庸之道,而是找尋學習軟體開發的正確路線與規律。
從軟體開發人員的生涯規劃來講,我們可以大致分為三個階段,軟體工程師→軟體設計師→架構設計師或項目管理師。不想當元帥的士兵不是好士兵,不想當架構設計師或項目管理師的程序員也不是好的程序員。我們應該努力往上走。讓我們先整理一下開發應用軟體需要學習的主要技術。
A.基礎理論知識,如操作系統、編譯原理、數據結構與演算法、計算機原理等,它們並非不重要。如不想成為計算機科學家的話,可以採取"用到的時候再來學"的原則。
B.一門編程語言,現在基本上都是面向對象的語言,Java/C++/C#等等。如果做WEB開發的話還要學習HTML/JavaScript等等。
C.一種方法學或者說思想,現在基本都是面向對象思想(OOA/OOD/設計模式)。由此而衍生的基於組件開發CBD/面向方面編程AOP等等。
D.一種關系型資料庫,ORACLE/SqlServer/DB2/MySQL等等
E.一種提高生產率的IDE集成開發環境JBuilder/Eclipse/VS.NET等。
F.一種UML建模工具,用ROSE/VISIO/鋼筆進行建模。
G.一種軟體過程,RUP/XP/CMM等等,通過軟體過程來組織軟體開發的眾多活動,使開發流程專業化規范化。當然還有其他的一些軟體工程知識。
H.項目管理、體系結構、框架知識。
正確的路線應該是:B→C→E→F→G→H。
還需要補充幾點:
1).對於A與C要補充的是,我們應該在實踐中逐步領悟編程理論與編程思想。新技術雖然不斷涌現,更新速度令人眼花燎亂霧里看花;但萬變不離其宗,編程理論與編程思想的變化卻很慢。掌握了編程理論與編程思想你就會有撥雲見日之感。面向對象的思想在目前來講是相當關鍵的,是強勢技術之一,在上面需要多投入時間,給你的回報也會讓你驚喜。
2).對於資料庫來說是獨立學習的,這個時機就由你來決定吧。
3).編程語言作為學習軟體開發的主線,而其餘的作為輔線。
4).軟體工程師著重於B、C、E、D;軟體設計師著重於B、C、E、D、F;架構設計師著重於C、F、H。
3.如何學習Java?
3.1 Java學習路線
3.1.1 基礎語法及Java原理
基礎語法和Java原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當危險的。學習Java也是如此,必須要有扎實的基礎,你才能在J2EE、 J2ME領域游刃有餘。參加SCJP(SUN公司認證的Java程序員)考試不失為一個好方法,原因之一是為了對得起你交的1200大洋考試費,你會更努力學習,原因之二是SCJP考試能夠讓你把基礎打得很牢靠,它要求你跟JDK一樣熟悉Java基礎知識;但是你千萬不要認為考過了SCJP就有多了不起,就能夠獲得軟體公司的青睞,就能夠獲取高薪,這樣的想法也是很危險的。獲得"真正"的SCJP只能證明你的基礎還過得去,但離實際開發還有很長的一段路要走。
3.1.2 OO思想的領悟
掌握了基礎語法和Java程序運行原理後,我們就可以用Java語言實現面向對象的思想了。面向對象,是一種方法學;是獨立於語言之外的編程思想;是 CBD基於組件開發的基礎;屬於強勢技術之一。當以後因工作需要轉到別的面向對象語言的時候,你會感到特別的熟悉親切,學起來像喝涼水這么簡單。
使用面向對象的思想進行開發的基本過程是:
●調查收集需求。
●建立用例模型。
●從用例模型中識別分析類及類與類之間的靜態動態關系,從而建立分析模型。
●細化分析模型到設計模型。
●用具體的技術去實現。
●測試、部署、總結。
3.1.3 基本API的學習
進行軟體開發的時候,並不是什麼功能都需要我們去實現,也就是經典名言所說的"不需要重新發明輪子"。我們可以利用現成的類、組件、框架來搭建我們的應用,如SUN公司編寫好了眾多類實現一些底層功能,以及我們下載過來的JAR文件中包含的類,我們可以調用類中的方法來完成某些功能或繼承它。那麼這些類中究竟提供了哪些方法給我們使用?方法的參數個數及類型是?類的構造器需不需要參數?總不可能SUN公司的工程師打國際長途甚至飄洋過海來告訴你他編寫的類該如何使用吧。他們只能提供文檔給我們查看,Java DOC文檔(參考文獻4.4)就是這樣的文檔,它可以說是程序員與程序員交流的文檔。
基本API指的是實現了一些底層功能的類,通用性較強的API,如字元串處理/輸入輸出等等。我們又把它成為類庫。熟悉API的方法一是多查Java DOC文檔(參考文獻4.4),二是使用JBuilder/Eclipse等IDE的代碼提示功能。
3.1.4 特定API的學習
Java介入的領域很廣泛,不同的領域有不同的API,沒有人熟悉所有的API,對一般人而言只是熟悉工作中要用到的API。如果你做界面開發,那麼你需要學習Swing/AWT/SWT等API;如果你進行網路游戲開發,你需要深入了解網路API/多媒體API/2D3D等;如果你做WEB開發,就需要熟悉Servlet等API啦。總之,需要根據工作的需要或你的興趣發展方向去選擇學習特定的API。
3.1.5 開發工具的用法
在學習基礎語法與基本的面向對象概念時,從鍛煉語言熟練程度的角度考慮,我們推薦使用的工具是Editplus/JCreator+JDK,這時候不要急於上手JBuilder/Eclipse等集成開發環境,以免過於關注IDE的強大功能而分散對Java技術本身的注意力。過了這一階段你就可以開始熟悉 IDE了。
程序員日常工作包括很多活動,編輯、編譯及構建、調試、單元測試、版本控制、維持模型與代碼同步、文檔的更新等等,幾乎每一項活動都有專門的工具,如果獨立使用這些工具的話,你將會很痛苦,你需要在堆滿工具的任務欄上不斷的切換,效率很低下,也很容易出錯。在JBuilder、 Eclipse等IDE中已經自動集成編輯器、編譯器、調試器、單元測試工具JUnit、自動構建工具ANT、版本控制工具CVS、DOC文檔生成與更新等等,甚至可以把UML建模工具也集成進去,又提供了豐富的向導幫助生成框架代碼,讓我們的開發變得更輕松。應該說IDE發展的趨勢就是集成軟體開發中要用到的幾乎所有工具。
從開發效率的角度考慮,使用IDE是必經之路,也是從一個學生到一個職業程序員轉變的里程碑。
Java開發使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等幾種;而Eclipse、JBuilder 佔有的市場份額是最大的。JBuilder在近幾年來一直是Java集成開發環境中的霸主,它是由備受程序員尊敬的Borland公司開發,在硝煙彌漫的 Java IDE大戰中,以其快速的版本更新擊敗IBM的Visual Age for Java等而成就一番偉業。IBM在Visual Age for Java上已經無利可圖之下,乾脆將之貢獻給開源社區,成為Eclipse的前身,真所謂"柳暗花明又一村"。浴火重生的Eclipse以其開放式的插件擴展機制、免費開源獲得廣大程序員(包括幾乎所有的骨灰級程序員)的青睞,極具發展潛力。
3.1.6 學習軟體工程
對小型項目而言,你可能認為軟體工程沒太大的必要。隨著項目的復雜性越來越高,軟體工程的必要性才會體現出來。參見"軟體開發學習路線"小節。
3.2學習要點
確立的學習路線之後,我們還需要總結一下Java的學習要點,這些要點在前文多多少少提到過,只是筆者覺得這些地方特別要注意才對它們進行匯總,不要嫌我婆婆媽媽啊。
3.2.1勤查API文檔
當程序員編寫好某些類,覺得很有成就感,想把它貢獻給各位苦難的同行。這時候你要使用"Javadoc"工具(包含在JDK中)生成標準的Java DOC文檔,供同行使用。J2SE/J2EE/J2ME的DOC文檔是程序員與程序員交流的工具,幾乎人手一份,除了菜鳥之外。
J2SE DOC文檔官方下載地址:http://Java.sun.com/j2se/1.5.0/download.jsp,你可以到google搜索CHM版本下載。也可以在線查看:http://Java.sun.com/j2se/1.5.0/docs/api/index.html。
對待DOC文檔要像毛主席語錄,早上起床念一遍,吃飯睡覺前念一遍。
當需要某項功能的時候,你應該先查相應的DOC文檔看看有沒有現成的實現,有的話就不必勞神費心了直接用就可以了,找不到的時候才考慮自己實現。使用步驟一般如下:
●找特定的包,包一般根據功能組織。
●找需要使用類,類命名規范的話我們由類的名字可猜出一二。
●選擇構造器,大多數使用類的方式是創建對象。
●選擇你需要的方法。
3.2.2 查書/google->寫代碼測試->查看源代碼->請教別人
當我們遇到問題的時候該如何解決?
這時候不要急著問別人,太簡單的問題,沒經過思考的問題,別人會因此而瞧不起你。可以先找找書,到google中搜一下看看,絕大部分問題基本就解決了。而像"某些類/方法如何使用的問題",DOC文檔就是答案。對某些知識點有疑惑是,寫代碼測試一下,會給你留下深刻的印象。而有的問題,你可能需要直接看 API的源代碼驗證你的想法。萬不得已才去請教別人。
3.2.3學習開源軟體的設計思想
Java領域有許多源代碼開放的工具、組件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive論壇、PetStore寵物店等等多如牛毛。這些可是前輩給我們留下的瑰寶呀。入寶山而空手歸,你心甘嗎?對這些工具、框架進行分析,領會其中的設計思想,有朝一日說不定你也能寫一個XXX框架什麼的,風光一把。分析開源軟體其實是你提高技術、提高實戰能力的便捷方法。
3.2.4 規范的重要性
沒有規矩,不成方圓。這里的規范有兩層含義。第一層含義是技術規范,多到http://www.jcp.org下載JSRXXX規范,多讀規范,這是最權威准確最新的教材。第二層含義是編程規范,如果你使用了大量的獨特演算法,富有個性的變數及方法的命名方式;同時,沒給程序作注釋,以顯示你的編程功底是多麼的深厚。這樣的代碼別人看起來像天書,要理解談何容易,更不用說維護了,必然會被無情地掃入垃圾堆。Java編碼規范到此查看或下載http://Java.sun.com/docs/codeconv/,中文的也有,啊,還要問我在哪,請參考3.2.2節。
3.2.5 不局限於Java
很不幸,很幸運,要學習的東西還有很多。不幸的是因為要學的東西太多且多變,沒時間陪老婆家人或女朋友,導致身心疲憊,嚴重者甚至導致抑鬱症。幸運的是別人要搶你飯碗絕非易事,他們或她們需要付出很多才能達成心願。
Java不要孤立地去學習,需要綜合學習數據結構、OOP、軟體工程、UML、網路編程、資料庫技術等知識,用橫向縱向的比較聯想的方式去學習會更有效。如學習Java集合的時候找數據結構的書看看;學JDBC的時候復習資料庫技術;採取的依然是"需要的時候再學"的原則。
4.結束語
需要強調的是,學習軟體開發確實有一定的難度,也很辛苦,需要付出很多努力,但千萬不要半途而廢。本文如果能對一直徘徊在Java神殿之外的朋友有所幫助的話,筆者也欣慰了。哈哈,怎麼聽起來老氣橫秋呀?沒辦法,在電腦的長期輻射之下,都快變成小老頭了。最後奉勸各位程序員尤其是MM程序員,完成工作後趕快遠離電腦,據《胡播亂報》報道,電腦輻射會在白皙的皮膚上面點綴一些小黑點,看起來鮮艷無比…… 拖起明天的夢想還得靠自己!

⑷ 我工作一年多了,java程序員。我現在特別迷茫。不知道以後的發展道路

利用自己的業余時間多看看書多充充電 多看看源碼

⑸ 從單片機程序員到軟體工程師,從何學起

目前單片機的編程語言,大都使用匯編語言和C語言,這兩種是計算機編程語言里的基礎語言,匯編語言屬於低級語言,稱為符號語言。它的可讀性很低,要想編寫程序必須對硬體非常熟悉,可移植性很低,但是他也有優點,就是匯編過程轉換成機器指令最簡潔,運行速度也就最快。C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植。
基於上述的原因,你以後要做軟體工程師,這些都是基礎,軟體工程師的技術要求是比較全面的,除了最基礎的編程語言(C語言/C++/JAVA等)、資料庫技術(SQL/ORACLE/DB2等)等,還有諸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技術。此外,關於網路工程和軟體測試的其他技術也要有所涉獵。
路漫漫其修遠兮,吾將上下而求索,當好一名軟體工程師,你就得耐得住寂寞、熬的住長夜,成功後,前途(錢途)也會不錯的。

⑹ java程序員的成長路線是什麼是不是我圖片上這樣的一個順序

看圖說話。


1、個人覺得,你列出的諸如JSP,CSS,STRUTS等技術只是從小到大,從近到遠,應用范圍的進階而已。

2、然而程序員的進階,我覺得往往是其對某一方面專精的程度,而不是學到的廣度。諸如底層驅動工程師,JAVA應用工程師,資料庫工程師等等。

3、工作時,各個團隊有專精的任務,個人也只擔任很少的部分。所以我覺得要有針對性的尋找適合自己的位置。


最後,建議找到自己最感興趣的那塊,專精於此,祝你成功!

⑺ 網站程序員的程序員成長之路大概分幾個階段和未來的發展

信息技術的更新速度是驚人的,程序員的職業生涯則是一個要求不斷學習的過程,如何才能成為一名合格的程序員,一名合格的程序員需要掌握哪些技能呢?為此天天招生網采訪到幾位孳生的程序工作人員,就如何做好一名成功的程序員談出了自己的經驗。

熟練掌握開發工具

做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C和JAVA是重點推薦的開發工具,C/C以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。

熟知資料庫

為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。

對操作系統有一定的了解

當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要緩此深入了解操作系統,了解它渣哪斗的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的了解後,你會發現自己上了一個新的台階。

懂得網路協議TCP/IP

在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,所以,深入掌握TCP/IP協議是非常必要的。至少,你需要了解ISO七層協議模型,IP/UDP/TCP//CORBA/XML/WEBServices存在的意義

隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。程序員需要做的不僅僅是利用商業的開發平台來開發軟體,而是要理解這些技術的初衷,即為什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布計算的基石之一。

不要將軟體工程與CMM分開

現代大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是如磨一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。一句話可以概括我的看法:「創意無限,流程保證」。

擁有強烈的好奇心

什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。

真實,最准確的相關信息。

⑻ Java軟體工程師的發展路徑

Java軟體工程師的未來發展方向大致分為兩類:
一是成為管理人員,例如產品研發經理,技術經理,項目經理等;
二是繼續他的技術工作之路,成為高級軟體工程師、需求工程師等。 Java語言是一個面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++ 語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。
Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程介面中有一個網路應用編程介面(java net),它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。
Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
Java語言是安全的。Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
Java語言是體系結構中立的。Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件),然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。
Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。
Java語言是編譯解釋型的。如前所述,Java程序在Java平台上被編譯為位元組碼格式,然後可以在實現這個Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。
Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,隨著JIT(Just-In-Time)編譯器技術的發展,Java的運行速度可以和優化過的本地代碼相媲美。
Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable) 的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。
Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支持和Java平台內嵌的API能縮短應用系統的開發時間並降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結構和在多平台之間傳遞信息的低成本方式。特別是Java企業應用編程介面(Java Enterprise APIs)為企業計算及電子商務應用系統提供了有關技術和豐富的類庫。
和C/C++的差異熟悉C語言和C++語言的讀者一定想搞清楚這個問題,實際上,Java確實是從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發展和衍生的產物。比如Java語言的變數聲明,操作符形式,參數傳遞,流程式控制制等方面和C語言,C++語言完全相同.盡管如此,Java和C語言,C++語言又有許多差別,主要表現在如下幾個方面:
(1) Java中對內存的分配是動態的,它採用面向對象的機制,採用運算符new為每個對象分配內存空間,而且,實際內存還會隨程序運行情況而改變。程序運行中 Java系統自動對內存進行掃描,對長期不用的空間作為」垃圾」進行收集,使得系統資源得到更充分地利用.按照這種機制,程序員不必關注內存管理問題,這使Java程序的編寫變得簡單明了,並且避免了由於內存管理方面的差錯而導致系統出問題。而C語言通過malloc()和free()這兩個庫函數來分別實現分配內存和釋放內存空間的,C++語言中則通過運算符new和delete來分配和釋放內存。在C和C++這種機制中,程序員必須非常仔細地處理內存的使用問題。一方面,如果對己釋放的內存再作釋放或者對未曾分配的內存作釋放,都會造成死機;而另一方面,如果對長期不用的或不再使用的內存不釋放,則會浪費系統資源,甚至因此造成資源枯竭。
(2) Java不在所有類之外定義全局變數,而是在某個類中定義一種公用靜態的變數來完成全局變數的功能。 (3) Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯的功能。(4) Java不支持頭文件,而C和C++語言中都用頭文件來定義類的原型,全局變數,庫函數等,這種採用頭文件的結構使得系統的運行維護相當繁雜。
(5) Java不支持宏定義,而是使用關鍵字final來定義常量,在C++中則採用宏定義來實現常量定義,這不利於程序的可讀性。
(6) Java對每種數據類型都分配固定長度。比如,在Java中,int類型總是32位的,而在C和C++中,對於不同的平台,同一個數據類型分配不同的位元組數,同樣是int類型,在PC機中為二位元組即16位,而在VAX-11中,則為32位.這使得C語言造成不可移植性,而Java則具有跨平台性(平台無關性)。
(7) 類型轉換不同。在C和C++中,可通過指針進行任意的類型轉換,常常帶來不安全性,而在Java中,運行時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換。
(8) 結構和聯合的處理。在C和C++中,結構和聯合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結構和聯合,所有的內容都封裝在類裡面。
(9) Java不再使用指針。指針是C和C++中最靈活,也最容易產生錯誤的數據類型.由指針所進行的內存地址操作常會造成不可預知的錯誤,同時通過指針對某個內存地址進行顯式類型轉換後,可以訪問一個C++中的私有成員,從而破壞安全性。而Java對指針進行完全地控制,程序員不能直接進行任何指針操作。
(10)避免平台依賴。Java語言編寫的類庫可以在其它平台的Java應用程序中使用,而不像C++語言必須依賴於Windows平台。
(11)在B/S開發方面,Java要遠遠優於C++。 自從sun被甲骨文收購以後,Java的發展前景就變得撲朔迷離起來,很多程序開發者都感到很迷惑。2010年4月9日,被稱為Java之父的JamesGosling又在個人博客上宣布離開Oracle,這一事件更為Java的前景增加了一層迷霧。但是在進入5月份之後,一切開始變得明朗起來。首先是Oracle在Java的後續支持方面,宣布了一系列關於Java的相關計劃。然後是Java之父JamesGosling繼聲明Java不會死去之後又盛贊Oracle對Java所做的貢獻。在Oracle的活動發布網站上,連續發布了多個關於Java的推廣活動。
版本簡介
2010年5月12日,Oracle主要產品負責人DaveHofert將大談對JavaSE商業應用的改進和革新。根據宣傳資料,在這次演講中,DaveHofert將提到以下問題:
商業版與社區版本之間平台支持的差異。
如何獲得專家幫助,以幫助企業增強其Java應用。
對於舊版本的安全修補問題。
可使用的發布工具和更新。
2010年6月18、19、20、27日,將分別在赫爾辛基、斯圖加特、布達佩斯、倫敦舉行Oracle、Sun專家與用戶見面會,在見面會上與用戶一起探討Java的發展路線。主要討論的問題包括Oracle將如何繼續投資和改進Java技術,並且還會向用戶通報JavaSE、JavaME專家團隊的最新消息、JavaFX和JDK7最新的消息,以及OracleBerkeley DB的相關信息。
2010年5月3日,已經離開Oracle近一個月的Java之父JamesGosling在他的博客上表達了對NetBeans 6.9 和 FX1.3發布的關心。這兩個項目最新版本的發布,可以證明Oracle已經開始兌現當初的承諾。JamesGosling在其早期的博客中,也透露了不會放棄Java事業,只是需要解決一些與Oracle之間的法律問題。
這一切跡象表明,Oracle絕對不會輕易放棄Java這塊巨大的蛋糕,並且Oracle也開始逐漸學會了對開源社區的尊重。首先在JDK的商業版本方面,Oracle將會繼續深入挖掘Java的商業利益,與其固有產品進行更深入的整合。在社區版本方面,Oracle將與Java開發者一起探討和研發Java的技術。這里需要特別提到的一個產品是OracleBerkeleyDB,該產品是Oracle一直支持的一個開源非關系資料庫產品,在NOSQL大行其道的今天,如果Oracle能夠將BerkeleyDB與Java進行深入整合,將會為Java帶來更多的活力和生命。從JamesGosling的表現來看,他似乎與Oracle之間已經達成某種諒解,並且有進一步合作的可能性。
java發展
Java在日新月異的IT技術領域內不算年輕,在過去的十幾年中,Java曾憑借開放和跨平台等特性、藉助互聯網蓬勃發展的東風,改變了C/C++稱霸天下的局面,形成Java、C、C++三足鼎立的格局。特別是Java在編程語言排名榜上獨占鰲頭長達10年之久,並幫助Sun奠定了其在IT技術和開源領域的地位,都說明Java在開發領域中的重要性。
在未來發展方向上,Java在Web、移動設備以及雲計算方面前景非常廣闊。雖然面對來自網路的類似於Ruby on Rails這樣編程平台的挑戰,Java依然還是事實上的企業Web開發標准。在Java對新開發者吸引力方面,這么多年以來,Java一直都在面對那些不成熟的,基於腳本的程序語言的挑戰。比如PHP和Ruby,雖然經過多年努力,但是並沒有看到他們相具有比Java更強的競爭力。另一方面,隨著雲計算以及移動領域的擴張,更多的企業在考慮將其應用部署在Java平台上,無論是本地主機,公共雲,Java都是目前最合適的選擇。
事實上Java技術的開放性、安全性和龐大的社會已有資源,以及其跨平台性,即「編寫一次,到處運行」的特點,也使Java技術成為智能手機軟體平台的事實標准。採用Java技術後,編寫應用程序和提供服務的人就不必關心接受其服務的手機採用的是什麼操作系統和晶元,只要按照Java的要求去寫程序就好了;同樣,生產手機的廠商也不必顧慮將來誰來提供增值服務。同時在Oracle的技術投資擔保下,Java也將是企業在雲應用方面迴避微軟平台、在移動應用方面迴避蘋果公司的一個最佳選擇。比如VMware就宣布了一個稱為VMforce的服務,該服務將在雲計算機中布置Java應用,Google應用引擎也將一如既往的支持Java。他們都是微軟提供的,基於.Net和開源PHP語言基礎上的Azure雲平台的競爭對手。此外,進軍傳統的桌面應用仍是Java未來一個努力的方向之一。
JAVA作為主流的商業應用的語言在3G、物聯網時代下煥發出新的生機!
在互聯網時代,JAVA語言已經是使用最廣泛的伺服器端語言。隨著3G、互聯網時代的到來,JAVA語言並不會「過時」,相反,JAVA語言會在新的業務領域有著更輝煌的發展前景。
3G、互聯網的發展不僅僅帶動了「智能手機製造業」、「電信運營業」、「RFID產業」、「嵌入式設備」等硬體或系統軟體行業的發展;更重要的是:3G、互聯網開創了更多、更新的商業領域應用,而這些領域的核心編程語言仍然是JAVA!
在TTS4.0 課程體系中的基於智能手機平台的「航空公司移動服務門戶」項目和基於全球定位、實時訂單跟蹤、RFID倉儲管理等諸多互聯網新技術的「新一代物流管理系統」都是這些新商業應用領域的典型代表。
未來趨勢
對Java來說,2010年是不平凡的一年,從Oracle在年初完成對Sun的收購,使大家對Java的未來充滿了關注,而12月份在北京進行的JavaOne大會,可以說是Oracle在收購Sun之後的第一次正式大會,大家可以從 JavaOne上更多了解了Java未來的發展。而2011年,將成為Java新的開始。
Java走過了它15年的歷程,在日新月異的IT技術領域不算年輕,但它一直沒有停下變革、創新的腳步。Java已經不單單是一種計算機語言,很多情況下,我們稱它是一個平台,一個社區。下面從Java SE、Java EE、Java ME、JavaFX幾個方面,展望Java技術在2011年的發展。
Java SE
從Oracle公布的Java未來戰略我們可以看到,Oracle目標是加強和繼續擴大Java在新領域的應用,並將Java平台納入新的部署架構,加大對 Java社區的投資,允許社區更多地參與。開發人員比較關注的Java SE 7將會在2011年夏天就緒,其中JCP已經批准了JSR 334、JSR 335、JSR 336和JSR 337等,支持改進Java語言和API規范,比如switch in string、multi-catch、泛型實例創建中的precise rethrow、Lambda表達式(閉包)等。而Java SE 8也將在SE 7發布之後的一年到一年半的時間就緒。
模塊化的VM:可以將VM拆分成小塊由應用程序使用,並按需推向Internet,這樣的結果是Java應用程序的啟動時間更短了,當VM不在目標機器上時,下載的時間也更短了。
額外的語言支持:Java平台支持用不同語言編寫的應用程序,未來將會添加更多的語言支持,當然也包括對動態語言的支持,這就是所謂的達芬奇機或多語言虛擬機,請參考JSR-292。
增強的多核支持:需要藉助工具、庫和內置設施幫助新的和現有的Java應用程序更有效地利用多核硬體的優勢,Java的線程模型可以輕松地創建並行執行任務的線程,但你如何將一個單一的任務拆分成多片進行並行執行呢?
其它改進包括持續的性能改進,以及許多語言方面的增強,包括增加的閉包,在switch語句中對Strings的支持,以及多塊異常捕獲,閉包是一個有爭議的功能,它是通過使用匿名的Java內部類實現的。
Java EE
Oracle長期以來一直都是Java的支持者,也是最大的JCP成員之一,10多年前就開始參與Java EE規范的編制,因此對Oracle成為Java中間件市場的大鱷不應該感到意外。
Java EE展望
模塊化,開發標准:Java EE 6通過配置文件(Profile)定義實現了模塊化Java EE,允許廠商根據特定需求創建更小的Java EE堆棧子集,解決成本和Java EE使用復雜問題。通過模塊化設計和定義標准,有助於簡化Java EE,讓它的應用領域更廣泛。
Java EE 6規定了兩種配置文件:Web配置文件(Servlet,JSP和JSF)和Java EE企業配置文件。顯然還可以定義更多的配置文件種類,例如,為支持會話初始化協議(SIP)定義電信伺服器配置文件。
UI和RIA:HTML仍然是Java EE應用程序隱含的UI協議,通常有Java Servlet,JSP和JSF生成,考慮到生產的Web頁面是靜態的,可以使用Ajax技術,不過它已經超出了Java EE的范疇。
雖然Oracle沒有明確這方面的具體計劃,但未來Java EE和JavaFX集成時將會解決Ajax問題。
Java ME
作為 Oracle 首選的移動環境的 Java,這個堆棧未來默認的呈現方式將會是 HTML, CSS 和 Javascript。Java ME 將包含 WebKit 引擎,JavaScript. 引擎,和 Java/JavaScript. 橋,換言之,未來運行新版 Java ME 的手機,將能夠訪問瀏覽器以外的 Web 服務,而不會有任何性能問題。這些引擎將直接插入 Java ME虛擬機和插入 Java FX。
Oracle 的 Java ME 引擎,將利用當代圖形硬體加速器所擅長的(60 frames/秒)二維和三維渲染(在 Windows 環境下,微軟的 Direct X,還有 OpenGL 或未來「更好」的技術)。 Java ME 將會針對 ARM7 和 ARM9晶元組進行優化,包括 Broadcom,三星,NEC,德州儀器,以及其他取得授權的手機部件製造商,還將內置充分利用手機裝置的支付,通話,和定位等功能的 API。
JavaFX
隨著 JavaFX 和 Java 的整合,並運行於 JVM 之上,它的富媒體處理及二維和三維渲染功能,也將能提供給任何在 JVM 上運行的其他編程語言,這意味著,例如 Groovy, Scala 和 JRuby 等也都能用來整合 JavaFX 的能力。
JavaFX展望:
基於可視化組件創建一個設計範式
為JavaFX應用程序創建一個豐富的UI擴展庫
提升所有平台的JavaFX性能
增強跨設備移植JavaFX應用程序的能力
與Java,JavaScript和HTML 5無縫集成
支持新興設備和UI範式(如多點觸摸)

閱讀全文

與程序員到軟體工程有多長的路要走相關的資料

熱點內容
單片機編程取反 瀏覽:894
51單片機課程設計課題 瀏覽:897
手機淘寶登錄怎麼加密碼 瀏覽:483
linux快捷方式圖標 瀏覽:37
陽光車險的app叫什麼名字 瀏覽:461
購買單片機的器件時需要給商家啥 瀏覽:534
並行編譯技術的發展 瀏覽:549
阿里雲伺服器安裝管理 瀏覽:550
java手機開發教程 瀏覽:674
我的世界怎麼刪除伺服器數據 瀏覽:671
linux內存子系統 瀏覽:972
加密思維幣 瀏覽:690
魅族訪客文件夾 瀏覽:52
添加的文件夾怎麼找 瀏覽:617
程序員涉黃 瀏覽:700
maven編譯resources下的js 瀏覽:521
ubuntu文件移動命令 瀏覽:229
安卓i怎麼查找蘋果手機 瀏覽:951
雲伺服器宕機概率 瀏覽:232
在線買葯用什麼app知乎 瀏覽:815