久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

java初學者學習心得

時間:2019-05-12 14:43:28下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《java初學者學習心得》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《java初學者學習心得》。

第一篇:java初學者學習心得

學習Java心得體會

學習了一學期的Java課程,覺得是該總結自己的心得體會了。開始學習任何一門課(包括java),興趣最重要。一直覺得自己在學計算機編程語言,學習了很多,但每門語言都停留在知識邊緣地帶,都沒深入到它們的精華部分,對它們的精華部分知之甚少,于是趁學校開設這門課,并且有自己的老師講解,還有了上機的機會,比自己自學省事多了,于是鼓足信心,開始了漫長的java征途。

還記得我編寫的第一個經典程序“hello Word”。從那時起我已開始走進Java的世界。當時自己不是很理解為什么main方法一定要這樣來定義public static void main(String[] args),能不能不這樣寫?問了好多同學,他們告訴我的答案是一樣的“java本身要求就是這樣子的”,但我自己不甘心,就進行了下面的好多操作:把main改個名字運行一下,看看報什么錯誤,然后根據出錯信息進行分析;把main的public取掉,在試試看,報什么錯誤;static去掉還能不能運行;不知道main方法是否一定要傳一個String[]數組的,把String[]改掉,改成int[],或者String試試看;不知道是否必須寫args參數名稱的,也可以把args改成別的名字,看看運行結果如何。結果把Hello World程序反復改了七八次,不斷運行,分析運行結果,最后就徹底明白為什么了main方法是這樣定義的了。接著在以后的學習中我也采用這樣的方法解決問題,卻發現自己的速度比別人慢了好多,我就把自己的課余時間也分一部分給了java。因為基礎是最重要的,只有基礎牢固才有可能對后面的學習有更加深刻的認識!

學習一門新的語言,參考書是離不開的。聽老師說訂的教材偏難,不適合我們初學者,于是我在圖書館借了參考書(一本篇幅較短的入門書來學習那些最簡單、最基本的東西,包括學習Java語法等)。同時,對一個最簡單的程序也應該多去調試,多想想如果改動一下會出現什么結果?為什么必須那樣寫?多去想想這些問題然后去操作,會讓你有更多的收獲。這樣反復地思考是很有用的。

在學習Java的語法時,Java的語法是類似c語言的,所以學習的比較輕松。唯一需要注意的是有幾個不容易搞清楚的關鍵字的用法,public,protected,private,static,什么時候用,為什么要用,怎么用,和同學一起討論了好久才得以解決。

在學習Java的面向對象的編程語言的特性。比如繼承,構造器,抽象類,接口,方法的多態,重載,覆蓋,Java的異常處理機制。對于一個沒有面向對象語言背景的人來說,我覺得這個過程需要花很長很長時間,因為學習Java之前沒有C++的經驗,只有C語言的經驗,花了很長時間,才徹底把這些概念都搞清楚,把書上面的例子反復的揣摩,修改,嘗試,把那幾章內容反復的看過來,看過去,看了很多遍,才徹底領悟了。

開始熟悉Java的類庫。基礎類庫里面的類非常非常多。據說有3000多個。但是我真正使用的只有幾個,比如說 java.io.*;java.util.*;java.sql.*;等。此外,我對于static,public,private,Exception,try{ },catch { },finally{ }等等一開始都不是很懂,都是把書上面的例子運行成功,然后就開始破壞它,不斷的根據自己心里面的疑問來重新改寫程序,看看能不能運行,運行出來是個什么樣子,是否可以得到預期的結果。這樣雖然比較費時間,不過一個例子程序這樣反復破壞幾次之后。我就對這個相關的知識徹底學通了。有時候甚至故意寫一些錯誤的代碼來運行,看看能否得到預期的運行錯誤。這樣對于編程的掌握是及其深刻的。

在學習Java的過程中我得出這樣的結論:

1.學習中,要養成良好的習慣(寫括號時要成對,字母大小寫要區分,單詞拼寫要準確)。

2.在學習的過程中,最好不是僅僅停留在java表層,不是抄書上的例子運行出結果就可以。要注意,即便對一個簡單的例子也要有耐心去琢磨、調試、改動。

3.在學習的過程中一定要動手做、試著寫代碼,而不是抱一本書看看就行。很多東西和體會必須自己動手才能真正屬于自己。4.在 Java 的學習過程中,可能會遇到形形色色的問題不容易解決,應多去專業論壇了解相關的知識,書本上的知識有限。要會從網上搜索有用的信息 加以整理,促進學習的深入和知識水平的提高。

看了好多網上課程,說學到一定程度要嘗試著自己做東西,但覺得自己僅僅經過一學期的學習,還遠遠不夠,希望自己在以后學習中繼續努力,能夠真真正正擁有一門編程語言,對自己今后的發展起到作用。在學習java語言的同時,也讓我學會了如何來發現問題,如何解決問題,怎樣有效的學習等等,相信會對我一生都有幫助。

第二篇:Java初學者如何學習(必看)(本站推薦)

這篇文章是我無意中在網上看到的,很有感觸,感覺對初學者肯定會有幫助,打算整理一下再發出來的,可是改了半天,還是沒人家原本的內容連貫,有邏輯性。所以直接拿過來了。希望想學習java朋友可以花點時間看看,看完肯定會有所收獲的,我不多說了,趕緊看看牛人的建議吧。JAVA交流群四一八,三五五,加上五三一。給初學者之一:淺談java及應用 學java不知不覺也已經三年了

每次上網,泡bbs逛論壇,沒少去java相關的版面 總體感覺初學者多,高手少,精通的更少

很多人對java感到茫然,不知所措,不懂java能做什么 即便知道了java很有用,也不清楚該從哪里入手 所以就有了 java入門難 這一說法

ok,那我們就從java到底能做什么聊起 先說什么是java java是一種面向對象語言,真正的面向對象,任何函數和變量都以類(class)封裝起來 至于什么是對象什么是類,我就不廢話了

關于這兩個概念的解釋任何一本面向對象語言的教材里面都有 知道了什么是java,那自然就會對java能干什么感興趣

在說java能做什么之前,先說java作為一個真正面向對象語言的優點 首先第一個,既然是真正的面向對象,那就要做到徹底的封裝

這是java和c++最大的不同,java所有的源碼以及編譯后的文件都以類的形式存在

java沒有所謂的類外部定義,所有的函數(方法)以及變量(屬性)都必須在類內部定義 這樣就不會出現一個類被切割成這里一塊那里一塊的情況,c++就可以,不是么? 這樣做使得整個程序的結構異常清晰,明了

其次第二個,最讓人歡呼雀躍的是完全屏蔽了指針,同時引入了垃圾回收機制 任何一個寫過c/c++代碼的人,都會對內存管理深惡痛絕 因為這使得我們不能把主要精力放在我們關心的事情上 而需要考慮計算機內部的一些事情,作為一個軟件工程師

我想沒有一個人愿意把大量的時間花在內存管理上,畢竟我們不是電子工程師 此時java的優勢體現出來了,它完全屏蔽了內存管理

也就是說,如果你用java寫程序,寫出來的任何一個程序內存上的開銷,都不受你控制 乍一看,似乎你受到了束縛,但實際上不是這樣

因為雖然你的程序無法對內存進行管理,降低了一定的速度 但你的程序會非常非常的安全,因為你無法調用一個空指針 而不像以前寫c的時候那樣,成天因為空指針而擔驚受怕

當然,如果你深入了解這一行,就會發現java其實也無法保證程序不去調用空的指針 但是它會在最大程度上避免空指針的調用

這已經很好了,安全,這是java的最突出的優點

第三個,虛擬機跨平臺,這是java最大的特點,跨平臺 可能所有人都知道windows,但是不是所有人都知道unix 和java一樣,很多人都不知道unix這種操作系統干什么用

我不想多說unix的應用,這不是主要,但是我要說,大部分小型機 工作站,都跑在unix一族的操作系統上,比如linux/solaris unix比起windows有一個最顯著的特點,穩定,這就好比思科和華為 思科的機器慢但穩定,華為的機器快但不穩定,作為服務器這一端來說還是非常有市場的 而且很重要的windows不安全,在ms的宣傳中我想所有人都很少看到安全二字 因為windows操作系統針對的是pc用戶,pc死機就死機咯,大不了重啟 最經常冒出來的就是藍屏,在服務器這一端上因為ms沒有自己的芯片

所以要做系統有些力不從心啊。扯遠了,那么java可以做到在windows上編譯 然后在unix上運行,這是c/c++做不到的 那么說到這里,java能做什么逐漸清晰起來 剛才說到了,java程序有一個的特點是安全

這個安全是針對你的系統來說得,系統在跑了java程序之后會特別地穩定

而且還能跨平臺,那么很明顯,java主要應用于除了windows操作系統以外所有的平臺 比如手機,服務器

想想看,如果你寫的程序要跑在手機上,而手機有多少款用的是windows? 就算有,那如果你用c/c++,是不是要針對每一款手機寫一套程序呢? 累死,那跨平臺的java就不用,做到編譯一次,隨時運行

同樣,在服務器這一端,如果我想給一個網絡門戶站點,比如sina 寫一個應用程序,pc的性能肯定無法滿足sina這樣大站點并發數量的要求 那么它就需要買服務器,那么服務器ms沒有市場,而且windows很不安全 那么十之八九會買一個sun/ibm的機器,或者hp,但不管是誰的機器

它裝的操作系統也不會是windows,因為windows太不安全了,而且多核的支持太差了 這個有空再說,那么如果你要寫一個程序在這樣的機器上跑

難道我們就在這個機器上做開發么?當然不可能,一般程序員開發用的都是pc,windows 那么該怎么辦?寫一個程序,然后再拿到服務器上去編譯,去調試? 肯定不可能,所以我們就希望找到一個語言,編譯完生成程序之后

在pc上調試,然后直接移植到服務器上去,那么此時,我們就會毫不猶豫地選擇java 因為在跨平臺以及安全性來說,java永遠是第一選擇 ok,下面說java的缺點

一慢,這其實是一種誤區,這就好比goto語句一樣

java也拋棄了指針,雖然看上去似乎變慢了,但是在這個兩三年硬件性能就能翻番的年代 速度已經不是我們關心的問題了,而且對于企業級的應用來說

沒有什么比安全穩定更重要的,換句話說,我們可以忍受慢,但是不能忍受死機和藍屏 而且越大型的應用,這種慢的劣勢體現得越模糊

因為當系統項目越做越大,任何一個環節做不好都可能影響全局的情況下 安全尤其重要,而且就像goto語句一樣

這種過分追求速度的主張會給系統開發和糾錯以及維護帶來無可挽回甚至不可避免的損失 把內存交給計算機去管理吧,這種代價值得

我們做的不是pc游戲,沒必要把內存的那一點點消耗當親爹

二難看,又是一個誤區,很多人甚至拿出java swing控件畫出的界面來說 呵呵,其實java不是不能畫得好看,IDEA就是java寫的IDE,挺漂亮的

但為什么難看呢,是因為swing控件它本身就是unix時代的產物,swing控件貼近unix界面

老外看unix界面其實挺順眼的,他們就是吃unix飯長大的

