避免本文所列之10大J2EE風險,確保企業級java項目成功
作者:Humphrey Sheil
翻譯:Blueski
說明:
本文已在51CMM網站《中國系統分析員》雜志第3期刊載。
原文在 http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-ten.Html
--------------------------------------------------------------------------------
在過去這段時期里,我擔任過程序員、高級設計師以及架構設計師等工作,見識過很優秀的企業級Java項目,也見識過不好的,甚至很"丑陋"的項目。有時候我會自己問自己,為什么一個項目可以取得成功,而另一個卻走向失???很難定義出某種規則或標準來表明各個不同的項目應該如何成功,J2EE項目也并不例外。但與此相反的是,我們可以從各個角度和層次上去考察項目失敗的原因,假如很好地避開了這些風險,項目就可以取得成功。在本文中,我將提出排名前10位的企業級Java項目風險,供讀者參考。
在各種各樣的風險中,有些風險只是延緩了項目的進度,有些帶來了一些不必要的工作,而另一些則會把成功的可能性徹底地消除。不過,假如預先有了足夠的預備和清醒的熟悉,那么并沒有不可避免的事情。這好比假如你是一名旅行者,你清楚地知道前面的道路在什么方向,做了充分的預備,又有一位清楚知道哪里有危險的向導,這樣就會比較順利地到達自己的目的地。
本文采用了以下結構來描述風險:
風險名稱:風險的標題(使用粗體)
項目階段:在哪個項目階段會發生風險情況
影響階段:會影響到以后的哪些階段
癥狀: 風險產生時的癥狀
規避方案:如何規避風險或者把其對項目的影響降低到最小程度
備注: 風險相關的補充說明和提示
通過對企業級Java項目的仔細考察,本文將J2EE項目過程分解為以下幾個階段:
提供商選擇: 在開始你的J2EE項目之前,要選擇最合適的提供商,從應用服務器到開發工具組合,一直至工作期間享用的咖啡的廠商?!?
設計: 在遵照一系列嚴格的規范和軟件工程方法的前提下,可以開始進行足夠充分的設計,然后再很自然地進入開發階段。在開發之前,要周全地考慮好正在做什么,以及如何往下做的問題。另外,我使用了一些設計模板來確信在進入開發之前,已經想到了所有的問題和可能的解決方案。但是,我有時也在該階段做一些編碼,有時候這樣做可以回答一些問題,有效地判定出性能上和模塊劃分上的問題?!?
開發: 也就是程序開發階段,選擇一些好的開發工具,進行精良的設計等等,在這個階段將顯示其優越性,并且可以給開發帶來很大的幫助。
穩定性/負載測試:在該階段,系統架構師和項目經理應該凍結住產品特性,并把焦點放在質量以及產品參數(答應的并發用戶數量,故障恢復情況,等等)上。質量和性能在該階段應得到足夠的重視。當然,最好應該避免在前階段寫出不良的運行緩慢的代碼而到本階段來作很多的修改。
成熟期:這不是一個真正的項目階段,而是一個固定的預備階段。過去潛伏的錯誤(來自于糟糕的設計和開發、錯誤的廠商選擇)可能出現并影響你的系統。
風險1:沒有真正理解 Java, EJB, 和J2EE
這個問題可以分解為3個部分,以便于分析。
描述: 沒有真正理解Java
項目階段:開發
影響階段:設計、穩定性測試、成熟期
對系統性能的影響:可維護性、可擴展性、性能
癥狀:
重復開發了JDK核心API中的功能或類
不懂得以下列表中的某些項(這只是一些主題或者實際例子而已):
垃圾收集器 (train, generational, incremental, synchronous, asynchronous)
對象在何時能被進行垃圾收集 -- dangling references
使用的繼續機制及其權衡
over-riding和over-loading方法
為什么java.lang.String (在這里用你所中意的類代替) 提供的性能不好
Java中的pass-by參考語義和EJB中pass-by值的語義的比較
使用 == 或者使用equals() 方法 for nonPRimitives
在不同平臺上Java線程的運行順序方式(例如是否是搶先方式的)
新線程和本地線程的比較
Hotspot技術(以及為什么舊的性能調整技術降低了Hotspot 的優化效果)
JIT,以及什么時候好的JIT變得不好(未安裝的JAVA編譯器,以及你的代碼運行得剛夠良好)
API搜集
RMI
規避方案:
你需要不斷改進Java方面的知識,尤其是深入了解Java的優勢和不足之處。Java的存在價值已經遠不止是一種語言,理解平臺(JDK及工具等)也是同樣重要的。具體地說,你應該是經過認證的Java程序員,假如你不是的話,也許你有時會為還有那么多不知道的內容而感到驚奇。另外,你可以加入Java的郵件列表。以前我曾加盟過的每一個公司都加入了這樣的郵件列表,從同行中學到技術,這將是你最好的資源。
備注:
假如你或者你的團隊中的成員不真正了解編程語言和平臺,怎么還能保持成功的希望呢?強干的Java程序員之于EJB和J2EE,就象是鴨子之于水一樣。與此相反,比較弱的、沒有經驗的程序員只能開發出質量低劣的J2EE應用程序。
新聞熱點
疑難解答