㈠ java自學看什麼書好啊
學Java,有哪些推薦書籍可以看?很多人都會有這樣的疑問。如果你初出茅廬,對Java感興趣,在這行深鑽研,那麼這些書絕對不能少;如果你已經是個Java工程師,那麼這些書可以幫助你在Java的路上更加精進。一起來看看吧!
四大名著之《Java核心技術(第10版)》
提起Java入門必讀,四大名著是少不了的。《Java 核心技術》就是其中之一,分卷一、卷二兩冊,卷一講基礎,卷二為進階。全書對於Java語言的核心概念、語法、重要特性和開發方法講解地非常細致,可以說是一部有關Java的網路全書。
四大名著之《EffectiveJava中文版(第 2 版)》
「神書」、「整本書都是精華」、「內容永不過時」、「Java 程序員必讀」……這些標簽都是屬於《Effective Java中文版》的。
這本書不是講理論基礎的,而是講實戰的。書中介紹了78條極具實用價值的經驗規則,涵蓋了大多數開發人員每天所面臨的問題的解決方案,並且通過代碼例子進一步進行佐證,讓你知其然,也知其所以然。
哪怕不是Java程序員,也能買來看看,書中絕妙的編程觀是跨語言、跨平台的。
《Java語言程序設計(基礎篇)(原書第 10 版)》
這應該是很多程序員,尤其是Java程序員倍感親切的書,因為這本書可以說是他們當中很多人的入門初心。
本書從最基本的程序理論知識出發,哪怕你完全沒有Java基礎,也可以通過這本書了解Java基本的程序設計、語言結構、面對對象程序設計等知識。書中還配了大量的代碼和課後習題,讓讀者在了解有關Java的基礎知識的時候,也能進行實踐深入理解。
非常適合零基礎、Java 和編程愛好者來讀。
《Java 高並發編程詳解:多線程與架構設計》
全書主要分為四個部分:第一部分主要闡述Thread的基礎知識;第二部分引入了 ClassLoader; 第三部分詳細、深入地介紹volatile關鍵字的語義;第四部分也是最重要的一部分,站在程序架構設計的角度深入講解了如何設計高效靈活的多線程應用程序。
上述就是幾本學Java要看的書籍。目前Java軟體工程師的就業機會和人才需求量是非常大的。再加上Java程序員不僅IT專業企業需要,廣大的非IT企業也需要,前景是非常樂觀的。
㈡ java PMD 分別代表什麼.
《Java超級工具》囊括了30個開源工具,專門用於提高任何規模的團隊或者組織中Java開發人員的實踐水平。
每一章都包含針對一個特定工具的一系列短小精悍的小節——無論這個工具用於構建系統、版本控制或者開發流程中的其他方面——這樣你就相當於在一個包裝里得到了30本簡短的書籍。
無論你選擇哪一種開發方式——敏捷、Rational統一過程(RUP)、極限編程(XP)、SCRUM或者其他——本書中的實踐技巧和工具都使得流程自動化和更優化。《Java超級工具》探討關鍵的Java開發問題領域和最佳實踐,並且專注於在開發周期的各個環節能夠提高生產力的開源工具,包括:
構建工具,例如Ant和Maven 2
版本控制工具,例如CVS和Subversion
質量度量工具,例如CheckStyle、PMD、FindBugs和 Jupiter
用來生成良好文檔同時降低寫文檔和維護文檔耗時的工具
單元測試工具,例如JUnit 4、TestNG以及開源測試覆蓋工具Cobertura
集成測試、負載測試和性能測試自動化;網路服務、Swing介面和網路介面的自動化測試
問題管理工具,如Bugzilla和Trac
持續集成工具,例如Continuum、CruiseControl、LuntBuild和Hudson
提高開發實踐水平並且讓你在開發流程中的日子更容易些。《Java超級工具》對於核心開發人員和軟體架構師而言是必讀書目,能讓他們的職業生涯秩序井然。
㈢ 如何更好的構造一個適合小型軟體組織的成熟的過程框架
建立敏捷統一過程框架【內容提要】我建議,軟體企業可根據自身的實際情況,以統一過程(如 RUP)為基礎建立起符合ISO 9001、SW-CMM 和CMMI SE/SW等基準的組織軟體過程體系,同時包含敏捷過程(如XP、Scrum)和重型過程(如TSP)等內容。我把這種混合/集成過程體系叫做「敏捷統一過程框架」(Agile Unified Process Framework,AUPF)。
一、過程成熟度與多樣性
近年來軟體過程改進在國內日益得到重視,一度出現了許多組織紛紛開展 SW-CMM 商業評估的熱潮。迄今全國已有近兩百家軟體企業通過了 SW-CMM、CMMI 各級評估(1 2 3)。這一方面說明原本作為美國軍方標准(如今已成為全球通行的國際標准)的 SW-CMM、CMMI 並非高不可攀,另一方面也說明加強軟體開發規范化管理、提高過程成熟度已經得到了業界的廣泛認同。
嬰兒洗澡椅熱季促銷行政侵奪科學的災難美女博客決賽進行北京手機資費下調
與此同時,國際軟體界的「敏捷熱」、「統一熱」也在持續升溫。上世紀 90年代以DSDM、Scrum、FDD、Crystal、ASD、XP為代表的輕型軟體開發方法逐漸興起,其中又以XP對傳統的「反叛」最為顯著,它憑借與傳統思維相悖的「極端」做法既獲得了許多軟體客戶、管理者和開發人員的積極擁護,也遭到了傳統過程維護者的激烈反駁。2001年2月敏捷聯盟成立以及《敏捷軟體開發宣言》的發表,標志著這場「敏捷運動」達到了一個高峰。而作為吸收了電信、國防等關鍵行業以及IBM、HP、Microsoft等多家國際著名軟體企業過程經驗的商用過程產品,統一過程RUP也在全球取得了廣泛的成功。某著名咨詢機構 2002 年對全球200位軟體相關行業IS/IT經理進行的調查表明:RUP使用率達到了51%,遠高於SW-CMM(27%)和ISO 9000(26%);而且到2003年, 大約50%的被調查者預計其50%以上的項目會使用敏捷方法,14%的被調查者認為其所有的項目會使用敏捷方法 [2] 。
承認軟體過程的多樣性與追求其成熟度一樣重要。「 One size does not fit all 」,事實證明不存在一成不變地適合於所有項目的過程模板。由於軟體過程的周境不同(如業務、資源、團隊、文化),層次不同(如組織過程、項目過程、團隊過程、個體過程),開發類型不同(如新產品、重用、服務、產品線),一時間出現這么多過程方法論並不足怪。
二、過程方法論對比分析
那麼,敏捷、統一過程有哪些特點,與傳統過程有什麼不同呢?下面我們以 SW-CMM 為參照,挑選 3 個最典型的過程方法論( XP 、 RUP 和 TSP )作對比分析。
SW-CMM是一套用來評估軟體組織過程成熟度的基準,闡明組織為了系統地實施軟體過程改進、提高過程成熟度應該做些什麼,但沒有規定如何去做。它的目標通常適用於所有的軟體組織或項目,用來實現目標的大部分關鍵做法也適合中小企業項目,而許多關鍵做法中的子做法主要目的是舉例說明如何在大型政府、國防合同項目中實現總目標,對中小企業項目僅有參考價值。除了對過程的集成性關注不夠,SW-CMM的主要缺點還在於缺少了現代軟體過程的一些重要元素,其KPA主要集中在傳統過程的靜態文檔上(如設計、需求文檔,合同、計劃和報告等),只有很少數的KPA強調了演進式工件(如需求、設計模型,源代碼等)、開發環境的自動化水平以及基於架構的過程。 [6]
為了盡早通過評估,人們往往採用或模仿同樣是由SEI開發的PSP/TSP過程。建立在PSP之上的TSP可能是迄今為止最為嚴格的重型過程。為了提高過程的成熟度和可預測性,TSP強調對過程進行全面精確的度量,這依賴於製作大量復雜繁瑣的數據表格和文檔以及固定程式化流程配合,因而培訓、實施的成本很高。
RUP是一個以用例驅動、構件式架構、迭代遞增式開發為基本特徵,可廣泛地應用於各種類型和規模項目的軟體過程框架,它的基本特徵與需求管理、配置變更管理、OOAD*UML可視化建模、持續檢驗質量等做法一起集中體現了現代軟體開發的最佳實踐。RUP定義了起始、細化、構造、移交4個階段和業務建模、需求、分析設計、實現、測試、部署、配置變更管理、項目管理、環境等9個工種。階段對應著主里程碑的劃分,不同工種的工作流活動在生命周期的迭代中並發進行,具體執行強度可以按需調節,角色、活動和工件也是靈活可配置的。由於RUP提供了極其豐富的內容,所以常被誤解為一個重型過程。通過定製RUP通用框架,針對具體項目去掉不必要的元素並吸收其他敏捷方法,完全可以定製出敏捷輕型的RUP過程(如RUP的XP插件)。
極限編程 XP具有強溝通、簡化設計、迅速反饋等特點,一般只適合於規模小、進度緊、需求不穩定、開發小項目的小團隊。在其12種做法中,測試為先、持續集成、簡化設計、代碼規范、現場客戶、每周40小時工作制、小型發布等早已有之,並不是新的發明,但XP通過巧妙整合把它們發揮到了極致。而代碼集體擁有、結對編程、重構、系統隱喻、計劃游戲等做法並不是在任何情況下都適用的,使用不當往往會起到相反效果。SW-CMM與XP是互補的,Barry Boehm、Watts Humphrey等權威更認為XP與SW-CMM是哲理相容的 [5] 。主要區別在於,後者更關注過程實施在組織管理上的問題,而XP側重於具體的過程執行和開發技術,不含有被SW-CMM認為是使良好的工程和管理實踐制度化的關鍵基礎設施。
許多團隊在一定條件下實踐 XP可能會收到意想不到的好效果,但純而又純的XP的適用面可能也很小。克萊斯勒公司的C3薪資系統項目恐怕是引用次數最多的XP成功案例,但實際上該項目後期還是由於開發團隊與管理者之間的溝通出現問題而遇到了麻煩。一個經典的XP項目偏偏在其核心的溝通要素上出現問題,的確值得人們深思。 [7]
XP以代碼為中心,編碼和設計活動融為一體,弱化了架構,這是它與以架構為中心的RUP的最大不同,而且它沒有業務建模、部署、過程管理等概念。兩者也有不少共同點:它們都採用OO技術(取代傳統結構化方法)、演進式迭代周期(取代傳統瀑布模型),強調風險驅動,以保障可用產品的持續性交付為前提,盡量減少不必要的過程工件,使度量、文檔最小化以獲得彈性和應變能力。由於RUP、XP結合了具體的開發方法,因此比TSP具有更好的可操作性。
敏捷、統一過程滿足了 SW-CMM絕大部分目標及2、3級KPA的要求,對4、5級KPA基本沒有涉及。然而,服從類似SW-CMM這樣高質量的過程框架,並不一定會開發出高質量的產品,生產出高質量產品的真正高質量的過程卻理應被評估為成熟的過程 [6] 。事實上,國際上不少採用RUP的組織已經達到或超過了SW-CMM 3級的水準。通過SW-CMM評估要求組織在過程制度化建設上付出大量復雜、高成本的努力,但過程改進的有效性與復雜性、高成本之間沒有必然聯系。過程選擇的多樣性和SW-CMM目標的通用性決定了過程改進途徑的多樣化。
㈣ 敏捷開發的實踐
敏捷建模(AM)在AM原則的基礎上定義了一組核心實踐(practice)和補充實踐,其中的某些實踐已經是極限編程(XP)中採用了的,並在 Extreme Programming Explained一書中有詳細的論述,和AM的原則一樣,我們在描述這組實踐時,將會注重於建模的過程,這樣你可以從另外一個角度來觀察這些已或XP採用的素材。 ◆Stakeholder的積極參與 我們對XP的現場客戶(On-Site Customer)的概念做了一個擴充:開發人員需要和用戶保持現場的接觸;現場的用戶要有足夠的許可權和能力,提供建構中的系統相關的信息;及時、中肯的做出和需求相關的決策;並決定它們的優先順序。AM把XP的「現場客戶」實踐擴展為「使project stakeholder積極參與項目」,這個project stakeholder的概念包括了直接用戶、他們的經理、高級經理、操作人員、支持人員。這種參與包括:高級經理及時的資源安排決策,高級經理的對項目的公開和私下的支持,需求開發階段操作人員和支持人員的積極參與,以及他們在各自領域的相關模型。
◆正確使用artifact 每個artifact都有它們各自的適用之處。例如,一個UML的活動圖(activity diagram)適合用於描述一個業務流程,反之,你資料庫的靜態結構,最好能夠使用物理數據(physical data)或數據模型(persistence model)來表示。在很多時候,一張圖表比源代碼更能發揮作用,一圖勝千言,同樣,一個模型也比1K的源代碼有用的多,前提是使用得當(這里借用了 Karl Wieger的Software Requirements中的詞彙)。因為你在研究設計方案時,你可和同伴們和在白板上畫一些圖表來討論,也可以自己坐下來開發一些代碼樣例,而前一種方法要有效的多。這意味著什麼?你需要了解每一種artifact的長處和短處,當你有眾多的模型可供選擇的時候,要做到這一點可沒有那麼容易。
◆集體所有制 只要有需要,所有人都可以使用、修改項目中的任何模型、任何artifact。
◆測試性思維 當你在建立模型的時候,你就要不斷的問自己,「我該如何測試它?」如果你沒辦法測試正在開發的軟體,你根本就不應該開發它。在現代的各種軟體過程中,測試和質保(quality assurance)活動都貫穿於整個項目生命周期,一些過程更是提出了「在編寫軟體之前先編寫測試」的概念(這是XP的一項實踐:「測試優先」)。
◆並行創建模型 由於每種模型都有其長處和短處,沒有一個模型能夠完全滿足建模的需要。例如你在收集需求時,你需要開發一些基本用例或用戶素材,一個基本用戶界面原型,和一些業務規則。再結合實踐切換到另外的Artifact,,敏捷建模者會發現在任何時候,同時進行多個模型的開發工作,要比單純集中於一個模型要有效率的多。
◆創建簡單的內容 你應該盡可能的使你的模型(需求、分析、架構、設計)保持簡單,但前提是能夠滿足你的project stakeholder的需要。這就意味著,除非有充分的理由,你不應該隨便在模型上畫蛇添足--如果你手頭上沒有系統認證的功能,你就不應該給你的模型增加這么一個功能。要有這樣的勇氣,一旦被要求添加這項功能,自己就能夠馬上做到。這和XP的實踐「簡單設計」的思想是一樣的。
◆簡單地建模 當你考慮所有你能夠使用的圖表(UML圖、用戶界面圖、數據模型等)時,你很快會發現,大部分時候你只需要這些圖表符號的一部分。一個簡單的模型能夠展示你想要了解的主要功能,例如,一個類圖,只要能夠顯示類的主要責任和類之間的關系就已經足夠了。不錯,編碼的標准告訴你需要在模型中加入框架代碼,比如所有的get和set操作,這沒有錯,但是這能提供多少價值呢?恐怕很少。
◆公開展示模型 你應當公開的展示你的模型,模型的載體被稱為「建模之牆」(modeling wall)或「奇跡之牆(wall of wonder)」。這種做法可以在你的團隊之間、你和你的project stakeholder之間營造出開放誠實的溝通氛圍,因為當前所有的模型對他們都是舉手可得的,你沒有向他們隱藏什麼。你把你的模型貼到建模之牆上,所有的開發人員和project stakeholder都可以看建模之牆上的模型,建模之牆可能是客觀存在的,也許是一塊為你的架構圖指定的白板,或是物理數據模型的一份列印輸出,建模之牆也可能是虛擬的,例如一個存放掃描好的圖片的internet網頁。如果你想要多了解一些相關的資料,你可以看看Ellen Gottesdiener的Specifying Requirements With a Wall of Wonder。
◆切換到另外的Artifact 當你在開發一個artifact(例如用例、CRC卡片、順序圖、甚至源碼),你會發現你卡殼了,這時候你應當考慮暫時切換到另一個artifact。每一個artifact都有自己的長處和短處,每一個artifact都適合某一類型的工作。無論何時你發現你在某個artifact上卡殼了,沒辦法再繼續了,這就表示你應該切換到另一個artifact上去。舉個例子,如果你正在製作基本用例,但是在描述業務規則時遇到了困難,你就該試著把你的注意力轉移到別的artifact上去,可能是基本用戶界面原型、CRC模型,可能是業務規則、系統用例、或變化案例。切換到另一個artifact上去之後,你可能就立刻不再卡殼了,因為你能夠在另一個artifact上繼續工作。而且,通過改變你的視角,你往往會發現原先使你卡殼的原因。
◆小增量建模 採用增量開發的方式,你可以把大的工作量分成能夠發布的小塊,每次的增量控制在幾個星期或一兩個月的時間內,促使你更快的把軟體交付給你的用戶,增加了你的敏捷性。
◆和他人一起建模 當你有目的建模時你會發現,你建模可能是為了了解某事,可能是為了同他人交流你的想法,或是為了在你的項目中建立起共同的願景。這是一個團體活動,一個需要大家有效的共同工作才能完成的活動。你發現你的開發團隊必須共同協作,才能建立一組核心模型,這對你的項目是至關重要的。例如,為了建立系統的映像和架構,你需要和同組成員一起建立所有人都贊同的解決方案,同時還要盡可能的保持它的簡單性。大多數時候,最好的方法是和另一些人討論這個問題。
◆用代碼驗證 模型是一種抽象,一種能夠正確反映你正在構建的系統的某個方面的抽象。但它是否能運行呢?要知道結果,你就應該用代碼來驗證你的模型。你已經用一些HTML頁面建立了接受付款地址信息的草圖了嗎?編碼實現它,給你的用戶展示最終的用戶界面,並獲取反饋。你已經做好了表示一個復雜業務規則邏輯的UML順序圖了嗎?寫出測試代碼,業務代碼,運行測試以保證你做的是對的。永遠也別忘了用迭代的方法開發軟體(這是大多數項目的標准做法),也別忘了建模只是眾多任務中的一個。做一會兒建模、做一會兒編碼、做一會兒測試(在其它的活動之中進行)。
◆使用最簡單的工具 大多數的模型都可以畫在白板上,紙上,甚至紙巾的背面。如果你想要保存這些圖標,你可以用數碼相機把它們拍下來,或只是簡單的把他們轉錄到紙上。這樣做是因為大多數的圖表都是可以扔掉的,它們只有在你畫出模型並思考一個問題的時候才有價值,一旦這個問題被解決了它們就不再有意義了。這樣,白板和標簽往往成為你建模工具的最佳選擇:使用畫圖工具來創建圖表,給你重要的project stakeholder看。只有建模工具能夠給我們的編程工作提供價值(例如代碼自動生成)時才使用建模工具。你可以這樣想:如果你正在創建簡單的模型,這些模型都是可以拋棄的。你建模的目的就是為了理解,一旦你理解了問題,模型就沒有存在的必要了,因此模型都是可以丟棄的,這樣,你根本就不必要使用一個復雜的建模工具。 ◆使用建模標准 這項實踐是從XP的編碼標准改名而來,基本的概念是在一個軟體項目中開發人員應該同意並遵守一套共同的建模標准。遵守共同的編碼慣例能夠產生價值:遵守你選擇的編碼指南能夠寫出干凈的代碼,易於理解,這要比不這么做產生出來的代碼好得多。同樣,遵守共同的建模標准也有類似的價值。可供選擇的建模標准有很多,包括對象管理組織(OMG)制定的統一建模語言ML),它給通用的面向對象模型定義了符號和語義。UML開了一個好頭,但並不充分-就像你在Be Realistic About The UML中看到的,UML並沒有囊括所有可能的的建模artifact。而且,在關於建立清楚可看的圖表方面,它沒有提供任何建模風格指南。那麼,風格指南和標准之間的差別在何處呢。對源代碼來說,一項標准可能是規定屬性名必須以attributeName的格式,而風格指南可能是說在一個單元中的一段控制結構(一個if語句,一段循環)的代碼縮進。對模型來說,一項標准可能是使用一個長方形對類建模,一項風格指南可能是圖中子類需要放在父類的下方。
◆逐漸應用模式 高效的建模者會學習通用的架構模式、設計模式和分析模式,並適當的把它們應用在模型之中。然而,就像Martin Fowler在Is Design Dead中指出的那樣,開發人員應當輕松的使用模式,逐漸的應用模式。這反映了簡單的價值觀。換言之,如果你猜測一個模式可能適用,你應當以這樣的方式建模:先實現目前你需要的最小的范圍,但你要為日後的重構留下伏筆。這樣,你就以一種可能的最簡單的方式實現了一個羽翼豐滿的模式了。就是說,不要超出你的模型。舉一個例子,在你的設計中,你發現有個地方適合使用GoF的Strategy模式,但這時候你只有兩個演算法要實現。最簡單的方法莫過於把演算法封裝為單獨的類,並建立操作,能夠選擇相應的演算法,以及為演算法傳遞相關的輸入。這是Strategy模式的部分實現,但你埋下了伏筆,日後如有更多的演算法要實現,你就可以重構你的設計。並沒有必要因為Strategy模式需要,就建立所有的框架。這種方法使你能夠輕松的使用模式。
◆丟棄臨時模型 你創建的大部分的模型都是臨時使用的模型--設計草圖,低精度原型,索引卡片,可能架構/設計方案等等--在它們完成了它們的目的之後就再不能提供更多的價值了。模型很快就變得無法和代碼同步,這是正常的。你需要做出決定:如果「同步更新模型」的做法能夠給你的項目增添價值的話,那就同步更新模型;或者,如果更新它們的投入將抵消它們能夠提供的所有價值(即負收益),那就丟棄它們。
◆合同模型要正式 在你的系統需要的信息資源為外部組織所控制的時候,例如資料庫,舊有系統和信息服務,你就需要合同模型。一個合同模型需要雙方都能同意,根據時間,根據需要相互改變。合同模型的例子有API的細節文檔,存儲形式描述,XML DTD或是描述共享資料庫的物理數據模型。作為法律合同,合同模型通常都需要你投入重要資源來開發和維護,以確保它的正確、詳細。你的目標是盡量使你系統的合同模型最少,這和XP的原則traveling light是一致的。注意你幾乎總是需要電子工具來建立合同模型,因為這個模型是隨時需要維護的。
◆為交流建模 建模的次要原因是為了和團隊之外的人交流或建立合同模型。因為有些模型是給團隊之外的客戶的,你需要投入時間,使用諸如文字處理器,畫圖工具包,甚至是那些「被廣告吹得天花亂墜」的CASE工具來美化模型。
◆為理解建模 建模的最重要的應用就是探索問題空間,以識別和分析系統的需求,或是比較和對照可能的設計選擇方法,以識別可能滿足需求的、最簡單的解決方案。根據這項實踐,你通產需要針對軟體的某個方面建立小的、簡單的圖表,例如類的生命周期圖,或屏幕順序,這些圖表通常在你完成目的(理解)之後就被丟棄。
◆重用現有的資源 這是敏捷建模者能夠利用的信息財富。例如,也許一些分析和設計模式適合應用到系統上去,也許你能夠從現有的模型中獲利,例如企業需求模型,業務過程模型,物理數據模型,甚至是描述你用戶團體中的系統如何部署的模型。但是,盡管你常常搜索一些比較正確的模型,可事實是,在大多數組織中,這些模型要麼就不存在,要麼就已經過期了。
◆非到萬不得已不更新 你應當在你確實需要時才更新模型,就是說,當不更新模型造成的代價超出了更新模型所付出的代價的時候。使用這種方法,你會發現你更新模型的數量比以前少多了,因為事實就是,並不是那麼完美的模型才能提供價值的。我家鄉的街道圖已經使用了5年了,5年我自己街道並沒有改變位置,這張地圖對我來說還是有用的。不錯,我可以買一張新地圖,地圖是每年出一次的,但為什麼要這么麻煩呢?缺少一些街道並沒有讓我痛苦到不得不投資買一份新地圖。簡單的說,當地圖還管用的時候,每年花錢買新地圖是沒有任何意義的。為了保持模型、文檔和源代碼之間的同步,已經浪費了太多太多的時間和金錢了,而同步是不太可能做到的。時間和金錢投資到新的軟體上不是更好嗎?
確實不錯的主意
以下的實踐雖然沒有包括在AM中,但是可以做為AM的一份補充:
◆重構 這是一項編碼實踐。重構,就是通過小的變化,使你的代碼支持新的功能,或使你的設計盡可能的簡單。從AM的觀點來看,這項實踐可以保證你在編碼時,你的設計干凈、清楚。重構是XP的一個重要部分。
◆測試優先設計 這是一項開發實踐。在你開始編寫你的業務代碼之前,你要先考慮、編寫你的測試案例。從AM的觀點來看,這項實踐強制要求你在寫代碼之前先通盤考慮你的設計,所以你不再需要細節設 計建模了。測試優先設計是XP的一個重要部分。
㈤ 自學JAVA
最近論壇上看到好幾個朋友都在問,如何學習 Java的問題,「我已經學習了J2SE,怎麼樣才能轉向J2EE?」,「我看完了Thinking in Java, 可以學習J2EE了么?」。於是就有了寫這篇文章的想法,希望能幫助初學者少走一些彎路。也算是對自己幾年來學習Java的一個總結吧。
在開始之前有必要再討論一下J2ME,J2SE,J2EE這些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用於嵌入式Java,如手機,PDA等等。J2SE,Java 2 Platform,Standard Edition,我們通常所說的JDK(Java Development Kit)包含在此,是J2EE的基礎。J2EE,Java 2 Platform,Enterprise Edition,就是所謂的企業級Java。這些只是從API級別上的劃分,實際上Sun給J2EE的定義是:開發基於組件的多層的企業級應用的規范。也就是為各種不同的技術定義一個Java的規范,使這些不同的技術結合起來,在Java平台上構建強壯的企業級應用。從這一點來看,J2EE這個概念應該是涵蓋J2ME,J2SE的。比如一個典型的J2EE應用,網上商店,它支持web方式下訂單,也支持手機下訂單。顯然必須用到J2SE,J2ME。所以也就不存在所謂的從J2SE轉向J2EE的問題了,只是後者包含的范圍更廣而已。
來看看Sun給出的J2EE 相關技術主要分為幾大塊。
1. Web Service技術
- Java API for XML Processing (JAXP)
- Java API for XML Registries (JAXR)
- Java API for XML-based RPC (JAX-RPC)
- SOAP with Attachments API for Java (SAAJ)
2. 組件模型技術(Component Model Technologies)
- Java Servlet
- JavaServer Pages
- JavaServer Faces
- Enterprise JavaBeans
- Java Message Service
- J2EE Connector Architecture
3. 管理技術(Management Technologies)
- J2EE Deployment Specification
- J2EE Management Specification
- J2EE Client Provisioning
- Java Authorization Contract for Containers
4. 其他相關技術(Other J2EE Technologies)
- JDBC
- Java Data Objects (JDO)
- CORBA (Java IDL and Java RMI-IIOP)
- JavaMail
- Transactions
如此之多的技術難免使初學者無所適從,望而卻步。即使是一位經驗豐富的J2EE開發者,又有幾個人敢說J2EE相關的技術我都熟練掌握了。不過作為一名普通J2EE應用程序的開發者來說,我們只需要重點學習其中的一部分技術就可以了,對於其他部分只要做到心中有數,哪天需要用到了知道跑哪裡去找到資料就行了。以我個人的觀點,下面這些技術是一般J2EE應用開發人員所必須熟練掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。還有JAXP等XML相關技術,Java Message Service,Java Mail,JDO等等是最好應該掌握的。其他Management Technologies,Connector Architecture等等主要是給容器提供商中間件提供商參考的,應用開發者不需要怎麼關心,等用到了再去學習也不遲。
語言學習篇
首先是J2SE基礎。學習一門新技術,無外乎閱讀和實踐了。而一本好的參考書對於初學者來說顯得格外重要。現在市面上的 Java書籍可以說是鋪天蓋地,質量也是良莠不齊,令初學者無所適從。所以還是先推薦幾本書籍吧。目前對於Java基礎知識,大家一般都比較推薦兩本書<>和<< Core Java? 2, Volume I: Fundamentals >>。第一本書不必多說了,Bruce Eckel的大作,Jolt獲獎書籍。內容比較全面,基本涵蓋了java語言的方方面面。這本書提供了相當豐富的例子,非常有利於對學習內容的了解。另外書中第一部分對於OO基本書籍的介紹,我覺得對於剛接觸OO的人來說幫助會很大。而且此書是Open Source的,可以從作者網上下載http://www.mindview.net/Books/TIJ/而對於習慣於讀中文版的學習者來說,侯捷翻譯的中文版是不錯的選擇。要說這本說的缺點可能就是對於初學者來說厚了一點,這也是一些人並不推薦此書作為初學者學慣用書的原因吧。後面一本<< Core Java? 2, Volume I: Fundamentals >>。目前已經是第七版了,單從它出版的次數來看也可以看出此書受歡迎的程度,這本書特點也是講述比較全面系統,基本上一路啃下來的話Java語言基礎應該算過關了。缺點也是太厚了,有點像參考手冊,前面部分花了不少篇幅講Swing和Applet,可能對初學者不是很有用。還有一些像<< Java in a nutshell>>也是比較不錯的基礎書籍。
學習了基本的語言基礎,別忘了最重要也是最有用的資料還是JDK文檔。從你學習java的第一天開始JDK文檔應該是常備手頭了。如果你碰到問題首先想到的是到論壇上去提問而不是查閱Jdk文檔,那先別繼續往下學習了,學會查JDK文檔先。不誇張的說在我們的初學者論壇中60%的問題是光查一下JDK文檔就能解決問題的。最新JDK Documentation下載地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp)不能光說不練,同一下載頁面把JDK給下載回來。安裝完後有一點我想提一下,安裝路徑下有一個src.zip(有些jdk版本是src.jar),好東西啊---JDK源代碼,老是有人在論壇上問哪裡有JDK源代碼下載,你說東西就放在你家裡還到處找。有了這個有些問題就需要在論壇上跟人家爭來爭去了,翻開源代碼瞧一下什麼疑問都沒有了。幾個最重要的命令行工具是
javac: 編譯源文件到class文件
java: 運行class
jar: 打包工具。
javadoc: 生成java doc的工具。
對於初學java的人來說,我不推薦使用IDE而直接用文本編輯器,然後用命令行編譯運行。這樣有利於理解CLASSPATH,PATH這些最基本概念。CLASSPATH是初學者比較容易感覺迷惑的地方。現在的IDE太聰明了,給個名字就給你自動生成java source code,自動編譯。可能你運行完了你的第一個Hello World程序,還不知道java和javac是用來做什麼的。至於實際的項目開發,一款合適的IDE還是十分重要的,我們稍後再對java開發工具做一些介紹。
J2EE基礎和Java語言進階
學習完語言基礎,就可以比較自然地轉入J2EE實際技術的學習了。J2EE實在是比較龐雜,而EJB,Servlet,這些核心技術是作為每一個J2EE開發人員所需要掌握的。關於servlet,我比較推薦<>和<>,第一本是Sun推薦的Servlet教材。第二本是當年Amazon最暢銷Java書籍,五星級書籍。這本書機械工業出版社有中文版叫<<與JSP權威指南>>,感覺翻譯得還可以,第二版好像還沒有看到有中文版。兩本書都全面系統地介紹了JSP和Sevlet知識,從web伺服器配置,JSP,Servlet基本編程,標記庫(Tag Lib),過濾器,事件框架都有很好地描述。提供地例子也比較實用。對於EJB學習,比較著名有兩本書,<< Enterprise JavaBeans, 3nd Edition>>和<< Mastering Enterprise Java Beans Third Edition>>,兩位作者Richard Monson,Ed Roman都是屬於業界重量級人物。而Richard Monson本身就是EJB規范專家組成員。對我來說,兩本書難分優劣,第二本書有個好處就是可以免費下載http://www.theserverside.com/books/wiley/masteringEJB/index.tss。
還是那句話,不能光說不練,不過J2EE的練習做起來有一點麻煩,應用伺服器是不可少的,最好還得准備個輕量級的資料庫。下面簡單介紹一下這些工具。
web伺服器(Servlet Container)方面有。
Tomcat: http://jakarta.apache.org/tomcat/
Jetty: http://jetty.mortbay.org/jetty/
應用伺服器常用的有,
Jboss: http://www.jboss.org/procts/index
Weblogic: http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/procts/server
WebSphere: http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN。
Tomcat,Jetty,Jboss都是Open Source。Weblogic和WebSphere是J2EE伺服器中的老大級人物,價格也不菲。不過對於開發者有免費的試用版下載。
如果單單只是學習Servlet,推薦使用Tomcat,它是Sun官方指定的Servlet,JSP規范的參考實現。對初學者最重要的是它使用比較簡單,自帶文檔比較齊全,使用者眾多,有什麼問題容易在論壇上面得到幫助。如果學習EJB的話,推薦使用Jboss,不僅僅是因為它是Open Source的,主要是配置比較簡單,使用方便。比如說對於連接資料庫,對於常用的MySQL,Oracle,MS SQL等等都提供了Sample Config文件,直接拿過來做些小改動扔到Deploy目錄下就可以用DataSource了,部署J2EE應用也簡單,把整個.ear或者.war扔到deploy下就可以了。唯一不方便的地方是從Jboss3.0開始,它的文檔開始收費了。但是對於一些基本的配置,在網上還是非常容易找到的,畢竟它太流行了。至於Weblogic,也比較容易使用,不過比起Jboss來個頭大了很多,通過強大的管理界面使得一些常用的配置工作變得十分簡單。和Jboss比起來它的文檔就太多了,簡直是有點羅里八嗦,比如要部署一個.ear文件,一般我們也就是直接扔到domain下的applications目錄下就會自動deploy了,但是要看它的文檔可是長篇大論,容易嚇著初學者,以為這又是什麼高深的學問。至於WebSphere,個人不推薦初學者使用,相比前倆個Server比較難使,而且狂吃內存。不過在企業級市場這個傢伙表現不俗,畢竟是出生於IBM這樣的豪門。
資料庫方面,目前常見的主要有PostgreSQL,MySQL,Oracle,MS SQL,DB2等等。前面兩個是開源資料庫,後面幾個基本上壟斷著大部分的資料庫市場。對於初學者用來做做EJB,JDBC的練習,我推薦MySQL,理由還是很簡單,開源軟體不要錢,個頭小使用方面,用戶眾多文檔齊全。下載地址http://www.mysql.com/procts/mysql/。PostgreSQL也可以考慮,不過國內使用者遠不如MySQL多,所以要在論壇上問起問題來就少方便一些了,下載地址http://www.pervasive-postgres.com/downloads/。至於後面那些比較重量級的資料庫,為了做做練習而言就不用考慮了, 咱也花不起這個錢啊。
學習完J2EE的這些具體技術,這個時候進行基本的J2EE開發應該是不成問題了。此時應該考慮提高自己的代碼質量了。這里我強烈推薦Martin Fowler的<>,這本書不是一本非常實際的書,作者完全是手把手地教你如何提高代碼質量,從具體地代碼中告訴你什麼是代碼的Bad Smell,如何去掉這些Bad Smell。不少書評是這么說的,這本書對於初級,中級的讀者幫助是立桿見影的。至少就我接觸到的幾個學習編程不久的程序員,編碼質量在短期內都有很大提高。當然重構(Refactoring)這一概念並不只針對Java語言的,它對所有OO語言都是適用的。重構的概念是如此深入人心,以至於今天幾乎所有流行的IDE工具都有對重構的支持。這里我還想再推薦一本<>。從C++過來的程序員都知道<>在C++領域的地位,至今還流傳著這樣的趣話,C++程序員分為兩種,一種是讀過<>的,另一種是沒有讀過C++的。雖然這本<>在Java領域的影響也許沒有那麼大,但對於Java程序員絕對有相當的指導價值。作者是Sun公司的Joshua Bloch,java Collection framework的設計者。作者站在JDK設計者的角度向你介紹他的Best Practice,應該這樣做而不應該那樣做,對於JDK中某些API設計的缺陷他也毫不袒護的指出。Java語言之父James Gosling為此書寫的前言是這么說的「I sure wish I had had this book ten years ago。 Some might think that I don't need any Java books, but I need this one」。這本書會讓你覺得原來你對Java還是有很多東西不了解的。舉個例子來說,對象的equals方法,我們認為它很簡單,也許你每天都在為你新寫的Class重載這個方法,但是你在重載的時候注意過「自反」,「對稱」,「傳遞」這些必須要考慮的因素,你是否同時還小心謹慎的重載了hashcode這個方法?如果沒有,建議你要讀一下這本書。讀完這本書,你會覺得離Java的距離更近了。上面兩本書都出過中文版,後面一本<>還有兩個版本的中文版,第一次翻譯的比較差一點,後來機械工業出版社又委託潘愛民先生重新翻譯了一遍。同一本書在同一個出版社連續被翻譯了兩次也說明國內出版界對這本書還是比較重視的。
這個階段,在看書的同時,可以結合著學習一些優秀的開源項目的源代碼。這些開源項目的代碼風格,注釋都是值得借鑒的。實在太懶也別忘了手頭上還有個Jdk的源代碼。其實也不用刻意去找源代碼,在實際的J2EE項目開發中,基本上都會用到一些優秀的開源項目。Framework可能會用到Spring,Struts,Log機制基本上都會JarkartaCommons Log或者Log4j,單元測試會大多會用Junit,結合項目閱讀一下其中的一些源代碼,既可以提高自己又對項目會有所幫助,說不定因此而得到PM的賞識呢。一舉兩得,何樂而不為呢。呵呵,有點扯遠了。過了初學者階段,該學會如何找到適合自己的Java書籍了。歷經數十載,今天的Java技術已經變的如此之龐雜,我相信即使窮凈一個人畢生之精力也不可能把Java所有的相關技術都學通,何況新技術還在層出不窮地推出,3年之前誰會知道Struts會成為Web框架事實上的工業標准。2年之前誰會知道Hibernate會在今天獨領風騷。既然已經不能指望一次性把java技術的方方面面都學個通,在實際中也只能是需要什麼技術再學習什麼技術了。而能否選擇一本好的參考書籍帶來的就是事半功倍和事倍工半的效果。所以我覺得花點時間放在選擇書籍上面還是很值得的,否則你在後面只會花更多的時間。下面我談談自己選擇書籍的一些經驗,不一定正確。首先看作者,像上面提到的那些書的作者,都是業界鼎鼎大名的,選擇他們的書一般錯不了。大家看的書多了,自己胸中自然也會有一個list,哪些作者是信得過的。二看出版社,計算機書籍方面,Oreilly,Addison-Wesley都是公認比較好的出版社。對於目前比較流行的Java技術,Oreilly的< in Action>>系列是不錯的選擇。另外我還會去看看Amazon網站(http://www.amazon.com/)的書評,一般小於3星級的書我都不會考慮。還有一個好去處theserverside,http://www.theserverside.com/的書評,這里的書評比較有趣,往往都有很激烈的爭論,裡面經常會看到一些名人在發言。我要向所有Java學習者推薦,如果我的收藏夾裡面只能存放兩個網站,我會選擇java.sun和theserverside。在這里你可以了解最新的Java動態,可以學習第一手的Java資料,可以看到Java高手們(裡面不乏業界大腕)激烈辯論。in Action>>
到此階段,Java Developer的基本功底應該算是打好了吧,往後就是不斷學習嘍。結束這一段之前,最後再介紹一本書Oreilly的<, Second Edition >>,因為我覺得多線程編程屬於Java基本功,每一個想學好Java的人都應該好好掌握。
提高篇
在這個階段應該從軟體架構,Framework層次上來學習了。作為面向對象的聖經<>, 這本書是不得不推薦的。不用再多說了,這本在面向對象領域地位完全是屬於教父級別的。不管你學習的是什麼OO語言,不管你現在是用.Net還是J2EE開發,這本書都是你進階之路上的必讀之書。而<>則專門針對於J2EE來討論設計模式,書中Sun Java Center的資深設計師描述了J2EE關鍵技術的模式。最佳實踐,設計策略和經過驗證的解決方案。對於每一個希望成為J2EE 架構師或者設計師,這本書值得一讀。學習設計模式的時候,建議是結合實際的源代碼來看,比如看看Junit源代碼,你可以看到很多設計模式優雅的實現,作者之一Erich Gamma本身就是<>的作者。至於J2EE的設計模式,Sun還開辟了專門的空間http://java.sun.com/blueprints/patterns/,裡面有對常用模式的討論又提供了詳細的源代碼樣例。正如Grady Booch所說,模式對於普遍問題提供了通用的解決方案,利用模式就等於擁有一個強大的專家隊伍。如果你還沒有學習,現在就開始吧。此外對於面向對象方法論,極限編程的思想也應該有所了解http://www.extremeprogramming.org/。對於J2EE項目的具體實施,Rod Johnson的<>也很有價值,該書以作者豐富的實戰經驗向我們展示如何用盡可能簡單的解決方案構建J2EE 應用,書中作者第一次提出這樣的觀點,很多時候,J2EE應用完全沒有必要用到EJB,對於言必稱EJB的廣大J2EE開發者來說,怎麼說也有點驚世咳俗的味道。當然,作為Servlet和JDO兩個專家組的成員,這可不是作者信口胡騶的。今天風靡Java世界的Spring框架最初便是源於此書,而IOC,AOP等概念更是被時下的java開發者掛在嘴邊。最後,作為對Java的深入學習,Java技術的各個Specification也有必要一讀。暫時就寫到這里吧。
㈥ 軟體設計師考試考點分析與真題詳解的目錄
比特培訓-24期(2017年上)-軟體設計師培訓課件,免費下載
鏈接:https://pan..com/s/1ewtz01HsJL16rSVRzm3-7A
比特培訓-24期(2017年上)-軟體設計師培訓課件|00.2015年-2016年試題及解析|14.多媒體和知識產權(2017年下半年-列印版本)-軟設.doc|13.網路安全(2017年上半年-列印版本-改革版本).docx|12.資料庫列印版本(2017年上格式ok).docx|11.面向對象設計模式--列印版本(2017年上-Java版本-24期).docx|10.UML分析與設計(2017年上-第24期列印版本).doc|09.面向對象及Java實踐(2017年上--完整列印版本).docx|08.操作系統原理與技術(列印版本-2017年上-24期).doc|07.常用演算法設計方法(2017年上-列印版本--鄧少勛--有答案--改革版本).docx|06.計算機體系結構-列印版本(24期-2017年上).docx|05.數據結構(2017年上-列印版本).docx|04.數據流圖與資料庫分析與設計(2017年上-列印版本).doc|03.程序設計語言基礎和編譯原理(2017年上半年-列印版本).doc|02.計算機網路概述列印版(2017年上).docx。
㈦ PMI-ACP與PMP認證有承接關系嗎
ACP和PMP是一個都是PMI體系下的,PMP全稱Project Management Professional,中文名字:項目管理專業人士認證。
PMI-ACP的中文含義為敏捷項目管理專業人士,一般指的是PMI-ACP認證考試,也就是我們常說的PMI-ACP考試。PMI-ACP認證驗證了從業人士理解、應用敏捷原則及在項目上實踐的能力。它與別的認證不同在於它要求敏捷培訓、敏捷項目工作經驗以及包含敏捷實踐、工具、技巧考試的結合。它同樣也結合了其他敏捷方法,包括SCRUM(敏捷開發)、XP(極限編程)和LeanDevelopment(精益敏捷)。
PMP是傳統項目管理模式,ACP是起始於軟體工程,同時在向其他行業領域推廣,所以ACP更適合軟體行業,但有PMP的知識作為支持就是更強的組合。
ACP和PMP是一個都是PMI體系下的認證,PMP更多的是項目管理框架,ACP會是側重敏捷開發管理。
一般情況下,建議先學習PMP,再參加ACP的學習。如果你的企業現在在用敏捷或者打算轉型敏捷,那就先學ACP,後學PMP。
㈧ 有沒有一些簡單的java程序書籍
一、Java編程入門類
對於沒有Java編程經驗的程序員要入門,隨便讀什麼入門書籍都一樣,這個階段需要你快速的掌握Java基礎語法和基本用法,宗旨就是「囫圇吞棗不求甚解」,先對Java熟悉起來再說。用很短的時間快速過一遍Java語法,連懵帶猜多寫寫代碼,要「知其然」。
1、《Java編程思想》
在有了一定的Java編程經驗之後,你需要「知其所以然」了。這個時候《Java編程思想》是一本讓你知其所以然的好書,它 對於基本的面向對象知識有比較清楚的交待,對Java基本語法,基本類庫有比較清楚的講解,可以幫你打一個良好的Java編程基礎。這本書的缺點是實在太 厚,也比較羅嗦,不適合現代人快節奏學習,因此看這本書要懂得取捨,不是每章每節都值得一看的,挑重點的深入看就可以了。
2、《Agile Java》中文版
這本書是出版社送給我的,我一拿到就束之高閣,放在書櫃一頁都沒有翻過,但 是前兩天整理書櫃的時候,拿出來一翻,竟然發現這絕對是一本好書!這本書一大特點是以單元測試和TDD來貫穿全書的,在教你Java各種重要的基礎知識的 過程中,潛移默化的影響你的編程思維走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的語法為基礎講解,要學習JDK5.0的新語法也不錯。還 有這本書對於內容取捨也非常得當,Java語言畢竟類庫龐大,可以講的內容太多,這本書選擇的內容以及內容的多寡都很得當,可以讓你以最少的時間掌握 Java最重要的知識,順便培養出來優秀的編程思路,真是一本不可多得的好書。
雖然作者自己把這本書定位在入門級別,但我不確定這本書用來入門是不是稍微深了點,我自己也准備有空的時候翻翻這本書,學習學習。
二、Java編程進階類
打下一個良好的Java基礎,還需要更多的實踐經驗積累,我想沒有什麼捷徑。有兩本書值得你在編程生涯的這個階段閱讀,培養良好的編程習慣,提高你的代碼質量。
1、《重構 改善既有代碼的設計》
這本書名氣很大,不用多介紹,可以在閑暇的時候多翻翻,多和自己的實踐相互印證。這本書對產生影響是潛移默化的。
2、《測試驅動開發 by Example》
本書最大特點是很薄,看起來沒有什麼負擔。可以找一個周末的下午,一邊看,一邊照做,一個下午就把書看完,這本書的所有例子跑完了。這本書的作用是通過實戰讓你培養TDD的思路。
三、Java架構師之路
到這個階段,應該已經非常嫻熟的運用Java編程,而且有了一個良好的編程思路和習慣了,但是可能還缺乏對應用軟體整體架構的把握,現在就是邁向架構師的第一步。
1、《Expert One-on-One J2EE Design and Development》
這本書是Rod Johnson的成名著作,非常經典,從這本書中的代碼誕生了springframework。但是好像這本書沒有中譯本。
2、《Expert One-on-One J2EE Development without EJB》
這本書由gigix組織翻譯,多位業界專家參與,雖然署名譯者是JavaEye,其實JavaEye出力不多,實在是忝居譯者之名。
以上兩本書都是Rod Johnson的經典名著,Java架構師的必讀書籍。在所推薦的這些書籍當中,是看過的最仔細,最認真的書,當時讀這本書幾乎是廢寢忘食的一氣讀完的, 有小時候挑燈夜讀金庸武俠小說的勁頭,書中所講內容和自己的經驗知識一一印證,又被無比精闢的總結出來,讀完這本書以後,有種被打通經脈,功力爆增的感 覺。
但是後來看過一些其他人的評價,似乎閱讀體驗並沒有那麼high,也許是因為每個人的知識積累和經驗不同導致的。那個時候剛好是經驗知識積累已經足夠豐富,但是還沒有系統的整理成型,讓這本書一梳理,立刻形成完整的知識體系了。
3、《企業應用架構模式》
Martin的又一本名著,但這本書只是泛泛的看了一遍,並沒有仔細看。這本書 似乎更適合做框架的人去看,例如如果打算自己寫一個ORM的話,這本書是一定要看的。但是做應用的人,不看貌似也無所謂,但是如果有空,還是推薦認真看 看,會讓知道框架為什麼要這樣設計,這樣的層次可以晉升到框架設計者的角度去思考問題。Martin的書向來都是推崇,但是從來都沒有像Rod Johnson的書那樣非常認真去看。
4、《敏捷軟體開發原則、模式與實踐》
Uncle Bob的名著,敏捷的經典名著,這本書比較特別,與其說是講軟體開發過程的書,不如說講軟體架構的書,本書用了很大篇幅講各種面向對象軟體開發的各種模式,個人以為看了這本書,就不必看GoF的《設計模式》了。
四、軟體開發過程
了解軟體開發過程不單純是提高程序員個人的良好編程習慣,也是增強團隊協作的基礎。
1、《UML精粹》
UML其實和軟體開發過程沒有什麼必然聯系,卻是軟體團隊協作溝通,撰寫軟體文檔需要的工具。但是UML真正實用的圖不多,看看這本書已經足夠了,完全沒有必要去啃《UML用戶指南》之類的東西。要提醒大家的是,這本書的中譯本翻譯的非常之爛,建議有條件的看英文原版。
2、《解析極限編程 擁抱變化》XP
這是Kent Beck名著的第二版,中英文對照。沒什麼好說的,必讀書籍。
3、《統一軟體開發過程》UP
其實UP和敏捷並不一定沖突,UP也非常強調迭代,測試,但是UP強調的文檔和過程驅動卻是敏捷所不取的。不管怎麼說,UP值得去讀,畢竟在中國真正接受敏捷的企業很少,還是需要用UP來武裝一下自己的,哪怕是披著UP的XP。
4、《敏捷建模》AM
Scott Ambler的名著,這本書非常的progmatic,告訴怎麼既 敏捷又UP,把敏捷和UP統一起來了,又提出了很多progmatic的建議和做法。可以把《解析極限編程擁抱變化》、《統一軟體開發過程》和《敏捷建 模》這三本書放在一起讀,看XP和UP的不同點,再看AM是怎麼統一XP和UP的,把這三種理論融為一爐,形成自己的理論體系,那麼也可以去寫書了。
五、軟體項目管理
如果突然被領導提拔為項目經理,而完全沒有項目管理經驗,肯定會心裡沒底;如果覺得自己管理項目不善,很想改善項目管理能力,那麼去考PMP肯定是遠水不解近渴的。
1、《快速軟體開發》
這也是一本名著。可以這樣說,有本書在手,就有了一個項目管理的高級參謀給 你出謀劃策,再也不必擔心自己不能勝任的問題了。這本書不是講管理的理論的,在實際的項目管理中,講這些理論是不解決問題的,這本書有點類似於「軟體項目 點子大全」之類的東西,列舉了種種軟體項目當中面臨的各種問題,以及應該如何解決問題的點子,只需要稍加變通,找方抓葯就行了。
六、總結
在這份推薦閱讀書籍的名單中,沒有列舉流行的軟體框架類學習書籍,例如Struts,hibernate,spring之類,也沒有列舉AJAX方面的書籍。是因為這類書籍容易過時,而上述的大半書籍的生命周期都足夠長,值得去購買和收藏。
【二.Java書籍Top 10】
下面是Java Inside上推薦的十本不錯的Java書籍。
1)Java Language Specification, Third Edition (by James Gosling)
本書由Java技術的發明者編寫,是Java TM編程語言的權威性技術指南。如果你想知道語言之構造的精確含義,本書是最好的資源。
2)Effective Java , Second Edition (by Joshua Bloch)
本書介紹了在Java編程中78條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。通過對Java平台設計專家所使用的技術的全面描述,揭示了應該做什麼,不應該做什麼才能產生清晰、健壯和高效的代碼。.
本書中的每條規則都以簡短、獨立的小文章形式出現,並通過例子代碼加以進一步說明。本書內容全面,結構清晰,講解詳細。可作為技術人員的參考用書。…
3)Java Concurrency in Practice (by Brian Goetz)
隨著多核處理器的普及,使用並發成為構建高性能應用程序的關鍵。Java 5以及6在開發並發程序取得了顯著的進步,提高了Java虛擬機的性能,提高了並發類的可伸縮性,並加入了豐富的新並發構建塊。在本書中,這些便利工具的創造者不僅解釋了它們究竟如何工作、如何使用,同時,還闡釋了創造它們的原因,及其背後的設計模式。 本書既能夠成為讀者的理論支持,又可以作為構建可靠的,可伸縮的,可維護的並發程序的技術支持。本書並不僅僅提供並發API的清單及其機制,本書還提供了設計原則,模式和思想模型,使我們能夠更好地構建正確的,性能良好的並發程序。
本書的讀者是那些具有一定Java編程經驗的程序員、希望了解Java SE 5,6在線程技術上的改進和新特性的程序員,以及Java和並發編程的愛好者。
4)Java Puzzles: Traps, Pitfalls and Corner Cases (by Joshua Bloch)
Java教父的又一經典名著–Java Puzzlers,Amazon五星圖書。認為你到底有多了解Java?你是一個代碼神探嗎?你是否曾經花費過數天時間去追蹤一個由Java或其類庫的陷阱和缺陷而導致的bug?你喜歡智力測驗嗎?那麼這本書正好適合你!
5)Thinking in Java (by Bruce Eckel)
本書贏得了全球程序員的廣泛贊譽,即使是最晦澀的概念,在Bruce Eckel的文字親和力和小而直接的編程示例面前也會化解於無形。從Java的基礎語法到最高級特性(深入的面向對象概念、多線程、自動項目構建、單元測試和調試等),本書都能逐步指導你輕松掌握。
從本書獲得的各項大獎以及來自世界各地的讀者評論中,不難看出這是一本經典之作。本書的作者擁有多年教學經驗,對C、C++以及Java語言都有獨到、深入的見解,以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念。本書共22章,包括操作符、控制執行流程、訪問許可權控制、復用類、多態、介面、通過異常處理錯誤、字元串、泛型、數組、容器深入研究、Java I/O系統、枚舉類型、並發以及圖形化用戶界面等內容。這些豐富的內容,包含了Java語言基礎語法以及高級特性,適合各個層次的Java程序員閱讀,同時也是高等院校講授面向對象程序設計語言以及Java語言的絕佳教材和參考書。
6)Better, faster, lighter Java (by Justin Gehtland, Bruce A. Tate)
Java的開發者正深陷於復雜性的泥沼中而無法自拔。我們的經驗和能力正接近極限,程序員為了編寫支持所選框架的程序所花的時間比解決真正問題的時間要多得多。我們不禁要問,有必要把Java搞得這么復雜嗎?.
答案是否定的。本書給你指引了一條出路。無論是維護應用程序,還是從頭開始設計,你都能夠超越成規,並大幅精簡基本框架、開發過程和最終代碼。你能重新掌握一度失控的J2EE應用程序。..
在本書中,原作者Bruce A.Tate與Justin Gehtland將循序漸進、娓娓道來。首先,他們列出了五項基本法則。他們展示了如何構建簡單、解耦的代碼,並告訴你如何選擇技術。他們還對兩種被廣泛運用的開源程序如何迎合這些概念進行了剖析。最後,作者還將利用這些基本概念構建一個簡單但內涵豐富的應用程序來解決現實世界中所遇到的問題。
7)Core Java (vol. 1, 2) (by Cay S. Horstmann, Gary Cornell)
《Java核心技術》出版以來一直暢銷不衰,深受讀者青睞,每個新版本都盡可能快地跟上Java開發工具箱發展的步伐,而且每一版都重新改寫了部分內容,以便適應Java的最新特性。本版也不例外,它反映了Java SE 6的新特性。全書共14章,包括Java基本的程序結構、對象與類、繼承、介面與內部類、圖形程序設計、事件處理、Swing用戶界面組件、部署應用程序和Applet、異常日誌斷言和調試、泛型程序設計、集合以及多線程等內容。.
全書對Java技術的闡述精確到位,敘述方式深入淺出,並包含大量示例,從而幫助讀者充分理解Java語言以及Java類庫的相關特性。
8) The Java Virtual Machine Specification (by Tim Linholm, Frank Yellin)
如果你需要了解Java虛擬機的byte code,或者是一些編譯方面的東西,這本書絕對讓你得償所願。其不但包含了機器碼的規范說明,同時它也是Java編譯器和運行環境的規格說明書。
9)Robust Java: Exception Handling, Testing, and Debugging (by Stephen Stelting)
處理異常涉及開發、設計和體系結構等方面的知識。本書共分3個部分。
第Ⅰ部分介紹Java異常的產生機理和用法,介紹一些最佳實踐,講述各類異常處理使用的一般API和技術。
第Ⅱ部分闡述可測試性設計,介紹故障模式分析,討論常見API的異常及起因,分析J2EE體系結構和分布式API的異常模式。
第Ⅲ部分討論在軟體開發周期執行異常和錯誤處理,分析軟體體系結構、設計模式、測試和調試,列舉成熟的設計模式,介紹處理策略對系統體系結構的影響,講述如何構建健壯系統。
10)Java Code Convention
最後一本當然是Java編碼規范,這是由Sun公司官方出品的。這也是每個程序員為了得供程序的易讀性,可維護性需要知道的。