而unix又是吃百家飯的,不像ms那么唯利是圖,所以不怎么對中國人友好 加上我國又沒有公司在做操作系統,所以看上去是不怎么順眼 其實玩過unix的人都知道,unix對中文的支持一直不怎么好 給初學者之二:從JDK說起

在知道了java有什么優點,能做什么之后 就該說一下java該如何去學了

在說java如何去學之前,有必要把java的幾個大方向做一個簡單說明 早在99年的時候

sun公司做出了一個決定,將java應用平臺做一個劃分 畢竟在不同領域,語言應用特性是有區別的

針對不同領域內的應用,sun公司可以發布相關高端標準來統一規范代碼 這三大塊就是J2SE,J2EE以及J2ME 這個舉措今天看來無疑是非常了不起的

正是由于這次革命性的發展,使java從一種小打小鬧游戲性的語言 發展成為今天企業級應用的基礎

這里要特別說明一下J2SE J2EE J2ME中2的意思 其實2就是英文單詞to的諧音,就是to的意思

而不是second edition,當然java 2本身版本號就是1.2,也有點2nd edition的味道 說點題外的,sun公司發布的java版本很有意思

雖然總是寫是1.X但其實外界對這種版的說法也就是X.0 比如java 2,其實就是java 1.2 1.3其實就是3.0,1.4就是4.0,現在所說的5.0 其實就是1.5 只是以前我們更習慣叫1.X而已

可能到了5.0以后,就全改叫X.0而不是1.X了

所以以后聽到別人說java 5.0,千萬別驚訝,其實就是1.5 在這三個J2*E中J2SE是基礎,就是java 2的標準版(java 2 standard edition)也就是最基礎的java語言部分,無論學什么java技術,J2SE都是必須掌握的 要使用J2SE就必須安裝JDK(java development kit)

JDK在sun公司的主頁上可以免費下載,下載后需要安裝,具體安裝流程看教材 JDK包含有五個部分:核心API,集成API,用戶界面API,發布技術還有java虛擬機(JVM)先說運行環境,運行環境最主要要說的就是java虛擬機(JVM)

前面我們說過java是跨平臺的語言,那么如何做到跨平臺呢?畢竟每種操作系統都是不同的

java的設計者們提出了一個虛擬機的概念

在操作系統之上建立一個統一的平臺,這個平臺必須實現某些功能以支持程序的運行 如下圖:

------| program |------| JVM |------| UNIX | Windows | Linux | Solaris |..------程序員所寫的每一個程序都先運行在虛擬機上 所有操作都必須經過虛擬機才能和操作系統交互

這樣做不僅統一了所有操作系統,同時也保證了操作系統的安全 要死機的話,死的是虛擬機(JVM)而操作系統并不會受此影響 而我們所說的java運行環境指的主要是JVM,其他的不說了,省略

下面說說JDK(java development kit)的API,其實用JDK來包括運行環境以及開發工具 個人感覺是不恰當的,因為這三個單詞僅能說明開發工具,也就是幾個標準的API 而沒有讓人感覺到有運行環境的意思在里面,這是題外 那么什么是API? 簡單地說就是Application Programming Interface,應用程序編程接口 在java里面,就是一些已經寫好了的類打成的包

這又要解釋什么是類什么是包了,簡單說一下,包就是類的集合 一個包包含零個或多個類,嗯,具體的可以去看書

這些類是java的基礎類,常用的類,可以簡單理解成java的工具集 最后說一下JDK的發布技術,其實按我的理解,講白了就是編譯器將.java文件轉換成.class文件的一種技術

這三部分組成了JDK,有了JDK,就可以開發出J2SE應用軟件了 最原始的只要用一個記事本寫幾行代碼就可以了

但一般來說我們會使用效果比較好的開發工具,也就是IDE 在J2SE這一塊,特別推薦JCreator這款IDE sun公司的產品,與JDK結合得幾乎是天衣無縫,非常適合初學者使用

教材方面中文的推薦電子工業出版社出版的《java教程》初級與高級篇各一本 還有就是《21天學通java》雖然有人說21天系列是爛書,但個人感覺

對于j2se,這本書翻譯得已經很不錯了,基本沒有什么語法錯誤,語句也很通順 最后要說的就是《thinking in java》

這本書自然很經典,說得比較細,只是我覺得不太適合初學者,其實也不難

初學者直接看也不成問題,但個人感覺還是找本教材也就是前面推薦的兩款來看比較好 基本概念的理解還是用教材的,畢竟thinking in java有的版本翻譯得很爛 而且個人建議還是看原版比較好,當然這幾本都看最好了,但如果沒時間 至少精讀其中一本,然后再看其他兩本就可以,其實三本書內容也差不多

但看問題的角度方式以及面向的讀者也都不同,嗯,怎么說呢,找適合自己的吧 最后要說的是

由于虛擬機的存在,J2SE的大多數軟件的使用會比一般桌面軟件慢一些 效果不盡如人意,現在大概只有swing控件還在使用吧,其它沒怎么聽說 J2EE&J2ME 這是java應用的重中之重,如果想拿高薪,最好把J2EE學好

記得以前在csdn上看過一個調查,月薪上萬的程序員主要從事哪方面的工作 十個中有八個是做J2EE的,其他兩個一個做J2ME,還有一個做嵌入式 也許有些夸張,但也從某一方面說明J2EE人才的稀缺以及應用的廣泛

所以如果想學java,只精通j2se是永遠不夠的,至少還需要時間去了解其它兩個J2*E

給初學者之三:java企業級應用之硬件篇

總算講到企業級應用了,內容開始逐漸有趣起來 java企業級應用分為硬件篇和軟件篇

重點在軟件,硬件是外延,嚴格地說與java沒有必然聯系 但是,由于java是網絡語言,不了解硬件的一些基礎知識

軟件知道再多也沒什么用,不要上了戰場還不知道為什么而打仗

硬件是軟件的基礎,在這個前提下,有必要專門花一點點篇幅來聊一下硬件 硬件,簡單地說就是我們實際生活中看得見摸得著的東西,也就是那些冰冷的機器,比如服務器,個人電腦還有網絡交換機,路由器等等,那么先拋開網絡設備不談,先來說說計算機電腦的歷史

在很早很早以前,人類創造了第一臺電腦,那時候的電腦只是一臺用來計算的機器 無比大,無比重,無比傻,除了算其它屁事不會做,沒有所謂的人工智能與計算機網絡 但是總算是誕生了,雖然以今天的眼光去看那時候的機器巨傻無比 只配叫做計算器而不是電腦,沒有邏輯思維能力,只會死算 但千里之行,始于足下,反正是造出來了 然后隨著時間的推移,制造業發展發展發展

電腦性能逐漸得到提升,速度快了起來,成本也逐漸低了下來

于是人們造出了第二臺,第三臺,第四臺,第五臺……第n臺計算機 人們就造出了無數臺計算機并使其成為一種產品

逐漸應用于許多復雜計算領域,不僅僅是科研,許多生產領域也開始出現計算機的影子 然后又隨著時間的推移,人們發現不可能把所有的計算機都做成一個樣子 因為各行各業對計算機性能的要求各不相同

于是開始把計算機劃分檔次,最簡單地是按照計算機的大小劃分 就是教科書上寫的大型機,中型機,小型機

//個人感覺這樣分純粹扯淡,還以為是小孩子玩球,分為大球,中球和小球 但是不管怎樣,計算機不再是千篇一律一個樣子了

按照性能的不同,在不同領域,出現了滿足符合不同要求的計算機 幾乎在同時,人們也開始考慮計算機之間通訊問題

人們開始考慮將不同的計算機連接起來,于是網線出現了,網絡出現了 又隨著網絡的發展,出現了一下專門為了尋址而存在的機器 這就是路由器和交換機,然后又出現了一些公益性的組織或團體 他們制定了一系列的標準來規范以及管理我們的網絡 于是3w出現了,計算機的網絡時代來臨了

嗯,說到這里,計算機發展到今天的歷史大概說完了,我們來詳細說說網絡時代的計算機以及各個硬件供應商之間的關系

前面說到了,計算機分為大型機,中型機和小型機……

但是現在市場上沒有人這樣分,要是出去買機器,對硬件供應商說

我要買一款中型機,或者說,我要買一款小型機,硬件供應商肯定會問問題

他們會問你買機器干什么用的?科學計算啊還是居家用,是作服務器啊還是圖形設計 但不管怎樣,簡單地說大中小型機已經沒有什么意義了 我們按照使用范疇來劃分 簡單劃分為

服務器,工作站還有微機 服務器(server)

服務器涵蓋了幾乎所有的大型機以及大部分中型機甚至一些小型機 用通俗點話說??衿骶褪悄掣齬??4小時不間斷運行提供服務的機器 比如賣飛機票(中航信),比如酒店預定(攜程)

比如提供門戶站點相關服務(sina),比如電子商務(ebay,amazon,阿里巴巴)這些服務對機器都有一些特定的要求,尤其強調安全和穩定 工作站(workstation)

工作站其實是圖形工作站的簡稱,說白了,就是某種功能極其強大的計算機 用于特定領域,比如工程設計,動畫制作,科學研究等 個人電腦/微機(pc)

計算機網絡的最末端,這個應該不用我說太多了 網絡時代的pc已經普及到千家萬戶

說完了分類,我們就來說說各個硬件供應商 首先是服務器還有工作站

這兩類硬件供應商主要是以下三家 Sun,IBM還有HP(惠普)然后是PC 以前IBM還有PC事業部,現在被聯想吞并了(蛇吞象)

現在國際市場上有聯想和DELL(戴爾),目前戴爾還是國際老大 還有HP康柏

然后是網絡,也就是路由器和交換機

這塊市場嘛,Cisco(思科)Brocade(博科)還有McDATA三足鼎立 內核(CPU)PC內核

主要是AMD和Intel,前者最近與Sun公司合作,Sun也有一部分單雙核服務器用的是AMD的

服務器與工作站內核 這一塊與硬件廠商綁定

還是Sun,IBM,HP三家自己生產 題外

在一些大型主機應用市場,比如賣飛機票

德國的漢莎,中國的中航信,香港的國泰用的都是尤利(美國的公司,英文名我忘了)其它用的是IBM的機器,現在能做大型機的感覺似乎只有IBM可以

尤利已經快倒了,技術太落后了,現在他們的系統還是fortran寫的,連c都不支持 要特別說明的是,一個超大型主機然后多個小終端/pc的結構現在越來越沒市場了 將來的趨勢是用一整個包含多個服務器的分布式操作系統來取代這些大型主機 因為大型主機更新換代極其困難,一旦數據量超過了主機的處理能力 那么就要換主機,這個成本是極大的,但是如果用分布式操作系統 那就只需要增加小服務器就行了

硬件就大概說到這里,與大多數人沒什么關系

因為大多數人壓根不可能進入這些硬件領域,除非做銷售 說了這么多,只是為了給軟件部分打基礎而已 //做嵌入式的除外

給初學者之四:java企業級應用之軟件篇 嗯,說過了硬件就該是軟件了 這篇是這個系列的重中之重

首先我們來說說什么是軟件,統一一下概念 所謂軟件通俗地說就是一套計算機程序 實現了某些功能的計算機程序

在很早很早以前,一臺計算機的軟件是不分層次結構的

