<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Thinking in XiaoQiang
    世人皆有悲哀,只有你不明白
    posts - 56,comments - 150,trackbacks - 0
    打基礎

    級別: 初級

    Bruce Tate
    總裁, J2Life, LLC
    2005 年 5 月 30 日

    輕量級開發是一個很大的主題,開發人員經常提到這個術語,但卻很難講明它的意思。本文是一系列講述輕量級開發的文章中的首篇,介紹了該技術背后的核心原則及原理。

    1990 年,我發現了白水漂流并深深愛上了它。我們哪怕是經過最小的湍流,都會留一個人在湍流尾部,兩個人在岸邊用繩索拽著。我們認為這可以防止任何糟糕的事情發生。雖然看起來一切盡在掌握,只是有些不太實際。我們還學會了從船艙觀察普通的湍流,并設法互相協作。對于大多數危險的湍流,我們花費了更多的時間來保障安全,但是只有少數情況下,這些措施才起到重大的作用。

    在漂流過程中,使用一種起源于東南部湍急河流的輕量級策略,為我節省了時間,使我可以劃得更遠,玩得更開心,而無需過多考慮安全問題。在業務領域,輕量級開發讓您可以按時完工,積極響應客戶,從而節省時間和金錢。

    在本系列的文章中,我關注于輕量級開發(曾經有太多含義的術語)的基礎。本篇文章作為第一篇,為讀者打好基礎,同時對輕量級開發做出定義。后面的文章由淺入深地講述從過程到原則最后到工具的知識。我也將在更高的級別上關注原理和架構的實現,并且提供具體實現的代碼。

    本系列面向沒有經過太多輕量級開發的讀者。如果您已使用了兩年的 Spring 輕量級容器和敏捷過程,您可能會收獲更多。如果您在傳統的開發過程中使用 Enterprise JavaBeans?(EJB),但想要轉向輕量級開發,那么本系列就是為您準備的。

    我更多地是想在這場席卷整個 Java? 技術社區的潮流中,做一些自己的貢獻。輕量級 這個噱頭為諸如 Spring 和 Pico 這樣的容器增添了幾分優雅。并且,一些源自輕量級過程的技術,如自動化單元測試,現在也滲透到了很多開發工作室中。

    戳穿針對輕量級開發的謠言
    “輕量級開發”通常與一套開發方法、框架和設計原理一起使用。

    • 輕量級方法 包括敏捷過程,例如極限編程(XP)和 Scrum。它們強調開發中測試第一,積極調動客戶和重構。
    • 輕量級框架 鼓勵人們使用簡單原始的 Java 對象(POJO)編程,而不是類似 EJB 的重量級面向組件模型。
    • 輕量級設計模式 使您可以在對象和集成服務之間進行松散耦合,而無需艱苦地編寫業務邏輯或領域模型。

    當我們研究這些思想和技術時,您將會學到更多關于它們的知識。但是首先讓我們戳穿一些謠言。

    謠言:輕量級開發只是一種“玩具”技術。
    許多開發工具,如 Microsoft? Visual Basic 或 PHP,它們通常不能駕馭或管理大型企業項目,因此得到了“玩具”的稱號。像 Spring 和 Hebernate 這樣的輕量級技術就常常因此而黯淡。實際上,大多數輕量級技術用于了企業開發,因為其他技術都使我們非常失望。Spring 框架就是作為代替 EJB 的一種輕量級技術。同樣,XP 方法吸收改進了企業中的錯誤設置。我在獲得 Jolt 大獎的 Better, Faster, Lighter Java 一書中,為大家講述了有關成功部署在我的客戶站點上的一些工具的信息,客戶有一些是財富 500 強中的公司。輕量級技術在企業領域內,正在蓬勃發展著。

    謠言:輕量級開發策略構建的是“玩具”。
    也許您更傾向于相信輕量級開發只對構建“玩具”應用程序有益。而您的目標是精確地滿足客戶的需求。讓我們首先明確一下:輕量級技術完全可以構建這種規模的應用程序。實際上,這種巨大的反差經常發生,因為只有簡單、簡潔、無狀態的設計才能使基礎設施更好地工作。

    謠言:輕量級過程使您忽視規范。
    在輕量級開發中,您需要認真地規劃并與客戶磋商需求。您必須構建嚴格的自動化單元測試,以優化重構。當放棄變更時,仍可以保持程序完整。而且,測試用例失敗或變更引發錯誤時,自動化構建會通知您。輕量級開發必須比其他技術更加注意規范,但這種規范源于不同方面。

    我認為這種開發風格超越了單一的技術或過程。如果您想輕松一些,那么需要選擇使它易于工作的原則、過程和技術。

    原則
    該說的也說了,該做的也做了,您現在需要決定哪些需要重視,并據此制定決策。如果我覺得客戶被誤導或漠不關心,我通常會首先幫助他們建立核心原則。下面的列表是一個不錯的起點:

    • 爭取簡單性。這種觀念應該滲入到您所有的工作中。您的過程應該剛好生成足夠完成工作的工件。開發人員應該盡量使用最簡單的方法解決問題。您的工具應該使您構建一個清晰、簡潔的解決方案。
    • 修補漏洞。許多開發方法可能不鼓勵在過程中進行重構或變更,因為這些行為不直接用于產生客戶代碼。輕量級開發要求可以自由地修補太復雜或充斥 bug 的代碼。您需要為它做出預算。
    • 自動化單元測試。您應該優先編寫測試用例。您可能還沒有在測試第一的開發中成功過,但測試會間接給您帶來重構代碼的便利。我以后會進一步講述:廣泛的單元測試改善您的客戶體驗,并提高代碼的設計水平,這是因為它強迫您解耦聯系過于緊密的代碼。
    • 使用短開發周期并積極調動客戶參與其中。許多頂級的軟件工作室通過剔除不必要的工件來簡化開發周期。如果您已經順利得到客戶的參與,那么很多的功能規范會變得越來越沒必要??蛻魰軡M意這種交互,并感激您的短周期開發,因為這穩步提高了客戶的業務價值。

    這些原則并不能完全包含您的技術抉擇和開發過程,但它有利于您描述開發體驗。如果經理也了解并遵循這些原則,開發人員就不至于做出無效技術選擇,或者開發一些不必要的工件。確立原則后,就該規劃一個有效過程了。

    過程
    緊湊、快速的開發過程通常從敏捷開發方法 當中得到靈感。然而,這些方法并不針對每個人。如果您有一個大型團隊,并且沒有實際訪問客戶或合適的代理人,那么傳統方法更適合您一些。但多數項目都有小團隊 —— 不超過 12 個人,他們可以充分訪問客戶,以靈活使用這種方法。通常,敏捷開發包括下列原則:

    • 專注現場客戶和代碼,而不是其他設計技巧。您可以使用其他技巧,但只在它們對您確實有益的情況下。本過程不需要它。
    • 簡化您需要的文檔。為了需要,寧可使用電子表格中的一行來描述,也不使用令人困惑的用例圖。
    • 只做足以完成工作的設計工作。不要對設計或性能過分憂心忡忡,使自己陷入絕境。
    • 為了開發,努力進行簡化并保證至少每天都集成您所構建的程序,必要時進行重構。
    • 自動化測試。

    即使您工作在傳統的機構,您也可以利用已裁減的開發過程。技巧是推廣原則 而不是方法。推廣極限編程管理器 —— 或其他冠以極限 的東西,這可能會很艱難。但推廣類似單元測試的原則通常更有意義。實際上,我的許多客戶使用這種技術同敏捷開發過程一起為保守的機構服務,但他們的老板絲毫不知道有什么發生了改變。

    用修辭手法描述一下這種技術。原則 是重拳出擊的輕量級思想。過程是重量級的,實現起來將會很困難。

    技術
    我已經概述了大多數輕量級開發人員需要了解的設計原理,以及利用這些原理的重要開源技術。

    依賴注入
    最新一代容器稱為輕量級容器,它們使用一個共同設計原理:依賴注入。 對這個簡單思想來說,這是一個復雜的術語。依賴注入讓您將對象和它所依賴的東西交給第三方。然后第三方創建所有對象并將它們綁在一起。比方說,稱為 myDao 的數據訪問對象需要一個稱為 ds 的數據源。那么該容器會一同創建它們,并設置一個屬性:

    清單 1. 創建一個第三方匯編程序
    
    myDao = new Dao();
    ds = new DataSource();
    myDao.setDataSource(ds);
    

    當然,不創建這種第三方匯編程序的話,您也可以使用框架來做其他附加的工作(如提供配置支持)。Spring 框架、Pico 和 HiveMind 就扮演了這個角色。其他像 JavaServer Faces(JSF) 框架也利用了依賴注入。

    面向對象編程
    使用面向對象編程(AOP),您可以編寫通用的功能性模塊(稱為方面) —— 例如,日志、事務、安全或持久性。AOP 使您可以將這些方面聯系到 POJO,然后指定一個時間點(如方法開始時或產生異常時)和另一個需要聯系的方面。例如,您可能想要創建一個外觀事務對象。您可以在調用方法時將 TransactionBegin 方面關聯到外觀方法。然后在產生異常時將 RollBack 方面關聯到外觀的異常。最后,在方法結束時將 Commit 方面關聯到外觀的方法。您在配置中完成這些工作,而不是通過編寫代碼。依靠這種能力,您可以創建一個簡單的 POJO 事務、安全或遠程訪問。

    您現在已經得到了關于 POJO 的聲明性事務,這對企業應用程序非常有用。使用這些工具,您可以完全放棄 EJB,或者最小化它的作用。而這正是輕量級組件所要做的。

    透明持久性
    持久性也是建立在較簡單的編程模型之上。透明持久性框架通過配置而不是編寫代碼,來使您為應用程序添加持久性。因為大多數應用程序是面向對象的,并且訪問一個關系數據庫,所以一些專家斷言,我們最終將進入對象關系映射的時代。我目前發現的頂級持久性解決方案是 SolarMetric 的 Kodo JDO 和 Hibernate(參閱 參考資料)。在后面的文章中我將詳細比較這些解決方案。其他輕量級解決方案,例如 iBATIS 和 Active Record 設計模式,根本不會試圖進行對象關系映射。

    結束語
    在輕量級開發中,您基本上可以:

    • 合并過程、技術和原理。
    • 優先選擇較簡單的技術。
    • 在一個穩固、輕量級的基礎上,進行構建。
    • 盡量爭取最可能的透明性。
    • 使用您可以利用的技術,如依賴注入和 AOP。

    一定要明白,無論技術還是過程都不能完整定義輕量級開發。它是一個包羅萬象的概念。伴隨本系列的文章,您將看到對輕量級技術和原理的各種各樣的討論。我將首先關注開源框架,并著重講述輕量級容器。后面的文章,我會討論保守公司內的輕量級方法實現,甚至還有一些超越了 Java 技術的替代方案。我非常喜歡這個系列的文章,希望您也一樣。

    參考資料

    關于作者
    Bruce Tate 居住在德克薩斯州的首府奧斯汀,他是一位父親,同時也是山地車手和皮艇手。他是 3 本最暢銷 Java 書籍的作者,其中包括榮獲 Jolt 大獎的 Better, Faster, Lighter Java 一書,最近又出版了 Spring: A Developer's Notebook 一書。他在 IBM 工作了 13 年,現在是 J2Life、LLC 的創始人兼顧問。他潛心研究基于 Java 和 Ruby 的輕量級開發策略和架構。
    posted on 2005-10-27 09:14 小強 閱讀(264) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 国产传媒在线观看视频免费观看| 丁香六月婷婷精品免费观看| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 亚洲日本va在线观看| 亚洲免费福利视频| 亚洲欧洲日产国码在线观看| 57pao国产成永久免费视频| 亚洲福利视频一区二区三区| 亚洲成人在线免费观看| 亚洲娇小性xxxx色| 精品国产一区二区三区免费看| 国产成人亚洲精品91专区高清 | 亚洲视频精品在线观看| 亚洲第一网站免费视频| 色老板亚洲视频免在线观| 性一交一乱一视频免费看| 精品韩国亚洲av无码不卡区| 又粗又大又长又爽免费视频| 国产日韩久久免费影院| 久久精品国产亚洲AV麻豆不卡 | 最近2019免费中文字幕6| 亚洲videos| 免费一级做a爰片性色毛片| 一级成人毛片免费观看| 亚洲伦理一区二区| 成年美女黄网站色大免费视频| 亚洲AV无码专区在线观看成人 | 亚洲午夜精品第一区二区8050| 免费国产午夜高清在线视频| 亚洲图片中文字幕| 免费午夜爽爽爽WWW视频十八禁| 一级毛片成人免费看a| 久久丫精品国产亚洲av不卡| 女人张开腿等男人桶免费视频| 一级人做人a爰免费视频| 久久精品国产亚洲AV嫖农村妇女 | 亚洲成a人片在线观看国产| 叮咚影视在线观看免费完整版| 亚洲精品福利你懂| 中文字幕无码精品亚洲资源网| 69成人免费视频|