|
初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 21, 2005 12:02 PM
|
|
J2EE征途坎坷,越來越多人走上這條崎嶇之路,如何給他們一個正確引導、好壞評判,本文試圖拋磚引玉,用簡單語言描述一個高質量的J2EE系統是如何開發的?
http://www.jdon.com/idea/j2eebasic.htm
__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 21, 2005 2:14 PM
|
|
你好 Banq先生 關注你的文章很長一段時間了, 對你在Java領域的技術水平,以及在很多問題上的看法, 也非常佩服. 國內目前達到你的水平的人真是很少(當然高人也許都隱居起來了). 但是, 有幾個問題想與你討論: 首先,軟件是一個絕對的應用技術,任何技術離開了具體的應用, 坦率地說是毫無價值的.我看,Jdon也有在這方面的嘗試,如網站,網上商店生成系統等.但這與真正的企業應用還有非常大的距離. 我不了解,你在這一領域里為什么沒有涉足,是因為你認為很困難,基本上是以我們國內目前的技術水平無法到達呢, 還是因為你不屑于這方面的深入, 認為你所追求的是純粹超然的技術概念呢. 我的其他問題有賴于了解你關于這個問題的回答,讓我們繼續關注和討論.
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 21, 2005 8:13 PM
|
|
首先十分感謝您的文章! 一直都像上面那位先生一樣十分關注您的文章,很淺顯易懂,而且總能使人受益匪淺(至少我是這樣的,可能我的水平很低吧),一針見血的指出我心中的疑問! 不過還有個問題想向您請教,就是您所說的Domain Model,是指RUP中的領域建模嗎,我分析了一下,大概是的,還請您幫我解釋一番!
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 22, 2005 12:22 PM
|
|
借寶地,感謝bang老師的指引,我是天天來的!
最近公司定書,我第一個定了bang老師的書。呵呵!
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 22, 2005 4:00 PM
|
|
文章寫得太好了,讀后大有醍醐灌頂之感,對于 banq 先生的熱心和謙虛蟲子深感欽佩,有一次公司在研發一個應用開發框架時,架構師曾引用了Jdon的一篇文章,開發了一套Delphi版本的JMS,當時我就將Jdon加入收藏夾,一直也沒有機會來逛,現在有機會轉到java,Jdon是我每天開機后第一個進入的網頁,簡約而不簡單,Jdon給了我很大的幫助,轉入java時間不長,但是已經深深領略到她的美。
再次感謝Jdon,感謝 banq ,感謝所有幫助過我的朋友!
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 23, 2005 9:43 AM
|
|
>但這與真正的企業應用還有非常大的距離. 我不了解,你在這一領域里為什么沒有涉足,是因為你認為很困難,基本上是以我們國內目前的技術
多謝探討,這個問題很復雜,大概有下列幾點: 1. 現在軟件技術不再象以前的技術,以前的技術可以說只有做個這個行業大型軟件系統的經驗的人才可以說對這些軟件技術有掌握,而現在的技術則不必了,J2EE講究架構,J2EE它是一套應用軟件的規范,也就是說,J2EE是很多做過大型軟件的人進行匯總后的經驗精華,一個大型系統需要哪些技術部分、什么時候適合什么技術,在J2EE標準中基本都有涉及,例如EJB技術、JMS等。
這樣,如果你能完全掌握和駕馭這些J2EE架構技術,你有時確實不必一定要做個大型軟件經驗才型,這稱為站在巨人的肩膀上。
但是反過來,如果你沒有豐富的軟件系統實戰經驗,你去理解EJB/JMS等就很困難,所以這兩個技術對初學者比較難的原因之一。
2. UML結合J2EE這樣OO一套實施過程從方法論以及模式角度固化了軟件數據庫系統的分析 設計開發,這也是因為有MDA(將這些過程用軟件自動生成代碼)誕生的原因。雖然這些簡化了我們開發系統的過程,但是這只是解決了應用系統的一部分問題,工作流等尚未成熟,使用這樣方式開發系統,依據我的經驗,最后會將煩瑣和細致的工作壓在Jsp頁面上,目前開發一個系統,結合標簽庫和用戶界面需求這個工作反而花費我更多時間,希望JSF在這方面能有效率提升,等這些技術細節都能解決,基本J2EE非常成熟了。
3.目前我通過咨詢角色和一些軟件公司一起承接一些企業應用項目,例如去年承接一個大型外資人事系統,他們要求管理GE 等幾家外資企業的人事福利(這些企業外包人事給他們),如果專為一家公司開發人事很簡單,但是要求這個人事適合多家,那么重用性要求很高,設計抽象面很高,他們在新加坡有類似系統,但技術很老,我聽過新加坡的系統,他們也有一些經驗總結,大部分和我的J2EE設計相吻合,我和新加坡的人交流過想法,他們很驚奇,不太相信,加上費用問題,只進行了初步架構設計就擱淺了。
4.不要小看網站系統,以前網站系統都是用PHP Perl做,功能很弱,無法和企業系統相比,但是隨著Inernet普及,更多人要求聯網,例如如果一家公司的ERP通過互聯網實現,那么老總出差就很方便,但是現在為一家公司開發一個基于internet的ERP很貴,比傳統的貴,這不合理,這也是SOA提出的目的之一,以后ERP實現網上租用,就象你申請一個Blog或論壇或Email,你可以為你的企業申請一個ERP系統,這樣只要企業付租費就可以了,這可理想目前已經接近,前段時間美國一家提供這種服務的企業來上海做宣傳,他們的業績增長速度極其快 500%.
通過網站提供ERP等企業服務對于軟件設計的重用性要求很高,就一套郵箱系統可以服務很多用戶一樣,你必須設計出一套重要性、靈活性很高的ERP系統適合不同的用戶,可見網站軟件的水平是極其高的。前面我做的網站自動生成系統到現在我都認為完成不夠好,現在很多網站都提供這種服務,這象Blog,但是Blog等只限制你網站模板,而不是自由定制頁面,所以Blog這些都是小孩玩家家,根本無發走向商業,著名的那個方興東鼓吹Blog,其實沒有技術革新,靠你媒體吹呼就是革命了。
__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 23, 2005 12:57 PM
|
|
banq老師好,最近大致抽象總結出了一個比較淺顯的規律,既是您平均一兩個月能夠發一篇比較的適合初學者的帖子,但每一篇都可以對偶的有關知識的梳理和導向能夠起到很重要的作用,不敢說終生受用但也似乎會持久難忘了,在此還是要道一聲感謝。
既然題目是初學者...高質量的J2EE系統,那么就題目本身這個用例來說,參與者該是“novice”了,領域模型應該是"高質量的"+"J2EE系統",那么能否請您再深一步的舉個樣例來說明何為"high quality j2ee system"呢?估計您不會選petshop,但有可能會將jive和jdon算進來,但偶真正想看到的是一個就您個人來講曾經有過consultant經驗的項目作為例子來簡要闡述下高質量+j2ee系統的概貌,或者象您前面某篇論oo和數據庫的矛盾的文章一樣,能否前瞻性的給出一個在您心目中最理想的高質量j2ee系統的輪廓呢?比如jsf(new version>1.1)+ejb3.0+j2ee設計模式?偶覺得struts+spring+hibernate并不敢稱為高質量的或是j2ee系統,所以總覺得從現在開始既該有意識的用一下jsf+ejb3來設計了,但由于不知道有沒有人在這方面開始吃螃蟹了,所以只好去隨大流的關心些什么ajax,xp之類的流行名詞了。但從內心來講,無論是javascript還是組件式編程,無論是spring+hibernate還是ejb3,無論是xp還是fdd,無非是想盡量按照客戶的要求迅速提交一個界面新穎,結構穩定的一個能夠跨平臺的良好的系統吧。假如能預知何為一個好的系統的話,似乎事情會變的簡單些,也就不必為那些喋喋不休的爭論著技術名詞的人們所困擾了。
但由于目前偶的能力所限和所處的時期的特殊性,似乎想馬上就拿jsf+ejb3來首選做企業級開發還有點不現實,那么作為一個apprentice來說,能夠做的似乎只有學習模式了,偶不知道關于模式該學到多深才合適,只相信盡量選擇從建模的時候就配合著設計模式來考慮可能會有助于系統的穩定和重用,談到這里有引申出關于題目的另外一個話題,就是“初學者”,偶覺得如果想作為計算機編程人員的話,面對著不停的新技術名詞和版本更迭,似乎偶總要做一名初學著來的說,于是最近有意識的在看一些數據結構方面的課程,希望能夠從一些理論基礎中來尋找那些所謂的新技術背后所蘊涵的知識,但還是那句話,由于能力有限,所得甚淺,所以希望您如果能站在一個咨詢家的角度來看,能否指點一下,就您認為的如果想設計一個好的軟件系統來說,或許不僅限于j2ee,該多看看哪些computer science中的理論知識呢?偶不知道這個問題提的對不對,但總覺得設計模式對于系統的意義,是類似于數據結構和算法之相對于程序的意義的,所以假如您在類似的方面能有些心得的話,希望能夠得到一點指點。
(偶的廢話似乎不少,希望banq老師能忍受)
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 26, 2005 3:14 PM
|
|
謝謝 Banq 先生在6月23日非常認真的回復(抱歉由于忙,沒能馬上回復). 總結起來, 如果我的理解不錯的話, 你的結論是 1)你認為網站系統并不可小覷(同意,一個高訪問量,同時能夠實現網上交易的網站的確如此).2)EJB/JMS技術對于初學者來說是不容易,但是對你來說,你是可以Handdle的. 3)你也有承接企業系統的實際經驗,象你說的那個HR系統. 但不知您以咨詢身份參加的這個HR系統到底都解決的是實際管理中的什么樣的問題?在性能方面都達到了什么樣的水平? 具體來說,采用了哪些技術(諸如您帖中提到的一些技術)應對了實際中具體的什么樣的問題. 此外以你在這個HR系統的經驗來看, 是一個多少人的Team,采取什么樣的開發方式和開發進度(人員和時間的分配比例)開發的.你認為在這樣的一個項目的開發過程中最關鍵的是什么?最影響 Prductivity的又是什么?
對這樣一些問題看上去似乎很空泛,但是實際上能夠真正反映出我一開始提出的issue,"軟件是一個絕對的應用技術,任何技術離開了具體的應用, 坦率地說是毫無價值的".舉個例子來說,書本上,名家們會告訴你, Value List Handler 這個設計模式是解決這樣的問題:"You have a remote client that wants to iterate over a large results list." 一般來說,如果是一個大量地查找某一些"topic/dimension"下的數據,這樣的問題,我們也毫無疑問地確定要用到這個模式.但是,如果對一條具體的數據,如某一個銷售員,要和他的客戶討論(在線談判)他們之間的一個具體合同,這時候會不會也需要用到這個模式.如果要用這個模式,到底是用Stateful Session Bean 還是用 Stateless Session Bean 實現呢,他們各自在實現方法上對性能的影響是什么, 當你決定采用了某種實現方法,你到底是怎樣Tradeoff的呢; 最后對這個設計模式來說,在最終的設計方案中如何把它抽象到對一個通用的,普遍的業務問題,而不是僅僅對"某一個銷售員,要和他的客戶討論他們之間的一個具體合同"這樣的一個特例問題,作出一個通用的解決方案,適應任意規模,任意業務的企業,真正達到軟件工程的目標:高度的Reusing 和 Scalablity. 實際的企業應用系統就是充滿著類似這樣的問題,很有挑戰.但有些技術人員就僅僅滿足于自己可以用某項技術做出一些小的Demo了,就不愿意,或根本不屑于深入下去面對一個實際的應用問題.
因此, 我相信您應該能夠非常理解,我為什么感興趣了解您對我上面提出問題答案.
您的很多看法都很不錯, 我非常同意, 希望我們能在今后進一步深入地探討. 謝謝!
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 28, 2005 9:23 AM
|
|
>你認為在這樣的一個項目的開發過程中最關鍵的是什么?最影響 Prductivity的又是什么?
當這樣的項目使用框架組件組合后,由于系統重要 重用的功能已經封裝在框架軟件中,所以,只要能夠組裝出應用系統,一般第一次測試就會立即通過,我已經不止一次體會這種快感,我現在基本告別以前那種花費大量時間在Java調試上時代,我相信很多初學者還在這個泥潭里掙扎,這就成為影響一個產品的主要原因,現在使用jdon框架開發,幾乎消滅這個因素。
那么,現在最影響 Prductivity的是什么?就是技術外的因素:項目管理。
關于你提的性能方面設計達到什么水平等,這些我已經整合進入Jdon框架,使用Jdon框架開發,幾乎無需考慮性能設計,一開始就具有優越的性能,這些都是有測試數據,Java產品的好處就是一切可以自己動手,不必聽從第三方評價,因為那些都有失公正,服務器配置上Jprofile/Optimizeit,客戶端配置Jmeter,啟動幾個線程一跑,Jdon框架和應用程序的性能真相就出來了,所以,在Java領域,開源和商業產品是在同一起跑線,面對不同的用戶:前者是更有頭腦,自己動手;后者是對自己缺乏自信的人;服務是兩者的重點。
>在最終的設計方案中如何把它抽象到對一個通用的,普遍的業務問題,而不>是僅僅對"某一個銷售員,要和他的客戶討論他們之間的一個具體合同"這>樣的一個特例問題
其實你說的行業框架提煉的問題,這和業務相關,Jdon框架等都是基礎框架,沒有這些組件框架的優雅解決方式,就沒有行業框架的好的開始,我想你不希望在行業框架提煉之后,發現無法加入一些縱向功能,就象數據庫設計好之后,幾年以后卻成為你發展的障礙。
行業框架需要資深的行業背景,這也不是一般人做的,但是工作流/Portal等都是行業框架的提煉,這些也是我們以后發展的方向。
就我個人來說,我愿意解決重要問題,然后我告訴更多人解決方向,如果他們相信,大家一起努力來解決所有問題,而不是靠我一個人解決所有問題。
__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jun 30, 2005 7:53 PM
|
|
to shuiwx 很抱歉現在才回復你的問題: >如果想設計一個好的軟件系統來說,或許不僅限于j2ee,該多看看哪些>computer science中的理論知識
設計一個好的軟件系統我文章里其實寫了,掌握分層解耦宗旨,學習使用一些現成的框架就可以了,如果你不原意囫圇吞棗,那么研究一下這些框架設計原理和模式,這些會花費你很長探索,數據結構、編譯原理這些已經成為底層機制,就象匯編是底層一樣,現在的大學計算機教學完全是錯誤的,學習的都是正確的廢話。所以沒有必要在那些大學課程上浪費時間。
增強項目經驗,研讀源碼,自己動手編寫項目是提升水平的唯一道路。 以上只是我個人意見。
__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jul 1, 2005 1:08 PM
|
|
謝謝Banq先生的回復, 你的很多觀點都很好,我非常同意.象你所說最影響Prductivity的是技術外的因素:項目管理. 但我不知你能不能有一些具體的看法.因為任何行業,最終的問題, 競爭力的問題都是如何通過管理來提高Prductivity. 不知你對軟件這一行業有沒有特別的見解.
開源項目的確有它的優勢,特別是作這些開源項目的人,往往是一些技術的精英.但是, 我還是以為應該以成熟的Commercial產品作為自己開發的基礎,即所謂"巨人的肩膀". 這是因為, 成功的Commercial產品往往更注重最終用戶, 這是這些產品能夠給它的公司帶來巨大的商業利潤的源泉.純技術的專家往往會忽視這一點.
要成就一件事(一個大型企業管理應用的項目), 是需要很多人踏踏實實,堅持不懈(這也非常重要)的努力.這和去上上課,或者在場外指導一下,有很大的區別.
我希望通過你這個論壇, 結識一些志同道合的朋友, 能夠作成這樣一件事.再次謝謝你的回復, 我因為很多時候很忙,有一些Deadline非常緊的事情,有時沒能馬上給您回復, 請你見諒.
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jul 1, 2005 1:38 PM
|
|
非常感謝JoannaYe 討論,從言論中感覺你是一個職業的項目經理。非常專業。
項目經理和設計師良好溝通和理解交流,是一個項目成功的關鍵。
關于開源和Commercial區別,我個人覺得它們之間真的沒有嚴格的區別,只不過是兩種思路的表現:開源通過免費產品賣服務;Commercial是既想賣產品又賣服務,不能因為它的產品賣錢,就是技術好,一般是市場品牌好。
就拿EJB實現來說,在所有J2EE服務器中只有開源JBoss 4.0使用AOP實現,堅持AOP的一些純設計派認為EJB過時了,那么Weblogic /Websphere等這些以支持EJB自詡的服務器產品反而不如開源產品呢。這些人認為:EJB
但是正如你說:為什么客戶還是購買Websphere等服務器,因為它們注重最終用戶。
我認為一直試圖在這兩者之間尋找平衡是挑戰的事情。
__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jul 8, 2005 5:27 PM
|
|
Banq大師你好,很高興看到你的文章。我現在有個問題:我搞J2EE項目/課題也有很長時間了,過去搞J2EE時主要用的是EJB,包括statefull, stateless SessionBean以及EntityBean.最近似乎非常流行Hibernate,很多人甚至說要將Hibernate取代EJB,至少是EJB里的EntityBean。但是EJB3里面還一直保留著ENtityBean。我另外還看到有人建議說將來搞J2EE項目時最好是把商業邏輯放在stateless SessionBean里面,而把持久層數據處理用HIbernate來完成。這樣的例子我還沒有見過,banq大師能談談?或者介紹有關這方面的資料?
謝謝!
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jul 8, 2005 6:36 PM
|
|
不敢稱大師,這個問題一年前在Jdon討論得很厲害,可查查以前的精華貼: http://www.jdon.com/communication.htm
Java領域的技術一直會百花齊放,完全看你使用者方便和喜好。
__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Jul 20, 2005 1:42 PM
|
|
我問過很多有 很長 java 開發經驗的人員,你文中的這些概念。
但是,幾乎沒有人能講明白。
該文章講的比較清楚。
就像《工作流管理模型、方法和系統》 的第一章(我非常喜歡這一章)
解釋為什么要工作(為了獲取生活資料),為什么要協同工作(經濟,現實) 。 協同工作 就需要 流程。
娓娓道來,非常清楚有趣。 我喜歡。
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Aug 1, 2005 5:32 PM
|
|
Banq老師,我是超級初學者,一直有一個問題搞不明白,對于J2EE中的分層是對什么的劃分,比如表現層到底指什么,JSP屬于表現層還是服務層,EJB和javabeans屬于哪層等等,就是說與各層對應的實體是什么啊
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Aug 1, 2005 7:41 PM
|
|
表現層是MVC模式實現,用來實現顯示功能的層次;Jsp和struts都是表現層;EJB/JavaBeans一般主要屬于業務組件層,也有用于頁面控制的javabeans。圖見:

__________________ Java學習開發三件寶: Domain Model(域建模)、Patterns(模式)和Framework(框架)。 集三寶理念于一身,小中型J2EE項目快速開發工具:Jdon Framework
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Aug 2, 2005 10:13 AM
|
|
謝謝banq老師的詳細講解!!
|
|
|
Re: 初學者如何開發出一個高質量的J2EE系統?
|
發表時間: Nov 2, 2005 10:19 PM
|
|
BANQ大師你好.我是一個初學者.而且編程基礎一點都沒有.能為我說說該怎樣入手嗎?謝謝了.
|
|
|