一臺計算機只有一個系統,這個系統既是操作系統又是應用軟件,與硬件緊密綁定 后來經過許多年的發展發展發展 人們把一些與硬件緊密相連的又經常用到必不可少的功能做到一套程序中去 這一套程序就被人們稱做操作系統

另外一些可有可無的,不同工作適應不同環境的功能封裝到另外一套程序中去 而這一系列程序被人們稱作應用軟件 如下圖:

------------|應用軟件:falshgat/IE/realplayer/winamp..|------------|操作系統:UNIX/Windows/Linux/Solaris...|------------前一篇我們知道,硬件分為服務器工作站與pc 其實無論哪種硬件的軟件,都有操作系統與應用軟件 ok,那下面我們來談應用軟件

在現在企業級應用中,我們的應用軟件一般分為三層 三層分別是表示層,業務邏輯層,數據持久層------------------------------|表示層|業務邏輯層|數據持久層|------------------------------我們來說說三層中的代表軟件 表示層

這一層一般在客戶端pc機上,最常見的是IE瀏覽器,這就是表示層的軟件 表示層是直接與使用者交互的軟件 業務邏輯層

這一層一般在服務器端,顧名思義,所有業務邏輯處理都在這一層完成

最典型的是appserver,比如IBM的websphere,BEA的weblogic還有tomcat/jboss等 這一層也是三層中的重點,我們要說的大部分內容都是關于這一層的,這個等會再說 這一層就叫做中間層 數據持久層

這一層典型的就是數據庫,一般也在服務器端 但該服務器一般與裝業務邏輯層軟件的服務器分開 當然你也可以用IO輸入輸出流往硬盤上寫東西

但沒人會建議你這么做,因為這樣做你的數據缺乏管理,不管怎樣 這一層要做的就是保存數據,業務邏輯層軟件一般不負責保留數據

或者說業務邏輯層只負責暫時儲存數據,一關機,業務邏輯層數據全部over了 那么數據的持久化(也就是儲存數據)就必須要在這一層完成下面放著這些概念不談,我們來說說將來的趨勢 趨勢一:

瘦客戶端,很早很早以前,當時C/S模式也就是client/server 客戶端軟件大行其道的年代,一個pc用戶,是采用一個傻終端連接到服務器上 然后進行相應的操作,最典型的就是我們上bbs經常用的c-term 這就是那個時代的產物,同樣還有我國現行的機票定座用的e-term 后來呢,瀏覽器變得非常流行,人們發現,瀏覽器也能傳遞一些數據 雖然這些數據并不像那些終端那樣準確,但應付大多數日常需求足夠了

于是人們就提出一個瘦客戶端概念,也就是說,將來表示層所有的其他軟件疾揮? 我們唯一需要的就是一個網頁瀏覽器,然后通過瀏覽器輸入ip地址連接到服務器 然后進行相關的操作,由于網頁瀏覽器一般每個操作系統都有自帶一個 這樣做就達到了給我們客戶端瘦身的目的(不需要安裝額外軟件)這樣模式被稱作B/S模式,也就是browser/server模式

但需要指出的是,雖然瘦客戶端是趨勢,但并不代表胖客戶端沒有市場 尤其是一些復雜的業務操作,還是瀏覽器這種簡單軟件無法勝任的趨勢二:

傻數據庫,ok,首先,我承認,這個名詞是我發明的,但我實在無法找到一個更好的表達 什么是傻數據庫,如果誰對數據庫有所了解的話,就知道,以前的數據庫

有自己的一套管理體系,甚至有自己的客戶端,比如oracle,mysql,sqlserver都有 在某個管理工具上寫什么sql語句查詢數據庫是我們以前常做的事 那么將來我們提倡的是:將所有的業務邏輯封裝到業務邏輯層去 管理的事情由軟件來做,由業務邏輯層的軟件來做 所謂傻數據庫就是說,將來的數據庫什么事都不用做

只用把數據給我保存好就行了,那些復雜的業務邏輯什么外鍵什么關聯 都沒數據庫什么事了,都交給業務邏輯層軟件來做

這樣做的好處就是:我們就不需要這些該死難懂又復雜的數據庫系列管理工具了 而且這些工具每個數據庫都有自己的工具,完全不一樣,亂七八糟,沒有人喜歡面對他們 除了數據庫維護人員,也就是DBA,我們是軟件工程師,維護的事讓他們去做

而且嚴禁數據庫維護人員改動數據庫的數據,他們只做備份,必要時候恢復一下就是了 了解了這兩個趨勢之后,是不是有種砍頭去尾保中間的感覺?

沒錯,未來的趨勢就是中間件時代,中間件工程師將是未來計算機應用的主流 那再次統一一下概念,什么是中間件?

記得我上學的時候,看ibm的教材,看了半天中間件定義,就看懂記住一句話 中間件是做別人不愿意去做的事情,現在想想,狗屁定義,呵呵 什么是中間件,中間件是業務邏輯層的應用軟件 是處理業務數據與客戶端之間業務邏輯的一種應用軟件 一種提供網絡服務的服務器端應用軟件

舉個非常簡單的例子,網上銀行,某個人想用IE進入工行的賬戶,然后轉帳 在這個例子中,客戶端表示層顯然是IE,數據持久層顯然是銀行的核心數據庫 那么中間件是什么?中間件就是提供這種服務的系統 這三層的劃分如下

------------------------------|表示層 | 業務邏輯層 | 數據持久層 |------------------------------| IE | 網上銀行 | 數據庫 |------------------------------給初學者之五:企業級應用之中間件 前面一篇簡單介紹了一下應用軟件的分層

下面重點介紹一下中間件,也就是業務邏輯層的軟件結構 從本系列第二篇我們知道,java程序是跑在虛擬機之上的 大致結構如下:------------| grogram |------------| 虛擬機 |------------| 操作系統 |------------也就是說操作系統先運行一個java虛擬機,然后再在虛擬機之上運行java程序 這樣做的好處前面也說過了,就是安全,一旦出現病毒或是其他什么東西 掛掉的是虛擬機,操作系統并不會受多大影響

這時候有人可能會問,為什么非要虛擬機?把操作系統當成虛擬機為什么不行? 可以,當然可以,但是這樣做某一個應用軟件的bug就可能造成整個操作系統的死亡 比如說我們在某個服務器上安裝了一個收發電子郵件的軟件和java虛擬機 那么一旦黑客通過收發電子郵件的軟件入侵系統,那么操作系統就整個玩完 那么如果黑客通過java程序進行攻擊的話,那么死的將會是虛擬機而不是操作系統 大不了虛擬機崩潰,而操作系統正常運行不受任何影響

舉個簡單例子,比如說最常見的是將數據庫(DB)與中間件放在同一臺服務器上------------------------| program | |-----------| DB | | 虛擬機 | |------------------------| 操作系統 |------------------------那么此時如果沒有虛擬機,黑客病毒攻擊中間件系統,就有可能造成操作系統的死亡 那此時數據庫也有可能跟著一起玩完,那損失可就大咯

那如果此時有虛擬機,那么一旦被攻擊,死的是虛擬機,操作系統與數據庫不受任何影響 嗯,回顧完虛擬機,再來介紹中間件

在很早很早以前,任何一家企業,想要搭建一個局域網系統,他需要請許多個工程師 比如說我們想搭建一個網上銀行,客戶端用瀏覽器,后臺數據庫比如說用oracle 那么搭建這樣一個網上銀行,可能需要用到多少個工程師,我們來算一算

首先,由于客戶端用的是瀏覽器,我們需要一些了解網絡通訊協議以及一些瀏覽器標準的網絡工程師

其次,由于后臺數據庫用的是oracle,那我們還需要請oracle的工程師,因為數據庫這一層每個數據庫公司的接口什么都不 一樣

然后,我們還需要一些操作系統的工程師,因為我們的系統需要跟操作系統直接交互 最后,我們需要一些設計網上銀行系統及其相關業務的工程師

太多了太多了,這樣一個中間件隊伍實在太龐大了,制作維護成本實在太高了 不僅如此,這樣一個中間件就算做出來,他們所寫的代碼也只能滿足這一家公司使用 其它公司統統不能再用,代碼重用率極低,近乎不可能重用 畢竟這個系統中改動任何一個部分都有可能涉及到整個系統的改動 那么如何降低成本? 我舉出了四組的工程師:

網絡工程師,數據庫工程師,操作系統工程師以及設計網上銀行系統的業務工程師 除了最后一組設計網上銀行的業務工程師之外,前面三組工程師是不是每一個項目都需要的?

就算不是每一個項目都需要,至少也是絕大多數項目需要的吧?

哪個項目能夠脫離網絡,數據庫和操作系統?不可能,在這個時代已經很少很少了 好,那既然每個項目都需要,我們是不是可以用一個產品來取代這三組的工程師呢? 我們的業務工程師只需要遵循這個產品所提供的接口,進行相應的開發就行了 人們提出了一種叫做appserver也就是應用服務器的東西

應用服務器是干什么的?按官方的說法,應用服務器是包括有多個容器的軟件服務器 那容器是什么?容器(Container)到底是個什么東西我想多數人還是不清楚 在說這個之前,先介紹一下組件

什么是組件,組件是什么?組件其實就是一個應用程序塊 但是它們不是完整的應用程序,不能單獨運行 就有如一輛汽車,車門是一個組件,車燈也是一個組件 但是光有車燈車門沒有用,它們不能跑上公路

在java中這些組件就叫做javabean,有點像微軟以前的com組件 要特別說明的是,由于任何一個java文件編譯以后都是以類的形式存在 所以javabean肯定也是一個類,這是毫無疑問的 好,那么容器里裝載的是什么呢?就是這些組件 而容器之外的程序需要和這些組件交互必須通過容器

舉個例子,IE發送了一個請求給容器,容器通過調用其中的一個組件進行相關處理之后 將結果反饋給IE,這種與客戶端軟件交互的組件就叫做servlet 但是組件有很多種,那么如何區分這些組件呢?

有多種管理辦法,比如同是同樣是servlet,有些是通過jsp生成的

而有些是開發人員自己寫的,那么通過jsp生成的servlet集中放在一個地方 而開發人員自己寫的則需要在xml里面配置一些基本的參數

同時,不同組件有可能還需要繼承一些特定的父類或者接口,這也是容器管理的需要 還有其他的一些組件,這里就不一一說明舉例了 那么容器有很多種,按照他們裝載的組件類型劃分

比如有裝ejb的ejb容器,有裝servlet與jsp還有靜態頁面的web容器等等 //這種只含有web容器的應用服務器也被叫做web服務器 當表示層的應用軟件通過網絡向appserver發送一個請求的時候

appserver自動找到相應容器中的組件,執行組件中的程序塊,把得到結果返還給客戶 而我們要做的事就是寫組件也就是javabean,然后放到appserver里面去就可以了 至于怎樣與IE通訊,怎樣截獲網絡上的請求,怎樣控制對象的數量等等

這些繁瑣而無味的工作我們都不管,都由appserver去做吧,把注意力集中在業務邏輯上 appserver與其他相關軟件的關系如下圖:

