一個牛人給JAVA初學者的建議(下篇)
給初學者之六:Java企業級應用之綜合篇
我們知道中間件有很多種規范以及相關的模型,最流行的一個是j2ee還有一個是.net。那么各大公司關于這兩套規范各有什么產品以及周邊呢?
一。j2ee:?黃金組合
操作系統:Solaris?????應用服務器:Weblogic????數據庫:Oracle????開發工具:JBuilider/IntelliJ IDEA
優點:性能一級棒,大企業大公司做系統的首選,世界五百強幾乎都是這套組合
缺點:極貴
超級組合,也是最安全最酷的黃金組合,硬件采用SUN公司的機器。但是SUN的服務器很貴,同等價格不如去買IBM的機器。SUN的服務器支持Solaris的效果自然不用說,Solaris號稱是世界上最安全的操作系統。Oracle也是世界上最安全,性能最優的數據庫,Weblogic是當今性能最優的App Server。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也有自己的App Server,但是性能不怎樣,使得這幾種產品之間協作的性能要比預想中的要差一點點?.
二。開源系列
操作系統:-????應用服務器:JBoss??數據庫:MySql????開發工具:Netbeans
優點:便宜,性能未必最佳,但是對付中小企業足夠了
缺點:出了問題自己抗吧
嗯,這是java陣營最大的特色,免費免費,還有在開發工具這一欄Eclipse也是免費的。但后面要說,算了,換個有代表性的開源產品來?。tomcat僅有web容器而沒有ejb容器,而jboss已經集成了tomcat
也就是說下載了jboss之后,啟動的同時也就啟動了tomcat,jboss在tomcat基礎之上多加了一個ejb容器,使得jboss+tomcat成為和weblogic,websphere之外又一個得到廣泛應用的App Server?。現在大概是這樣,中小型企業多用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服務器不錯,可以考慮?。
四。微軟陣營
操作系統: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的誕生,Java之父James Gosling早年從cmu畢業之后,從事了一段時間的開發工作,后來意外碰到一個項目,這個項目要求他用C++開發,但可愛的JG是天才,凡是天才在某方面特別突出的同時,必然有一些天生的缺陷,恩,或說共性,比如說懶,急躁和傲慢。JG既然是天才,那就必然具備這些共性,JG懶,以至于他學不好C++。不僅他學不好,當年開發出Java的那個團隊也都學不好C++。他們急噪,以至于他們中有人甚至威脅以辭職的方式離開這個需要使用CPP開發的項目。他們傲慢,所以他們決定開發出一種新的語言來取代那個該死的CPP。更可愛的是,他們一開始居然給這門語言起名C++++--//沒錯,我沒敲錯,叫什么C加加 加加減減,意思是加上一些好東西,減去一些壞東西,天才的設定,有時候你會發現天才和傻瓜真的只有一線之隔。還好這個可愛的名字沒有被繼承下來,這些天才們給他們的產物起名叫Oak//橡樹。只是后來當他們去注冊這個名字的時候,發現這個名字已經被注冊了。于是在Sun公司的一個女職員//mm就是心細(這個說法也是我們公司mm告訴我的)的提議下,把這個可愛的語言起名為Java,就是他們當時喝的咖啡的名字。所以我們看到Java的標志就是一杯冒著熱氣的咖啡。JavaBean 了解完Java之后,再來說說什么是JavaBean//華為面試題JavaBean是什么? 咖啡豆
ja,更為科學點的解釋是,用java語言編寫的可重用的軟件組件//組件的定義前面說過了,不再重復。很形象不是么? 將javabean放入杯子//容器,還記得容器的概念么?web容器,ejb容器。就可以沖泡//編譯成咖啡,供客人們品嘗//運行。完美的服務。下面進入正題,再談容器。前面介紹過容器,我覺得有必要再補充一點,容器從某種意義上說其實就是一個可運行的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?。什么叫控制反轉呢?套用好萊塢的一句名言就是:你呆著別動,到時我會找你。什么意思呢?就好比一個皇帝和太監?,有一天皇帝想幸某個美女,于是跟太監說,今夜我要寵幸美女?,皇帝往往不會告訴太監,今晚幾點會回宮,會回哪張龍床,他只會告訴太監他要哪位美女,其它一切都交由太監去安排,到了晚上皇帝回宮時,自然會有美女出現在皇帝的龍床上,這就是控制反轉。而把美女送到皇帝的寢宮里面去就是注射?,太監就是是框架里面的注射控制器類BeanFactory,負責找到美女并送到龍床上去。整個后宮可以看成是Spring框架,美女就是Spring控制下的JavaBean。而傳統的模式就是一個饑渴男去找小姐出臺?,找領班,幫助給介紹一個云云,于是領班就開始給他張羅?,介紹一個合適的給他,完事后,再把小姐還給領班,下次再來?。這個過程中,領班就是查詢上下文Context,領班的一個職能就是給客戶找到他們所要的小姐,這就是lookup()方法,領班手中的小姐名錄就是JNDI//Java Naming and Directory Interface。小姐就是EJB,饑渴男是客戶端,青樓是EJB容器,看到區別了么?饑渴男去找小姐出臺很麻煩,不僅得找,用完后還得把小姐給還回去,而皇帝爽翻了,什么都不用管,交給太監去處理,控制權轉移到太監手中去了,而不是皇帝,必要時候由太監給注射進去就可以了?。看到Spring的美妙了吧,Spring還提供了與多個主流框架的支持
可以和其它開源框架集成?。
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中都出現了容器,各位甚至可以自己嘗試用標準庫去使用容器?。
推薦網站
www.javaeye.com //java視線論壇,Hibernate國內的權威
dev2dev.bea.com //bea的dev2dev社區,用WebLogic首選的好去處
www-128.ibm.com/developerworks //ibm developer works社區,ibm產品的老家
www.jdon.com //j道,Jboss國內相對討論會多一點的地方,有自己的框架
www.matrix.org.cn //matrix,有自己的框架,很清新的論壇
jcp.org //JCP,前面說到過了
sourceforge.net //開源的東西幾乎這里都可以找到,除java外還有游戲共享等
saloon.javaranch.com //我常去,人氣不錯
www.apache.org //阿帕奇老家
www.jboss.com //Jboss和Hibernate老家
www.springframework.org //Spring老家
www.wiki.org //非常好的百科站點,可惜國內被封,創始人加入了Eclipse zone
www.google.com //你要的這里有,不信?輸入關鍵字再按一下那個靠左的白色按鈕試試
最后的建議
一,不要做一個浮躁的人
二,學好英語,很重要
三,閱讀源代碼和文檔
四,共享源代碼,不要做一個功利的人
五,熱愛Java
Java Java java學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。