------------------------| 表示層 | 業務邏輯層 | 數據持久層 |------------------------| |-----------------| | | IE | | javabean | | | |->------------------> DB | | client <-appserver <-| | |-------------------------| | | | 虛擬機 | | |--------------|-------------------------|------------| | Windows | Linux/Saloris |LinuxSaloris| |--------------|-------------------------|------------| 圖上可以看出:虛擬機負責處理中間件與操作系統之間的交互 appserver則負責組件的管理以及與其他兩層的業務交互

要說明的是上圖中還包含有應用程序客戶端容器(Application client container)管理應用程序客戶端組件的運行,應用程序客戶端和它的容器運行在客戶機 這種情況比較復雜一般說的是兩個server之間的通訊

比如jsp/servlet容器在一個服務器上,而ejb容器在另外一個服務器上等等 這是分布式操作系統大面積應用的基礎,這個以后再說 嗯,那么話題再回到中間件上去,什么是中間件?

appserver就是所謂的中間件,但是中間件不僅有appserver,還有其他的東西 換句話說,appserver只是中間件的一種

而關于中間件有諸多規范以及遵循這些規范的模型 最流行的規范無非兩種,一個是j2ee還有一個是.net 但是.net幾乎只有微軟在用,所以很多人把.net這個規范就當成是微軟的中間件產品 也不為過,畢竟沒幾個公司喜歡跟著微軟屁股后面跑的 給初學者之六:java企業級應用之綜合篇 我們知道中間件有很多種規范以及相關的模型 最流行的一個是j2ee還有一個是.net 那么各大公司關于這兩套規范各有什么產品以及周邊呢? j2ee: 黃金組合

操作系統:Solaris 應用服務器:Weblogic 數據庫:Oracle 開發工具:JBuilider/IntelliJ IDEA 優點:性能一級棒,大企業大公司做系統的首選,世界五百強幾乎都是這套組合 缺點:極貴 超級組合,也是最安全最酷的黃金組合,硬件采用SUN公司的機器 但是SUN的服務器很貴,同等價格不如去買IBM的機器

SUN的服務器支持Solaris的效果自然不用說,Solaris號稱是世界上最安全的操作系統 Oracle也是世界上最安全,性能最優的數據庫,Weblogic是當今性能最優的appserver JBuilder和IDEA各有所長,JBuilder是Borland公司的招牌之一

是當今世界上最流行的java IDE,用delphi寫的,但網絡上評價似乎不是很好 IDEA擁有插件功能,界面在所有java IDE中最為漂亮,東歐人開發的產品 東歐人嚴謹的作風在這個產品上體現得尤為突出,用java寫的

IDEA甚至號稱自己被業界公認為是最好的IDE//個人保留意見,沒有最好只有更好 但我用JBuilder的時候發現了不少bug,而至今還沒有在IDEA上發現什么bug 個人推薦IDEA 價格方面,Solaris開源,但是SUN的服務器比較貴,Weblogic最高是34萬 oracle標準版要18.6萬,企業版要49萬,JBuilder要2.7萬左右 IDEA零售價大概是500美金,也就是5000多元

另外,雖然理論上這些產品的綜合性能要高于其他選擇,但是必須看到

由于產商之間的利益沖突,比如oracle也有自己的appserver,但是性能不怎樣 使得這幾種產品之間協作的性能要比預想中的要差一點點--開源系列 操作系統:-應用服務器:JBoss 數據庫:MySql 開發工具:Netbeans 優點:便宜,性能未必最佳,但是對付中小企業足夠了 缺點:出了問題自己抗吧

嗯,這是java陣營最大的特色,免費免費,還有在開發工具這一欄Eclipse也是免費的 但后面要說,算了,換個有代表性的開源產品來

tomcat僅有web容器而沒有ejb容器,而jboss已經集成了tomcat 也就是說下載了jboss之后,啟動的同時也就啟動了tomcat jboss在tomcat基礎之上多加了一個ejb容器,使得jboss+tomcat成為和weblogic websphere之外又一個得到廣泛應用的appserver 現在大概是這樣,中小型企業多用jboss,如果應用小一點就用tomcat 只有給那些大型企業做的項目,才會花錢去上一個weblogic或者websphere mysql也是開源的數據庫,做得非常不錯,如果系統對數據庫要求不高 或者安全要求不是非常嚴格,mysql是一個非常不錯的選擇 開發工具方面,netbeans是sun公司極力推廣的一種IDE 聽說在北美市場使用量已經超過eclipse了

操作系統,軟件再不用錢,服務器也要錢,看這臺機器上跑什么操作系統就用什么了--IBM套餐 操作系統:Linux 應用服務器:Websphere 數據庫:DB2 開發工具:Eclipse/WebSphere Studio 優點:服務好,IBM可以提供全套服務,也可以替客戶承擔風險 缺點:把機器數據全部交給IBM,安全什么的都由不得你了 呵呵,IBM全套產品,甚至包括硬件設備IBM的服務器 由于是一個公司的產品,各產品之間的協作自然不錯

價格方面,Linux,DB2,Eclipse都是開源產品,Websphere目前零售價是33.8萬人民幣 IBM服務器不錯,可以考慮--.net: 微軟陣營

操作系統:Windows 應用服務器:.net應用服務器(好像叫IIS)數據庫:SqlServer 開發工具:MS Visual Studio 優點:客戶端的用戶體驗良好,和客戶端諸多微軟產品的兼容性強 缺點:離開了微軟,寸步難行,和其他任何一家公司的產品都不兼容 微軟的東西,怎么說呢,太專橫了 微軟所有的東西都是圍繞著windows來做的

.net其實已經可以實現跨平臺了,但是微軟出于自身商業考慮 在其應用服務器跨平臺的實現上設置了種種障礙 而且針對windows,微軟做了大量的優化,可以這么看.net就是與windows捆綁的一套產品

所以有些人說,微軟的產品離開了windows,就是渣

而且.net開源選擇也少,安全性方面考慮,windows本身就有一堆補丁要打了 sqlserver也不安全,至于.net到底安全不安全我不清楚,畢竟我沒怎么用過 但整體考慮,感覺.net不是大企業的首選,鑒于其濃厚的商業背景 也不是中小企業的首選,但是必須看到

客戶端也就是微機pc市場已經完全被windows所壟斷

所以在一些快速開發,還有和微軟產品兼容性要求較高的領域,.net還是比較有市場的 最后一個visual studio對它之前的版本兼容,且支持c,c++,c#,vb等語言 在其傳統領域,比如寫一些桌面軟件等客戶端應用上,.net還是第一選擇--最后要說明的是 這些組合不是固定不變的

由于J2EE得到了絕大多數IT企業的支持以及JAVA跨平臺的特性 我們可以自由地定制個性化的組合

比如我可以選擇windows+jboss+eclipse+oracle 也可以選擇solaris+websphere+IDEA+mysql 等等,這些自由組合都是可以的,但是有一點必須說明 微軟的東西,一般來說離開了windows就不能用

比如你選擇了.net應用服務器,那操作系統就必須是windows 你選擇了sqlserver,那就必須在windows上用

還有就是遵循j2ee規范的所有的組件都可以在不同的應用服務器上互相移植 比如你可以在測試的時候用jboss 而在正式投產上線的時候使用websphere,只需要在配置文件中作相應改動即可 給初學者之七:java企業級應用之術語篇

在了解完J2ee的相關周邊產品之后需要深入J2ee規范內部去了解一下到底這些規范 這里介紹幾個最常用的規范 再繼續說下去之前有必要說幾個常識

下面進入正題 再談容器

前面介紹過容器,我覺得有必要再補充一點

容器從某種意義上說其實就是一個可運行的java寫的應用程序 猶如c++/c編譯后生成的.exe文件

不同的是java編譯后的文件需要用命令行或者腳本啟動執行 由于容器是由java寫的,所以容器都能夠跨平臺

雖說如此,似乎大部分容器都針對不同的操作系統提供了不同的版本 但可以肯定的一點是,相同容器間的移植組件不需要重新編譯 Servlet web容器組件

Servlet確切地說,就是web容器運行的java組件

與普通javabean不同的是,Servlet定義了一系列方法//比如init()和destroy()供容器調用,調用的主要目的是為了管理

當一個request請求被web容器截獲之后,容器分析該請求地址 然后通過一個配置文件中的映射表//web.xml 調用相應的Servlet組件處理后將結果返還給客戶端 JSP//Java Server Page web容器組件

Servlet出現了之后,人們發現幾乎沒有辦法用一個非常直觀的方式去編寫頁面 畢竟頁面是html語言編寫的

而讓我們用一種流程式的處理方式去逐行教計算機如何寫html代碼太困難 在這種情況下JSP應運而生,JSP將java代碼嵌入html代碼內部

然后存成.jsp文件,再由計算機編譯生成Servlet儲存起來//注意這個過程

所以JSP和Servlet對于web容器來說其實是一種東西,雖然它們編寫遵循的標準有所不同 極大地簡化了代碼同時增加了代碼的可讀性,生產維護成本下降 值得一提的是,在制定JSP規范的過程中,借鑒了ASP的很多規范 寫過ASP并熟悉Java語言的人應該能很快掌握JSP EJB//Enterprise JavaBean ejb容器組件

隨著時間的推移,人們發現普通的JavaBean似乎并不能滿足企業級應用的需要 最典型的就是虛擬機提供的垃圾回收收集機制也就是GC不夠完善 可以優化的余地極大,在這種情況下,EJB應運而生 EJB和其它組件一樣,不過遵循了某些規范而已

但是這些規范更多的是為充分利用機器并提高性能為主要目的的 舉個簡單例子

比如某個web服務器有100個用戶同時連接上

由于網絡連接是瞬時連接,所以很多時候并發數并沒有100那么大 前一秒有可能有30個請求被發送過來并被處理 后一秒可以只有10個請求被發送過來并被處理

只有在非常非常極端的情況下才有可能發生100個請求同時被發送過來并被處理的情況 那么我們是否需要保留100個那么多個對象在服務器的內存里面去處理這些請求呢? 很顯然,不需要,大多數時候//甚至可以說是所有時候,我不相信有那么極端的情況 我們只需要保存其中的10-30%就夠了,那么什么時候需要20%,什么時候需要50% 甚至100%,這個過程就交給容器去管理,這就是ejb容器每天在干的事 管理內存中活躍的對象

恩,必須強調的一點是,由于使用的不成熟 我們經常把規范以及具體的應用兩個名詞混用

舉個簡單例子,我們說Servlet,極有可能說的是Servlet規范 也有可能說的是一個具體的Servlet,這個就要看情況而定了 EJB,JSP也是如此

JDBC 和數據庫的連接

這個嚴格說來是數據庫產商需要關心的事 關于AppServer如何與數據庫的連接

但是也需要開發人員做一點事,因為AppServer不知道什么時候組件需要用到數據庫 同時也需要開發人員告訴AppServer他們使用的是什么數據庫,ip地址等等 JDBC就是關于這一套東東的規范 包括數據庫的產商應提供什么樣的接口 AppServer應用服務器應該如何去連接 開發人員應該如何去配置這些連接等等

還有一些數據源,連接池等概念參考相關數據在此就不再贅述 其它的規范比如JMX等確切地說與開發人員關聯并不大了 這類高級應用只對AppServer應用服務器產商重要 也不再羅嗦了---------記得聽說過這樣一種說法

大一時候不知道自己不知道 大二時候知道自己不知道 大三時候不知道自己知道 大四時候知道自己知道 為什么呢,因為大

一時候剛進大學,什么都不懂,很正常,大家都一樣 大二或者大三時候開始接觸知識,雖然還是不懂,但慢慢地開始學習,開始積累 過了一段時間,知道自己知道了//也就是前一種說法的大四,后一種說法的大三 開始屁癲,開始拽得不得了,覺得自己懷才不遇,千里馬難尋伯樂的那種感覺 有些人是大四畢業了以后開始拽,悟性高一點的,大三就開始拽,因人而異 這幾乎是每一個初學者經過一段時間學習后的必然階段 不管如何,總之開始入門了,這也不是壞事

但最后每個人都會知道自己不知道的,也就是后一種說法的大四階段 //前一種說法里面的那些家伙估計要到工作以后才能明白 因為任何一門學科都博大精深,要是能在兩三年之內就統統搞懂 那不是在吹牛就是坐井觀天,java如此,c如此,c++也是如此 那么到了本系列的第七集,可愛的讀者應該處在什么階段呢? 恭喜,在看完這篇文章之后,你就基本處于知道自己不知道的那種階段 離拽起來還有那么一段距離,因為你們畢竟還沒有學習和積累一定的基礎知識 但是騙騙外行,蒙蒙國企那些吃閑飯的管理人員問題不大

給初學者之八:java高級應用之框架篇 沒錯,我沒敲錯

之所以不再聲稱是企業級應用而稱之為高級應用 是因為下面要講的東西屬于純民間性質 是java具體應用的上層建筑,可用可不用,沒有人強迫你用 首先給框架//framework 下一個定義

我想讀者你可能聽說過.net framework這個概念

沒錯,我們將要說的framework也和這個framework差不多 所不同的是.net framework的競爭對象是j2ee那一系列標準 而我們將要說到的幾個框架則應用在j2ee的不同層面 單就單個框架而言,沒有.net framework管得那么多

但是卻要比它精專多了,而且總量加起來,也遠比微軟那一套框架要廣泛得多 回到正題,框架是什么?

軟件工程之所以被叫做軟件工程就是因為有那么一批人覺得可以用工程學里面 那些管理Project的方法來管理軟件從開發到維護這一系列流程 那么在建筑工程里面框架是什么?

現在建筑多采用鋼筋混凝土結構,注意里面一個很重要的詞匯:鋼筋 托福閱讀中曾有一題聽力就是關于鋼筋結構的誕生,在美國 恩,現代建筑中多在建筑起來之前,先用鋼筋搭建出一個框架出來 然后往鋼筋中間填入混凝土,從而形成一個完成的建筑 而今天要說到的框架就是這么一個東西在每一個軟件中間的實現

框架就是那么一個通過預先寫好代碼從而幫我們建立起一個軟件結構的這么一個東西 這里提一下框架與規范//主要指J2ee規范也就是官方標準的區別 從某種意義上說,J2ee規范本身就是一個框架 無論是web容器也好,還是ejb容器也好,它們都開發了一部分通用的代碼 并且幫助我們搭建起來了一個軟件結構,我們要做的就是往里面填入組件 比如ejb/servlet/jsp等等

沒錯,要這么理解也沒錯,但是為了避免混亂,我們還是嚴格區分開來 本文中將要提到的框架如無特別說明,就是指的是非官方標準的框架 規范是規范,而框架是建立在規范之上的一種東西

可以說是標準的延續,或者說是民間的嘗試,總之是這么一個非官方的東西 說到這里順便提一下JCP組織也就是Java Community Process/Java社區 當初Sun公司在java發布之初,為了提倡開源和共項

同時也出于一個提出合理的標準的目的,而讓廣大的開發者參與標準的制定 而成立了這樣一個社區,現在還健在,網址是jcp.org 每一個新的規范發布之前都會在這個社區廣泛討論,最終對規范的制定產生巨大的影響 其中就包括企業級的參與者,相當有名的JBoss以及我國的金碟公司都是其中的成員 下面介紹一下幾個相當著名的框架,必須要指出的是,雖然框架大多開源 但并不代表所有的框架都開源,比如.net framework,但是java框架大多數開源 言歸正傳

Struts 表示層框架,名字來源于飛機的金屬框架 可能有讀者會提問了 表示層不是客戶端么?

沒錯,但是語言這東西,眾口爍金,別人都這么說你就不好不這么說了 最早表示層說的是客戶端,后來隨著時間的發展 人們也把服務器端直接與客戶端//比如IE 打交道的那部分也稱為表示層//JSP+Servlet 那么表示層框架是干什么的呢?

早先大規模應用JSP的時候,人們發現,JSP里面充斥著邏輯代碼與數據 可讀性極差,于是人們借用很早很早以前的MVC模式的思想 把表示層組件分為V-Viewer,也就是JSP M-Model模型,一般來說是一個JavaBean C-Controller控制器,一般來說是一個Servlet 所有人通過JSP和服務器打交道,發送請求,Viewer把這個請求轉發給Controller Controller通過調用一個Model來處理該請求,然后返回數據到Viewer 這么一個過程,從而達到數據與邏輯的剝離,增強代碼可讀性,降低維護成本 而幫助人們實現這一系列東西的就是Struts框架,就是這么一個東西 Struts的競爭對手主要是產商們極力倡導的JSF也就是Java Server Faces 但是由于Struts出道時間早,所以應用比較多 JSF則是產商們大力支持,前景看好

對于這一層來說,在JSP的html代碼中出現的java語句越少越好 因為java代碼越少說明頁面處理的業務邏輯越少,也越合理 這也是Struts最初的目的,記住這話

Spring 大名鼎鼎的Spring框架

有人曾說2005年一片叫春之聲,指的就是該框架

Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一書 Rod Johnson認為,J2ee里面的那一套//尤其是ejb 太重了,對于單機的系統來說,沒有必要使用那么復雜的東西 于是就開始設計并引導Spring小組開發出這樣一個構架

不能不說他是個天才,因為的的確確不是所有的系統都是跨多服務器的 沒有必要把一個簡單的系統設計得那么復雜//天才的那幾個共性又體現出來了 Spring從誕生之日起就是針對EJB的,力爭在不少應用上取代EJB 而它也確實達到了這個目的

現在包括WebLogic等主流應用服務器還有主流IDE都開始逐漸接受該框架 并提供相應支持

提到Spring就不能不說控制反轉Ioc//Inversion of Control 和依賴注射DI//Dependency Injection 什么叫控制反轉呢?

套用好萊塢的一句名言就是:你呆著別動,到時我會找你。

Hibernate 名字取材自ORM最早的一句玩笑話//ORM就是OR-Mapping 說用了ORM之后,程序員就可以去冬眠了,而不需要操心那么多事

這里不得不說的是,該框架由于做得太好,以至于被J2ee招安,成為EJB3.0的一部分 替代原有EJB2.X里面關于Entity Bean而成為EJB ORM的工具 這里解釋一下ORM//OR-Mapping 中文名對象關系映射

什么意思呢?我們知道傳統的數據庫都是關系型的

一條條記錄以表格的形式儲存,而表與表之間充斥著是關系/關聯

比如說一個人,名字zhaoce,性別男,年齡23那么數據庫中是這么儲存的 姓名 性別 年齡 zhaoce m 23 某女 f 22 而實際應用服務器中的實體都是以對象的形式存在,一個個對象 zhaoce是以這種形式存在的 Human human=new Human();human.setName(“zhaoce”)human.setSex(“m”);human.setAge(23);這樣的,那么我們知道,傳統的JDBC是通過一個二維字符串將數據取出 需要我們自己將其包裝成對象,在存入的時候,我們還需要將對象拆開 放入sql語句中//Insert into Huamn values('zhaoce','m',23)然后執行該sql語句

太麻煩太麻煩,ORM理念的提出改變了這一切,ORM認為,這些東西應該由框架來做 而不是程序員,程序員做他該做的,不要為這種破事分心,還測試半天 于是就出現了Hibernate,JDO,TopLink等等,甚至.net里面也有ADO.net 過去一段時間是Hibernate和JDO爭風,現在看來Hibernate逐漸成為主流并被官方接納 成為規范標準之一,替代掉原來EJB2.X的ORM EntityBean TopLink則是Oracle公司推出和Oracle數據庫結合的一種ORM 商業用軟件,貴且復雜,不過正在逐漸開放

而象表示層一樣,這一種專門面對數據層的代碼也被稱為數據持久層 所以數據持久層這一概念有時不僅僅指代數據庫

關于ORM,最高的境界應該是在java代碼中不出現任何一句的sql語句 注意,是不包括sql語句,Hibernate的hql以及ejb的ejb-ql不算在內

至于出現不出現hql/ejb-ql等替代ql,這要視具體情況而定,不過最好也是不出現 當然最后所說的過分理想的情況往往不現實,總之一句話

以sql為代表的ql/*還有hql,ejbql等*/語句在代碼中出現得越少越好 記住這話,現在未必能夠理解,學了以后就懂了

這三個是目前最為常用的框架 而目前光已公布的框架就>500 還在不停增加中,不可能一一列舉,有興趣的可以去看相應文檔 要指出的是框架不是應用程序

只是一堆組件的有序復合,應用時不能脫離于應用服務器單獨存在給初學者之九:收尾 最后一篇介紹幾個常見的概念 設計模式

這可不僅是java獨有

我看的書就是c++和smalltalk例子的 先說說什么是設計模式

模式是什么?模式是經驗的總結,潛規則的抽象

什么意思呢?比如說我們坐飛機,上飛機前需要經過幾個步驟 什么安檢領取登機牌之類的,這一套流程能不能改呢?

可以,但為什么幾乎全世界的航空公司登機前都是這一套流程呢? 因為航空公司經過長期實踐之后得出了一堆結論和經驗 并認為這樣做才是最安全,或說是最有效率的 這就是模式,模式是編程高手之間交流的橋梁 兩個編程高手通過統一命名的模式了解對方的思想

當然不借助模式可不可以?當然可以,只是模式無處不在,你不知道而已

又比如吃飯,每吃一口飯,我們要先端碗,拿筷子,張嘴,塞飯入口,咀嚼最后吞咽 這就是一套模式,我們給這套模式命名為吃飯 那么當老爸叫吃飯的時候,我們就能明白什么意思

而不用老爸進來囈囈啊啊并比畫上半天,啞語也不是這么用的 這就是模式,已知的模式有400多種//好象更多,不記得了 比如數據庫有數據庫的設計模式,編程有編程的模式等等

面向對象有常用的21種模式,需要掌握,主要分為創建,行為,結構三類 J2ee有J2ee的模式,Sun公司出了一本書叫《J2EE核心模式》可以拿來看看 必需要指明的是,模式不是規范,比如吃飯模式

沒有人規定你吃飯非得要那么吃,你可以端碗,上拋,張嘴在下落后連碗一起吞咽 這也可以,只要你愿意,同樣,只要你愿意,你就可以不遵循模式

模式之外還有反模式,學模式不可定勢,不要學死,活學活用,無招勝有招才是最高境界 JavaDoc 文檔工具,極其好用

可以根據注釋自動生成HTML文檔 Ant 98年,有一位程序員在從歐洲飛回美國的飛機上想到了這么一個東西 從而改變了整個世界,他的名字叫James Duncan Davidson 組織管理工具,可以這么描述它

比如你想在編譯之后自動再次生成JavaDoc 那么你只需要編輯Ant腳本//對,就像Windows腳本那樣 然后批處理就可以了,不過現在Ant已經廣泛集成到IDE中去 不需要自己手動編寫,不過如果想要炫炫,據說此招百試不爽 JUnit 測試工具,Unit家族可不只有JUnit 還有其它版本的,這個不細說,具體實踐一下就明白了 POJO //Plain Old Java Object 就是傳統的Java對象,也就是一個JavaBean 由虛擬機來掌握其生死

常用的兩個管理構架/規范是Spring和EJB容器 命名由來是某人//名字我忘了

覺得我們使用了太多的規范,以至于我們都忘記了純粹的java對象 以至于我們都忽略了它的存在,所以叫了這么一個名字 以喚醒人們的記憶,這個意義上來說EJB其實不能算是POJO 畢竟遵循了一堆的接口,但是不管怎樣,接口歸接口,還是沒有繼承類 沒有被強加什么//遵循可以寫空方法假遵循 所以說還是POJO也對 但是由于這種東西缺乏管理,不象Servlet有專門的容器管理并繼承了一定的類 而沒有管理的對象在虛擬機中是很危險的,因為垃圾回收機制各個虛擬機不同 而且也不怎樣,極有可能長時間不回收,這樣在企業級的應用中呢 就有可能造成內存大量被占用從而死機,毫無疑問,這種機制需要優化 這種優化就是通過EJB容器或者Spring構架來實現 這么做還有一個好處就是迫使程序員對每一個類做封裝

強迫他做管理,以達到防止內存泄露的目的,內存泄露最經常出現的錯誤就是 引用未釋放,引用最典型體現在new這個關鍵字上,new得越多引用得越多 隨著時間地增長,有可能導致循環,不停new new new new new.....其中哪怕只要有一個new處理不當,虛擬機無法回收內存 那就極有可能完蛋,而且這種小bug越是在大的項目越是難以找到 有可能因為一個人而影響整個項目組,所以不妨記住我的一條經驗 好的系統框架不應該在業務邏輯流程中出現new關鍵字 現在不理解也無所謂,將來有一天會明白的 SOA 面向服務的構架

不說太多,這個屬于上上層建筑

不過不妨記住我的一句話,可以幫助理解這個概念 面向什么就是對什么做封裝 面向對象就是對對象做封裝 面向服務類似,剩下的靠悟性 反射

1.4新增功能,非常強大

通過反射,程序可以解析出類本身的屬性也就是變量

/注意這里說的屬性不是.net里面的屬性,我不喜歡微軟造的新名詞,亂 還有行為也就是方法,然后通過invoke()方法調用該方法 甚至可以新增對象等,java首創,本是其它語言所沒有的

后來被微軟抄了去,利用該功能,開源框架廣泛受益并大量采用,近乎瘋狂地使用 具體就不說了,最后要指出的是,有一種說法是利用反射會降低效率 在早期的時候,的確是,現在不會了,放心使用 容器

5.0以后的版本在J2SE中都出現了容器 各位甚至可以自己嘗試用標準庫去使用容器 書籍

《Thinking in Java》 //實話說,一般,尤其是翻譯后的版本,原版還行 《Java教程》 //電子工業出版社出版的那本,上下冊,很厚,但翻譯得不錯 《21天學通Java》 //入門極好,但是《21天學通j2ee》極爛,不要買 《Mastering EJB》 //翻譯過的書質量我不清楚,估計不怎樣,請看原版書籍 《精通Hibernate》 //看清楚作者,孫衛琴,其它人的別買

其它的可以不用了,網絡上的遠比書上來得多,來得好,雖然也來得雜 最后的建議 一,不要做一個浮躁的人 二,學好英語,很重要 三,閱讀源代碼和文檔

四,共享源代碼,不要做一個功利的人 五,熱愛Java 相信能看到這里的朋友都是真心想學習java,在編程的路上你已經成功的走出了第一步,接下來就是努力的走下去。。加Java學習群四一八,三五五,五三一。

第三篇:java學習心得

Java學習心得

專業:信息與計算科學班級:

姓名:學號:

日期:

河北建筑工程學院數理系

java語言產生于C++語言之后,是完全的面向對象的編程語言,充分吸取了C++語言的優點,采用了程序員所熟悉的C和C++語言的許多語法,同時又去掉了C語言中指針、內存申請和釋放等影響程序健壯性的部分,可以說java語言是站在C++語言這個“巨人的肩膀上”前進的。

java采用的是相對簡單的面向對象技術,去掉了運算符重載、多繼承的復雜概念,而采用了單一繼承、類強制轉換、多線程、引用(非指針)等方式。

在java程序中不能采用地址計算的方法通過指針訪問內存單元,大大減少了錯誤發生的可能性;而且java的數組并非用指針實現,這樣就可以在檢查中避免數組越界的發生。

Java語言學習要點

一、掌握靜態方法和屬性

靜態方法和屬性用于描述某一類對象群體的特征,而不是單個對象的特征。Java中大量應用了靜態方法和屬性,這是一個通常的技巧。但是這種技巧在很多語言中不被頻繁地使用。理解靜態方法和屬性對于理解類與對象的關系是十分有幫助的,在大量的Java規范中,靜態方法和屬性被頻繁使用。因此學習者應該理解靜態方法和屬性。Java在方法和屬性的調用上是一致的,區別只表現在聲明的時候,這和c++是不同的。

二、重視接口

在面向對象早期的應用中大量使用了類繼承。隨著軟件工程理論的不斷發展,人們開始意識到了繼承的眾多缺點,開始努力用聚合代替繼承。軟件工程解決擴展性的重要原則就是抽象描述,直接使用的工具就是接口。接口近年來逐漸成為Java編程方法的核心。另一方面,就應用而言,大部分開發是建立在規范基礎之上的,不需要自己建立復雜的繼承關系和龐大的類。因此讀懂規范和用好規范已經成為應用程序開發人員的首要任務,Java各項規范的主要描述手段就是接口。

三、學好集合框架

Java描述復雜數據結構的主要方式是集合框架。Java沒有指針,而是通過強大的集合框架描述數組、對象數組等復雜的數據結構。學好這些數據結構的描述方法對于應用程序編寫,特別是涉及到服務器方、3層結構編程至關重要。程序員在這個時候不能再用諸如數據庫結果集之類的結構描述數據了。

四、例外捕捉

Java對例外捕捉的強調是空前的,它強迫程序員用顯著的與邏輯方法完全不同的方式描述例外捕捉,對于程序描述的完整性和嚴謹性有很大的意義。

總之學編程語言不僅僅是從理論上的學習,更重要的是要利用這門語言為你的思想服務。理解這門語言是首要的,但是要達到心領神會、融會貫通就必須勤動手,多去時間,多編一些例子。計算機科學是注重實踐的學科,成功的軟件開發人員無不經過大量的上機鍛煉,只有理論和實踐相結合才能真正掌握只是和技能。

第四篇:Java學習心得

Java學習心得

一、如何學好java??

1.就本人認為學好java關鍵就在于態度。態度是學習好java的前

提,積極的態度注定你就比別人學得認真,自然最終學的一定

比不認真的人學的好!

2.有良好的前提,不努力也不行的,所以呀!還得練習。要做到

常練習,多看,多思考(舉一反三,多方位的,全面的使你的程序更加的完美);

3.最后一點,就是多多交流!閉門造車永遠是落后的學習方式,所以好要和身邊的一切可以交流技術的人積極交流,畢竟個人的力量有限的!

二、Java中那些重要知識點!(本人認為最主要的是思想,知識點也很重要,關鍵是在學習中總結出自己的一套思想,好的槍手都是子彈喂出來的,好的程序員都是寫代

碼寫出來的)

1. Java數據類型

a)基本數據類型:byte、short、int、long、float、double、char、boolean(注意各自的取值范圍,還有轉換方式)

b)引用數據類型: 數組、類、接口。

2. 運算符號

a)算術運算符:+、-、*、/、%、++、--;

b)賦值運算符:=、+=、-=、*=、/=、%=;

c)比較運算符:<、>、=<、=>、!=;(返回值都是false/true)d)邏輯運算符:&&、||、!

e)位運算符:用于操作二進制位的運算符:<<、>>、>>>……

4.基本數據結構:

a)順序結構

b)選擇結構(if……else……,switch……case……

default……);

c)循環結構(for()、do……while、while)(分清break與

continue的用法)

5.數組(用于存儲同一類型數據的一個容器)

a)表現形式:

i.ii.元素類型[] 變量名 = new 元素類型[元素的個數]; 元素類型[] 變量名 = {元素1,元素2...};(new 元素類

型[]{元素1,元素2...};)

b)數組排序方法:插入排序,二分法排序,希爾排序,還有

最主要的——冒泡排序

6.內存(1:寄存器2:本地方法區3:方法區4:棧5:堆)

a)棧(存儲的都是局部變量)只要數據運算完成所在的區域

結束,該數據就會被釋放。

b)堆(用于存儲數組和對象,也就是實體——用于封裝多個

數據的)

i.每一個實體都有內存首地址值。

ii.堆內存中的變量都有默認初始化值。因為數據類型不

同,值也不一樣。

iii.垃圾回收機制

7.面向對象

a)特點:

i.ii.iii.將復雜的事情簡單化。面向對象將以前的過程中的執行者,變成了指揮者。面向對象這種思想是符合現在人們思考習慣的一種思

想。

b)對事物進行屬性和行為的分析

i.ii.屬性:特點 行為:函數(方法)

8.訪問權限

a)Private(私有的訪問權限最低,只有在本類中的訪問有效)

(Set方法設置,get方法提取)

b)Protected(安全的)受保護權限,體現在繼承,即子類可

以訪問父類受保護成員,同時相同包內的其他類也可以訪問protected成員。

c)無修飾詞(默認),表示包訪問權限(friendly,java語言

中是沒有friendly這個修飾符的,這樣稱呼應該是來源于

c++),同一個包內可以訪問,訪問權限是包級訪問權限

d)public修飾詞,表示成員是公開的,所有其他類都可以訪

9.方法重載與方法重寫

a)方法重載(一個類中可以有多個具有相同名字的方法,但

這些方法的參數不同(類型、個數、順序不同))

b)方法重寫(子類定義一個方法,并且這個方法的名字、返

回類型、參數的個數、參數類型與父類繼承的方法完全相同)

10.java面向對象三大特性(繼承,封裝,多態)

a)封裝(private):主要是Set方法與get方法合作應用

b)繼承(extends):注意訪問權限,看看是否能繼承!

c)多態:父類引用或者接口的引用指向了自己的子類對象,eg(動物——1.食草動物2.食肉動物——老虎,獅子,狗);

11.抽象類與接口

a)抽象類(abstract)特點:1.不能new2.可以由抽象方法(但

是非抽象類不能有抽象方法)

b)接口(interface聲明)

i.接口使用(implements):一個類可以實現一個或多個

接口,用逗號隔開。

ii.接口強調的是功能:has——a的問題!

12.多線程(Thread類與Runable接口)

a)主要方法:

i.start()啟動線程

ii.iii.iv.run()程序運行的方法,功能實現區域 sleep()休眠,使程序處于休眠狀態 interrupt()吵醒:吵醒處于休眠狀態的程序,使進入正

常狀態;

b)線程同步(synchronized鎖)關鍵在于this與object的區別,各自使用的范圍與壞境。

13.流(input/output)

a)分類:主要是字節流與字符流,還有緩沖流,數據流,對

象流……

b)方法都差不多:主要是writer()與read()還有各自對應的數

組應用!

c)出現亂碼時注意你用的流是否合適以及你使用的編碼格式

以否可以支持

14.套接字(Socket)

a)主要功能就是通信(安全的)(利用port進行連接)

b)利用流連接進行通信,數據傳送

15.……還有好多,自己慢慢研究吧!java博大精深!

三、我們在學習中的那些難題?

1.總是遇到難以理解的東西?

2.總是以為自己回了,但是又寫不出來?

3.總是覺得問題很難,但是經過別人的指點就會覺得好簡

單?

第五篇:java學習心得(模版)

湖南軟件職業學院

HNSERJ20080101

.湖南軟件職業學院

畢 業 論 文

知識改變命運

課 題:java學習心得 院 系:軟件工程系 專 業:軟件技術 班 級:軟件0615班 姓 名:周專書 指導老師:鄭利嬌 完成時間:2009-5-12

www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

Java實習報告

一.引言

面臨畢業與就業的壓力,不久將來就要從一個學生到一個社會人的轉變:技術在不斷的提高,思路在不斷的開闊,思想在不斷的升華,更重要的是自己的理想和抱負更加的堅定。對于一個投身于IT的新人,經驗談不上,一些學習的心得倒是可以拿出來探討一下,我們該如何面臨這個似曾相識的社會,突然一天如此接近。面對“金融風暴”帶來的就業壓力,我們正在逐漸走向成熟,我們意志更加堅強,我們深知不經一番寒徹骨,哪來梅花撲鼻香。深深地體會到找一份好工作多么不容易的,尤其是能力匱乏的我們。一切都要付出行動,不能空想,要實現目標,就得不懈的努力。

的確,軟件仍然是一個朝陽行業,對于人才的需求量也很大,這也是為什么很多人努力走上這座獨木橋的原因。但是當你面臨人生的一個選擇時,當你決定要踏上軟件開發之路時,你應該問一下自己:我為什么要選擇它?其實很多人在這條道路上摸爬滾打了多年也沒弄清楚這個問題的答案。如果你想在這條道路上有所成就的 話,一是興趣使然,二是做好自己的職業規劃。軟件開發其實是一條非常艱苦的路,不停的學習,不斷的熬夜,沒有鮮花更沒有掌聲,陪伴你的是那漫長而孤獨的夜。想一想我們準備好迎接這一切了嗎?如果沒有興趣我勸你還是放棄這條路,沒有興趣你就在這條路上走不長,等待你的只有轉行。如果你真的把它作為你職業生涯的跳板,那么請你做好自己的人生規劃,有步驟的實現它。話題稍微遠了一點,現在我就談談自己在Java學習方面的心得和教訓。

古人云:活到老,學到老。讀書學習實乃艱苦之事,花費時間,消耗精力。然苦之外亦見其樂:得到了知識,提高了認識,完善了自己。學習,求其真,務其實,應“敏而好學,不恥下問”,才能不斷促使進步。學習,不僅求知,也要懂法,學會方法比掌握知識更加重要。笛卡爾說過,“沒有正確的方法,即使有知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

眼睛的博學者也會像瞎子一樣盲目摸索”,可見學習方法的重要性。

其實,大學之前幾乎沒有軟件技術之類的概念,大三之前仍然對于程序懵懂不開。但是這并不能妨礙我熱愛這個行業,也不能就斷定我在這個行業里一事無成。剛學 Java,我的確感覺不開竅,特別對OO(面向對象)編程仍然不能理解。但是人如果一思考,其實什么問題都解決了。對于學習java基礎的經驗就是多做、多思考,基礎知識的學習不能不求甚解,要追本溯源,弄清問題的本質。這樣才能舉一反三,由點及面。對于抽象的東西要能具體化,對于具體的東西要能抽象化。我學習java基礎一直使用的是《編程思想》第四版這本書,感覺挺不錯的,全面透徹通俗易懂,在國外也是廣受好評,我很惋惜沒有早點知道這本書,否則也不回浪費大學三年青春歲月,一無是處的打發光陰,值得慶幸的事這本書一定程度上激發了我對java學習的興趣與潛力。英語能力強的話,可以直接看英文原版。我一直強調重視基礎,如果你的java基礎打的牢,你在學習那些java框架就是非常輕松的事了。

二.Java學習心得之我見

學習java,的確要學習的東西很多,就像這為朋友上面提到的那些。Java不像.net一家獨大,記得在大學里教我們.net老師早就提醒過我們學java才是出路,學好java才是王道,我當時就納悶,這不是搬石頭砸自己的腳,往自己身上潑冷水嗎?現在恍然大悟,他當時只是為我們指引一條明路,Java的繁盛在于開源社區的龐大,這也帶來了分支太多的問題,怎樣選擇一條好的學習路線,對于初學者來說,的確是一件很迷茫的事。其實不管java東西再多,總有規律可循。根據自己的發展方向的不同,可以選擇不同的學習路線。對于怎樣成為一名出色的Java Web程序員,我的建議是:

1、JSP的知識不能欠缺,理解什么是servlet,什么是java bean,熟悉jsp常使用的標簽。我自己感覺,對于JSP的學習不需要太認真,畢竟現在真正使用純JSP的情況已經不多了,能掌握基本的知識就綽綽有余。

2、學習一個或一個以上的web表現框架。如果從使用的程度上來講,Struts依然是最流行的框架,社會需求也很大,所以學習Struts是一個不錯的選擇,最近一個月我們剛剛模擬Struts開發了一個簡單的網上商城,雖然算不上一大正規知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101 的項目,總算也用到了框架,因為框架本身也是一種封裝,程序開發是將簡單事情復雜化,模擬Struts使我們學習三大框架和其他框架奠定良好的基礎,使用框架的前提是你對他處理的業務邏輯也相當熟練了。當然也可以學習其他的框架,JSF作為一個標準,雖然現在使用的人不多,但是為了明天的主流,學習JSF也非常不錯。我就是開始學習Struts,后來公司用JSF,自己又自學了JSF,其實領悟了程序設計的思想,學什么都很容易。

3、簡單說說Spring,EJB。鑒于培訓中心的課程安排,我們需要學習spring,spring作為業務邏輯層的輕量級架構框架spring,依然占據著主流的位置,雖然EJB3的發布對它沖擊很大,但是在比較長的時 間里,它的位置還不能撼動。學習spring會很快帶來實際效益。當然EJB3的發布開始漸漸挽回以前丟棄的市場,作為官方的標準,它的未來充滿光明,學習EJB3會非常的有前途。自己最近也在學習EJB3其實對于剛剛畢業的學生沒必要深入研究他們,很多公司也不使用這樣業務邏輯層的框架,尤其是中小型企業。

4、至于xml,css這樣的頁面表現的東西,如果你不從事美工方面,我認為沒有必要花過多的時間去學習,在平時的項目開發中慢慢的就會使用了。

還是那句話,基礎很重要,永遠不要忽視這一點。剛剛畢業,公司不會要求員工什么都會,只要技術扎實,學習的能力強,學習的速度就很快,企業有時候非常看重 這一點。其次掌握struts、hibernate這兩個框架,達到可以熟練使用的目的,這會增加你就業的砝碼。至于spring,EJB可以在以后的工作中學習使用,現在了解一下就可以了。當然作為一個java web程序員,還要了解數據庫、tomcat,jboss服務器、常用的開發工具Eclipse,NetsBean等。

三,Java學習態度之我見 1.學java切忌浮躁

欲速則不達,初學者請不要被新技術迷惑,先把基礎學扎實,一步一個腳印的逐步學習,不要想著一步登天。我們要如水底磐石切不可做那水上浮萍,浮躁的人永遠學不到什么東西。軟件開發之路是充滿荊棘與挑戰之路,也是充滿希望知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

之路,沒有捷徑可走。夢想像《天龍八部》中虛竹一樣被無崖子醍醐灌頂而輕松獲得一甲子功力,是很不現實的。每天仰天大叫“天神啊,請賜給我一本葵花寶典吧”,殊不知即使你獲得了葵花寶典,除了受自宮其身之苦外,你也不一定成得了“東方不敗”,倒是成“西方失敗”的幾率高一點。“不走彎路,就是捷徑”,佛經說的不無道理。

2.要有自我約束力

春來不是讀書天,夏日炎炎正好眠,秋來蚊蟲冬又冷,背起書包待明年。總有一些理由不學習。這樣下去,我們的java之樹永遠長不大。古人云:“人靜而后安,安而能后定,定而能后慧,慧而能后悟,悟而能后得。”很有道理。在四川大足佛教石刻藝術中,有一組大型佛雕《牧牛圖》,描繪了一個牧童和牛由斗爭、對抗到逐漸融合、協調,最后合而為一的故事。佛祖說:“人的心魔難伏,就像牛一樣,私心雜念太多太多;修行者就要像牧童,修煉他們,馴服他們,以完美自己的人生。”我們學java也一樣,要能夠馴服那些影響我們學習的大牛、小牛,抵制各種誘惑,集中精力,專心學習。

3.課前稍作預習

我個人的經驗和理解,課前的預習對于我們學習java尤為重要。我們課前的預習相當于第一遍的學習,而這是為第二天的學習做了一個初步的了解,而且這樣學習更有效,更容易吸收課堂所學,這樣既培養了我們的自學能力,也讓我們發現了這個章節的難點和不懂點,上課時。在這里培訓每天的理論知識量并不少,要是不預習我們會跟不上老師的教學節奏,不知其所云!

4.“三敲代碼”學習法

這個詞最初來自我們項目團隊一個同學滑稽的演講,班上流傳的“笑柄”,但他是正確的,這是程序員都值得推薦學習的方法,為什么說是“三敲代碼”呢?敲代碼也并不是一味的盲敲代碼。課前預習就是將課本上的實例代碼敲一遍,先知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

不管是否理解這些代碼的意思,有時候結果是很重要的,能讓你豁然開朗。第二遍敲代碼是課后的敲代碼,老師布置的或書上的作業,雖然課后我們還是沒能吸收消化當天知識,我們可以借鑒別人的代碼,但一定得有自己的思路,否則只會事倍功半,適得其反。第三遍就是敲真正屬于自己的代碼。這是完全依靠自己所學,自主的思維,來鞏固自己當日所學進行查漏補缺,那么才能保證學習效果。

5.理解+總結=記憶

認真理解和善于總結是學好java的訣竅之一。學習,就必須講求記憶,記憶知識,就必須講求方法。得道者事半功倍,失道者事倍功半。Java有很多知識點是需要記憶的,有的人常常感嘆自己的記憶力不好,羨慕那些博聞強記的人。殊不知那些人無不是善于總結和整理自己的感官印象,才記得牢固而準確,這便是理解。列夫?托爾斯泰說:“知識,只有當它靠積極的思維得來而不是憑記憶得來的時候,才是真正的知識。”孔子云:“學而不思則罔,思而不學則殆。”這些都充分證明了這一點。知識不能只停留在書本上,必須轉化為自己機能的一部分,達到“唯吾是從”。理解,必許透過現象認本質,由此及彼、由表及里,去粗取精、去偽存真。善于開動腦筋是其中的關鍵。

6.要善于積累

積累非常重要。莊子云:“水之積也不厚,則其負大舟也無力。風之積也不厚,則其負大翼也無力。”我們課堂上老師都會講很多的實例,這些實例都是每個知識點的真實體現,我們都要即時的消化和理解。這樣日積月累,學習效率不斷提高,技術也逐步上升。有的同學認為,課堂上聽不懂關系不大,課后自己看書也能認識,或者把一些問題全部留在自習課上向老師請教,??這些想法都是錯誤的,這樣想勢必上課不求甚解,積極思考不足,既浪費了課堂時間和老師的課下時間,也變相加重自己課下的學業負擔。正確的態度是:上課專心聽講,積極思考,力求當堂消化。針對課堂思路卡殼問題,我個人理解是:千萬不要在課堂上尋找卡殼的原因,要求自己跳過去,聽下面的內容,課下再請教老師,共同分析導致自己卡殼的原因,不失為一種較好的辦法。

知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

在java培訓中心也不定期開展職業素養的課程,盡管我覺得老師并不是那么專業,我們也抱著無所謂的態度,但是我們依然意識這就是問題的根源,通過開展職業素養,讓我更深層次的認識企業文化的重要性,這也是培訓中心特別的地方。人無志,不成事。提高自己的職業素養,對自身的發展會有很大的幫助。

四.職業素養的培訓

1,保持積極向上樂觀的心態。

積極很重要的一方面就是樂觀自信。而要達到自己對自己充分的肯定,概括來說可以從四個方面來講:第一,學會從另外一方面來看待事情,心態決定一切。第二,萬事在失敗前拒絕說“不行”。第三,不段給自己“充電”。“有才不怕萬事難”我們要時常提高自己的內涵和修養。第四,借鑒別人的事跡,失敗也是一種收獲。有了職業,我們還必須得有積極和強烈的進取心,這樣才能做出自己的成績。如果沒有進取心,固步自封,工作上不想精益求精,事業就沒有發展的希望。我們在開始工作時,應把積累工作經驗、提高工作能力作為目標,這是今后擴大自己事業空間的基礎。不要計較薪金薄厚,更不能自命不凡,不屑小就。而要愛自己的職業,深思研究工作改進之術,常保進取的決心。古人說:“少壯不努力,老大徒傷悲。”進取心不但是成業的要素,并且是成己的要素。

2,注重項目團隊合作。

保證一個團體生機和活力,必須使得每一個成員能夠相互支持和包容,成員間充分尊重對方意見,現在終于感受到了團隊合作重要性,項目小組花了一個星期做系統,除了個人知識的融會貫通,更重要的是成員的溝通與協調。有人說,一個融洽的工作環境就是成功的一半。尤其是從事軟件開發,團隊就是發展的根源,更是一個好的系統的前提保證,一個人的思想是有限的,多遠思維交織在一起,產生的力量是不可估量的。

知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

3,腳踏實地的做事。

樹立“職業神圣”觀念。一個人對自己職業不敬,便是對這一職業的褻瀆,其結果是會把事情做壞,給社會和個人帶來雙重損失。莊子說:“用志不分,乃凝于神。”通俗地說,敬業就是把自己從事的職業加以研究,勤勉從事的意思。做事為學,有慎心,不怕勞,不虎頭蛇尾,不見異思遷。面對企業和人才之間的雙向選擇,一個敬業的員工無論走到哪里都將受到關注和重用,相反一個見異思遷的人在任何一個企業也不會有更光明的前途的,這是一個成為一個職業人的第一要素。我們不能“做一天和尚撞一天鐘”而是應該“做一天和尚撞好一天鐘”。

4,兢兢業業的工作態度。

“干一行,愛一行”——只有樂業,人才能從職業工作中得到精神享受。孔子說:“知之者不如好知者,好知者不如樂知者。”人生能從自己職業中領略出趣味,生活才有價值和意義。對于職業的態度不同,有的是以熱情擁抱的態度迎接職業,有的是以冷酷無聊的態度迎接職業。其結果是,前者把職業當成是親愛的永久伴侶,從中獲益;后者則只是得到煩惱,甚至是傷痛。所以,樂業對人的一生很重要。人一生做好一件事足已,何必三心二意,一事無成。

5,做人做事要有責任心。

曾經懵懂無知,不知責任心是那般,就算今天我們依然迷茫,都說責任心是做好一件事,一份工作的保證。我們將要踏進社會,我們將會面臨對工作的責任、對社會的責任、對家庭的責任,我想只有一個擁有責任心的人才能走好自己的人生旅途。古人云“一息尚存,此志不容稍懈”,“鞠躬盡瘁,死而后已”。無論什么職業,責任心、責任意識是做好工作的內在動力,記得培訓中心老師曾經說過,內因決定外因,責任心是做好一件事的源動力。

知識改變命運 www.tmdps.cn 軟件成就未來 湖南軟件職業學院

HNSERJ20080101

五.個人總結

人生的每一步旅途中,總有著一道難以逾越的鴻溝,對于我們不是缺少勇氣,而是沒有思想,惰性取代了我們原本的進取心,而我們選擇了自甘墮落,碌碌無為的虛度光陰,今天之前的錯誤使我們選擇的懲罰,在軟件學院,如果只要用心去學,不說精益求精,至少可以學會謀生之道,當然不排除學院本省一些不利因素,離開軟件學院,我們無從追究對與錯,因為無法挽回失去的光陰,一寸光陰一寸金,寸金難買寸光陰。這次我想我會很用心的去學習!盡量把他做到完美,至少自己要九十分的滿意我才會交出我培訓的心得體會。

天下大事必做于細。普通人自然作一些小事,怕只怕小事也做不好,小事也做不到位。身邊有很多人總不屑于做具體的事,盲目地相信“天將降大任于斯人也”。孰不知這是及其錯誤的心態,試著去做好自己的事實屬不易。不要以為總理比村長好當。有其職斯有其責,有其責斯有其憂。如果力不及所負,才不及所任,必然禍及自身,狼狽不堪,若做錯事也難辭其咎。所以用心做好身邊的每一件小事,不積細流,何以成江海。所謂成功,就是在平凡中做出不平凡的堅持,而偉大就是平凡的積累。蒲老師曾經說過,做正確的事,正確的做事,在這個告訴信息化的時代,細節決定成敗,方法與態度決定了效率。

“博學之,審問之,慎思之,明辯之,篤行之。” 時下,IT行業對人才的需求是很大而且持續,這更加為我夢想的實現增添了砝碼,激勵自己朝著夢想的云向更大的努力奮斗,只待好風憑借力,送我上青云!“少而好學,如日出之陽”,不管是現在還是將來,我們都應不斷地加強學習,不斷地給自己“充電”,才能開拓進取,勇于創新,不至于被社會淘汰。只要在學習的過程中保持著激情,多做多思考,再加上一顆充滿夢想和遠大抱負的心,我相信人人都可以成功。

知識改變命運 www.tmdps.cn 軟件成就未來

下載java初學者學習心得word格式文檔
下載java初學者學習心得.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    java學習心得

    Java學習心得 Java 學習雜談(二) 鑒于上回寫的一點感想大家不嫌棄,都鼓勵小弟繼續寫下去,好 不容易等到國慶黃金周,實習總算有一個休息的階段,于是這就開始寫第二篇了。希望這次......

    JAVA學習心得

    我也搞了幾年JAVA了,由于一向懶惰,沒有成為大牛,只是一普通程序猿,不愛玩社交網站,不愛玩微博,唯獨喜歡百度貼吧,潛水很久了,手癢來給新人分享下從新手成長為老鳥的已見,也刷刷存在感......

    java學習心得

    怎么學習Java,這是很多新手經常會問我的問題,現在我簡單描述下一個Java初學者到就業要學到的一些東西: 首先要明白Java體系設計到得三個方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 P......

    java學習心得[最終定稿]

    Java學習心得 0704012010 陳侃 07計本2經過一個學期的學習,Java的課程已經結束了。可是我知道,學習java的路上,我們才剛剛起步。學Java之前我聽許多人說Java很難,學了之后我感覺......

    Java學習心得

    學習心得 時光荏苒,短短一個多月的NIIN軟件工程實訓就快結束了,在這一個多月中學習了不少東西,都是特別實用的東西,是在平時的學習中無法學到的。 通過實訓,我覺得學習java應該做......

    java學習心得

    Java學習心得 經過一個學期的學習,Java的課程已經結束了。學Java之前我聽許多人說Java很難。回想一下學習Java時的情景,我仍然興奮不已。 Java學起來很有趣,通過學習Java可以提......

    學習心得java

    0.引言 在ChinaITLAB導師制輔導中,筆者發現問得最多的問題莫過于"如何學習編程?Java該如何學習?"。類似的問題回答多了,難免會感覺厭煩,就萌生了寫下本文的想法。到時候再有人問起......

    java 學習心得

    編程是一種樂趣,只有你覺得他有樂趣的時候你才會用更多的熱情去學習。 任何一門語言都是知識的濃縮,是設計者智慧的結晶,更何況是作為高級語言Java。作為初學者,我們確實應該腳......

主站蜘蛛池模板: 国产真实露脸乱子伦| 在线观看无码av网站永久| 国产午夜福利久久精品| 久久99精品久久久久久噜噜| 天天天天躁天天爱天天碰| 国产精品视频色尤物yw| 精品国产一区二区三区四区阿崩| 国产成人8x视频网站入口| 强迫大乳人妻中文字幕| 18禁黄污吃奶免费看网站| 亚洲无人区码一码二码三码的含义| 亚洲另类无码专区首页| 色香欲天天影视综合网| 自拍性旺盛老熟女| 亚洲亚洲人成网站网址| 亚洲日韩av无码美腿丝袜| 老司机午夜福利试看体验区| 国产 校园 另类 小说区| 午夜成人亚洲理论片在线观看| 久久av无码精品人妻系列果冻| 天天天天躁天天爱天天碰| 亚洲中文字幕无码爆乳av| 日韩成人免费视频| 亚洲精品一区国产欧美| 久久久久久a亚洲欧洲av冫| 又紧又大又爽精品一区二区| 国产成人久久777777| 成人看片黄a免费看那个网址| 亚洲熟妇无码av不卡在线播放| 亚洲欧洲av无码专区| 色88久久久久高潮综合影院| 五月狠狠亚洲小说专区| 亚洲18色成人网站www| 亚洲国产成人片在线观看| 久久精品无码精品免费专区| 日本免费一区二区三区四区五六区| 天天看片视频免费观看| 亚洲不卡av一区二区三区| 色婷婷综合久久久久中文| 性饥渴的少妇av无码影片| 熟睡中被义子侵犯在线播放|