軟件相關(guān)技術(shù)及其在國(guó)內(nèi)的應(yīng)用
andrew_zhu 轉(zhuǎn)貼 (參與分:9039,,專(zhuān)家分:750) 發(fā)表:2005-09-08 23:53 更新:2005-09-09 10:17 版本:1.0 閱讀:779次
夏昕[email protected]
【前言】本文結(jié)合筆者工作中的一些經(jīng)驗(yàn)所得,,簡(jiǎn)單介紹一下當(dāng)前主流計(jì)算機(jī)軟件技術(shù)特別是程序設(shè)計(jì)技術(shù)在國(guó)內(nèi)的實(shí)際應(yīng)用情況,并針對(duì)當(dāng)前國(guó)內(nèi)軟件技術(shù)發(fā)展趨勢(shì)做一下階段性預(yù)測(cè),。本文并不是正式的分析報(bào)告,,僅僅是筆者工作中積累的一些觀點(diǎn)和想法的整合,,組織結(jié)構(gòu)上比較隨意,穿插著自己的一些看法和一些相關(guān)技術(shù)文檔的介紹,,還請(qǐng)大家多多指正,。
伴隨著計(jì)算機(jī)應(yīng)用的大眾化潮流,其膨脹的市場(chǎng)需求帶動(dòng)了計(jì)算機(jī)技術(shù)及其相關(guān)產(chǎn)業(yè)的蓬勃發(fā)展,。而其中的關(guān)鍵組成:計(jì)算機(jī)軟件技術(shù),,經(jīng)過(guò)互聯(lián)網(wǎng)風(fēng)暴的洗禮已經(jīng)進(jìn)入新一輪高速成長(zhǎng)階段。在這個(gè)迅速發(fā)展的階段,,新技術(shù)新平臺(tái)的出現(xiàn)及其廣泛應(yīng)用成為一大特色,,高度的系統(tǒng)開(kāi)放性和內(nèi)在邏輯性則是發(fā)展的中心和主題。
目前,,國(guó)內(nèi)軟件技術(shù)發(fā)展和應(yīng)用的焦點(diǎn)主要集中在以下幾個(gè)領(lǐng)域:
一,、企業(yè)級(jí)應(yīng)用領(lǐng)域
鑒于國(guó)內(nèi)的具體情況(缺乏通用企業(yè)級(jí)平臺(tái)產(chǎn)品),這里的企業(yè)級(jí)應(yīng)用主要指企業(yè)級(jí)行業(yè)應(yīng)用領(lǐng)域,,以金融,、電信、政府這三大行業(yè)應(yīng)用為主(這三大行業(yè)的市場(chǎng)總和占據(jù)了企業(yè)應(yīng)用的80%以上),,其中金融行業(yè)核心系統(tǒng)和電信行業(yè)核心系統(tǒng)由于傳統(tǒng)沿革以及對(duì)于性能方面的要求全部采用C/C++實(shí)現(xiàn),。而政府機(jī)構(gòu)及電信、金融外圍渠道性產(chǎn)品的研發(fā)目前基本都選擇了J2EE架構(gòu)以獲得跨平臺(tái)部署能力以及良好的系統(tǒng)伸縮性和擴(kuò)展性,。就目前我個(gè)人有所涉及的領(lǐng)域?yàn)槔?,銀行核心業(yè)務(wù)系統(tǒng)全部采用C/C++實(shí)現(xiàn)(2000年前的老系統(tǒng)全部都是采用C語(yǔ)言開(kāi)發(fā),新研發(fā)的系統(tǒng)大部分采用C++架構(gòu)),,外圍渠道類(lèi)新產(chǎn)品的研發(fā)則大都采用 Java技術(shù),。政府應(yīng)用中的重頭是國(guó)稅申報(bào)系統(tǒng),目前是基于Sybase平臺(tái)開(kāi)發(fā)的C/S結(jié)構(gòu),,同時(shí)新一代稅務(wù)系統(tǒng)已經(jīng)開(kāi)始在J2EE平臺(tái)下著手設(shè)計(jì)開(kāi)發(fā),。
另一方面,對(duì)于一些中小型企業(yè)應(yīng)用,,如企業(yè)內(nèi)部CRM,、CIM系統(tǒng),考慮到系統(tǒng)成本以及維護(hù)難度等因素大多采用基于Windows Server的ASP+SQL Server組合,。
技術(shù)主題:
1.C++
【現(xiàn)狀】98年語(yǔ)言規(guī)范的確定標(biāo)志著C++這個(gè)“新”語(yǔ)言的“誕生”,,從這個(gè)角度來(lái)說(shuō),C++是一個(gè)年輕的語(yǔ)言,,不過(guò)從演進(jìn)歷史和發(fā)展程度來(lái)看(C++于 1979年4月誕生于貝爾實(shí)驗(yàn)室),,C++已經(jīng)相當(dāng)成熟并在各個(gè)領(lǐng)域得到了廣泛應(yīng)用。對(duì)C++發(fā)展感興趣的讀者可以去看看《The Design and Evolution of C++》這本書(shū),此書(shū)中Bjarne Stroustrup將C++從誕生以來(lái)整個(gè)設(shè)計(jì)思想與理念變化的過(guò)程做了詳盡深入的講述,。
無(wú)疑,,C++已經(jīng)成為當(dāng)今世界最流行的高級(jí)系統(tǒng)程序設(shè)計(jì)和面向?qū)ο蟮拈_(kāi)發(fā)語(yǔ)言,其定位為一種能夠如C語(yǔ)言般支持底層的復(fù)雜系統(tǒng)程序設(shè)計(jì),,而又不失C的效率,,同時(shí)能支持針對(duì)大型應(yīng)用程序開(kāi)發(fā)的數(shù)據(jù)抽象和面向?qū)ο笤O(shè)計(jì)的程序設(shè)計(jì)語(yǔ)言。事實(shí)上也只有C++語(yǔ)言才真正實(shí)現(xiàn)了同時(shí)對(duì)高低層次的合理支持,。也正由于這些出色的特性C++得到了廣泛的使用,,從嵌入式系統(tǒng)(如vxWorks)到超大型應(yīng)用系統(tǒng)(如美國(guó)電信網(wǎng)絡(luò)系統(tǒng))的應(yīng)用開(kāi)發(fā),C++的應(yīng)用已經(jīng)彌漫到IT行業(yè)的各個(gè)角落,。
相對(duì)而言,,國(guó)內(nèi)企業(yè)級(jí)平臺(tái)的C++應(yīng)用整體水平相對(duì)較低,大多還停留在相對(duì)簡(jiǎn)單的小規(guī)模應(yīng)用開(kāi)發(fā)層次,。一方面由于國(guó)內(nèi)IT業(yè)技術(shù)發(fā)展相對(duì)滯后,,OOP、GP等新一代編程思想近兩年來(lái)才得到普及(直到現(xiàn)在,,據(jù)筆者所知不少高校的計(jì)算機(jī)程序設(shè)計(jì)專(zhuān)業(yè)教學(xué)還停留在掌握Turbo C 2.0編程階段),,老一代技術(shù)人員在OOP、OOD(面向?qū)ο笤O(shè)計(jì))思想上比較淡漠,。另一方面,,國(guó)內(nèi)IT技術(shù)產(chǎn)業(yè)規(guī)模化應(yīng)用不多,,缺乏高質(zhì)量,、高產(chǎn)品化的應(yīng)用系統(tǒng),,很多應(yīng)用還停留在針對(duì)工程項(xiàng)目的Case實(shí)施階段,,產(chǎn)品投入少,持續(xù)性不強(qiáng),,難以做到成熟的產(chǎn)品化設(shè)計(jì)和開(kāi)發(fā),,因此對(duì)于相對(duì)而言需要較長(zhǎng)研發(fā)周期的C++而言其實(shí)際應(yīng)用較少。同時(shí)對(duì)于傳統(tǒng)的大規(guī)模應(yīng)用(如金融,、電信核心業(yè)務(wù)領(lǐng)域),,由于其原有基礎(chǔ)架構(gòu)多建立在面向過(guò)程的C語(yǔ)言體系,考慮到系統(tǒng)的延續(xù)性和改動(dòng)維護(hù)成本(資金成本,,時(shí)間成本,,以及開(kāi)發(fā)人員掌握基于C++的OOP、OOD的成本等)大多還處于比較保守的觀望或者嘗試性改良階段,。再者,,面臨新一代語(yǔ)言如Java、C#的競(jìng)爭(zhēng),C++在基于數(shù)據(jù)訪問(wèn),、網(wǎng)絡(luò)交互和分布式計(jì)算的企業(yè)級(jí)應(yīng)用市場(chǎng)受到強(qiáng)有力的挑戰(zhàn),,不少技術(shù)人員開(kāi)始將注意力轉(zhuǎn)移到這些新興的程序設(shè)計(jì)語(yǔ)言之中。在這樣的情況下,,國(guó)內(nèi)優(yōu)秀的C++程序員不多,,優(yōu)秀的企業(yè)級(jí)C++架構(gòu)設(shè)計(jì)師更是屈指可數(shù)。
【發(fā)展】隨著IT應(yīng)用規(guī)模的膨脹和軟件系統(tǒng)結(jié)構(gòu)的發(fā)展,,傳統(tǒng)的面向過(guò)程的程序設(shè)計(jì)已經(jīng)難以滿(mǎn)足系統(tǒng)體系設(shè)計(jì)的需求,,在傳統(tǒng)應(yīng)用中,大部分是基于流程的設(shè)計(jì),,如銀行應(yīng)用系統(tǒng)中的賬號(hào)開(kāi)戶(hù),、取款、查詢(xún)業(yè)務(wù)等,,往往在一個(gè)代碼單元(比如對(duì)應(yīng)取款業(yè)務(wù)的一個(gè)Draw.c文件)獨(dú)立完成從獲得數(shù)據(jù)庫(kù)連接,、讀取數(shù)據(jù)庫(kù)記錄、驗(yàn)證用戶(hù)密碼字段,、判斷存款狀態(tài)字段,、更新數(shù)據(jù)庫(kù)記錄、關(guān)閉數(shù)據(jù)庫(kù)連接等一系列操作(這并不是筆者胡亂猜測(cè),,當(dāng)前國(guó)內(nèi)大多數(shù)銀行的業(yè)務(wù)系統(tǒng)正是如此),,大家可想而知對(duì)于銀行的幾千個(gè)交易而言,如此結(jié)構(gòu)的開(kāi)發(fā)與維護(hù)將是怎樣的噩夢(mèng)(即使我們可以采用建立通用類(lèi)庫(kù)和定義相應(yīng)的 Structure的方法進(jìn)行結(jié)構(gòu)調(diào)整,,但是對(duì)于一個(gè)日趨龐大的系統(tǒng)而言,,無(wú)疑幫助有限)。面向?qū)ο蟮脑O(shè)計(jì)思想的出現(xiàn)則為解決這類(lèi)問(wèn)題提供了有力支持,,通過(guò)使用對(duì)象的封裝,、繼承,將系統(tǒng)劃分為若干明晰的對(duì)象子體,,系統(tǒng)業(yè)務(wù)功能通過(guò)對(duì)象子體之間的交互來(lái)具體實(shí)現(xiàn),,這樣一來(lái)系統(tǒng)整體邏輯架構(gòu)相當(dāng)清晰,對(duì)象子體專(zhuān)注于各自獨(dú)立實(shí)現(xiàn),,代碼重疊減少而可重用性大大增加,。
C++作為傳統(tǒng)、成熟的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言也已經(jīng)得到廣泛的應(yīng)用,。目前國(guó)內(nèi)企業(yè)級(jí)的C ++應(yīng)用可以說(shuō)剛剛開(kāi)始起步,,發(fā)展較晚并且缺乏一個(gè)高水平的應(yīng)用發(fā)展環(huán)境,同時(shí)面臨著新一代語(yǔ)言如Java,、C#的激烈競(jìng)爭(zhēng)(這方面有很多爭(zhēng)論,,有的業(yè)者根據(jù)理論推理認(rèn)為C++和Java、C# 解決方案所面向的對(duì)象不同因此并不存在什么沖突,但就筆者個(gè)人的實(shí)際項(xiàng)目經(jīng)歷而言,,在新產(chǎn)品研發(fā)選型中,,C++ 和Java向來(lái)都是一個(gè)激烈爭(zhēng)論的焦點(diǎn),從小型的信息管理系統(tǒng)到大型的ERP系統(tǒng),、金融業(yè)務(wù)系統(tǒng),,C++都面臨著可能被Java取而代之的壓力。另外從 IBM,、Sun,、HP近年來(lái)的產(chǎn)品發(fā)展規(guī)劃中,我們也可以明顯看出國(guó)際大廠商在這方面已經(jīng)向Java傾斜),,因此C++在國(guó)內(nèi)企業(yè)級(jí)領(lǐng)域的新產(chǎn)品研發(fā)應(yīng)用中可能會(huì)面臨比較尷尬的局面,,其主要發(fā)展將集中在對(duì)原有基于C語(yǔ)言技術(shù)平臺(tái)的應(yīng)用升級(jí)以及一些對(duì)于實(shí)時(shí)運(yùn)算要求較高的領(lǐng)域(如金融、電信核心系統(tǒng),,網(wǎng)絡(luò)游戲服務(wù)器等)(當(dāng)然這僅僅是筆者個(gè)人的觀點(diǎn),。)
2.Java
【現(xiàn)狀】未來(lái)的計(jì)算機(jī)體系是基于Web的分布式計(jì)算,Java無(wú)疑是當(dāng)前滿(mǎn)足這一趨勢(shì)的最佳語(yǔ)言,,由于其本身的開(kāi)放性體系以及其簡(jiǎn)潔的語(yǔ)法,,國(guó)內(nèi)Java技術(shù)應(yīng)用得以蓬勃發(fā)展起來(lái)。雖然整體水平并不是很高,,但是相對(duì)C++在國(guó)內(nèi)的發(fā)展和應(yīng)用而言已經(jīng)是非常大的進(jìn)步,,這從國(guó)內(nèi)眾多的個(gè)人或者社區(qū)性Java技術(shù)組織就可見(jiàn)一斑。國(guó)內(nèi)企業(yè)級(jí)應(yīng)用中的關(guān)鍵技術(shù)和內(nèi)容主要集中在:數(shù)據(jù)訪問(wèn),、數(shù)據(jù)格式轉(zhuǎn)換,、邏輯控制、數(shù)據(jù)傳輸,、數(shù)據(jù)表示等方面,,而這些都是Java的優(yōu)勢(shì)所在,因而在實(shí)際應(yīng)用實(shí)施中,,Java/J2EE儼然已經(jīng)成為不可替代的企業(yè)級(jí)應(yīng)用解決方案,。
【發(fā)展】作為一門(mén)正處于發(fā)展高峰期的程序設(shè)計(jì)語(yǔ)言,Java深刻地體現(xiàn)了“設(shè)計(jì)”的精髓,,嚴(yán)謹(jǐn)清晰的結(jié)構(gòu)使其具有良好的擴(kuò)展能力和廣闊的發(fā)展空間,簡(jiǎn)潔的語(yǔ)法提供了良好的可維護(hù)性,,同時(shí),,通過(guò)降低程序員編碼的難度使其能夠?qū)⒏嗟木?zhuān)注于業(yè)務(wù)邏輯的設(shè)計(jì)與系統(tǒng)框架的構(gòu)建。在可以預(yù)見(jiàn)的未來(lái)3年內(nèi),,Java將進(jìn)一步鞏固其在服務(wù)器端確立的戰(zhàn)略?xún)?yōu)勢(shì)并同時(shí)向嵌入式系統(tǒng)等應(yīng)用中延伸,。目前,國(guó)內(nèi)在Java應(yīng)用方面已經(jīng)有了良好的技術(shù)氛圍和群眾基礎(chǔ),涌現(xiàn)出不少優(yōu)秀的Java技術(shù)研討組織和基于Java技術(shù)的優(yōu)秀作品,,相信在未來(lái)的3年內(nèi)可以形成規(guī)?;腏ava應(yīng)用。個(gè)人認(rèn)為,, Java技術(shù)在國(guó)內(nèi)將擁有非常廣闊的前景,。一方面,基于J2EE框架的Java應(yīng)用將成為大型商業(yè)應(yīng)用的中流砥柱,,另一方面在手機(jī),、信息家電、IC卡等嵌入式應(yīng)用中J2ME也將扮演重要角色,。
3. .NET
【現(xiàn)狀】作為Microsoft下一代技術(shù)平臺(tái),,.NET無(wú)疑擔(dān)負(fù)了 Windows平臺(tái)的未來(lái),無(wú)論目前國(guó)內(nèi)外各大論壇上關(guān)于.NET前途的爭(zhēng)論結(jié)果如何,,我們最終都不得不面對(duì).NET這個(gè)在未來(lái)3到10年都要朝夕相伴的新技術(shù),。由于出現(xiàn)時(shí)間不長(zhǎng),無(wú)論是在軟件技術(shù)最發(fā)達(dá)的美國(guó)還是在我國(guó),,.NET還都處于最初的探索和嘗試階段,,基于.NET的企業(yè)級(jí)應(yīng)用可以說(shuō)剛剛起步。
【發(fā)展】.NET本身并不是一個(gè)全新的框架,,微軟綜合了諸多技術(shù),,推出了這個(gè)跨語(yǔ)言、跨平臺(tái)的技術(shù)規(guī)范,,它吸取了之前所有技術(shù)的精華,,相信借助其本身的先進(jìn)性和微軟強(qiáng)大的市場(chǎng)能力,.NET將在不遠(yuǎn)的未來(lái)有所作為,。個(gè)人認(rèn)為,,在可預(yù)見(jiàn)的未來(lái)3年之內(nèi),ASP.NET將逐步取代目前的傳統(tǒng)ASP技術(shù),,繼承現(xiàn)有的 Windows Server應(yīng)用,,同時(shí),由于Windows平臺(tái)的普及性,,.NET將在大多數(shù)中小型End Customer系統(tǒng)中得到廣泛應(yīng)用,。而隨著PC硬件技術(shù)根據(jù)莫爾定律的推進(jìn)以及軟件技術(shù)本身的發(fā)展,Windows Server在性能上將逐漸與低端小型機(jī)接近,,從而在中小型企業(yè)應(yīng)用中獲得更大的市場(chǎng)份額,。在Grid式計(jì)算的下一代互聯(lián)網(wǎng)技術(shù)中,相信.NET會(huì)扮演一個(gè)前端服務(wù)提供者的角色,,即運(yùn)行在高性能小,、大型機(jī)上的Java應(yīng)用提供通用的Web Service接口,,而由.NET平臺(tái)提供面向客戶(hù)接口的應(yīng)用整合。
相關(guān)技術(shù)書(shū)籍推介
1.C++
C++書(shū)籍中不少重量級(jí)著作已經(jīng)在國(guó)內(nèi)登陸,,如The C++ Programming Language,,C++ Primer等,但這些書(shū)籍僅僅只限于C++語(yǔ)言本身,,如何利用C++的強(qiáng)大功能設(shè)計(jì)出一流的軟件則是另外一回事,,下面這兩本書(shū)就是關(guān)于C++設(shè)計(jì)方面的經(jīng)典書(shū)籍:
◎ Large-Scale C++ Software Design (ChinaPub上有此書(shū)的外版定購(gòu))
如果只是單兵做戰(zhàn)、寫(xiě)些小玩意兒,,不必閱讀此書(shū),。除此之外,讀后你必有大得,!這本書(shū)的內(nèi)容不是呆坐在象牙塔里教授,、學(xué)者們冥思苦想所能得到的,它來(lái)自第一線的工程師的經(jīng)驗(yàn)總結(jié),。
◎ Modern C++ Design 繁體版由臺(tái)灣孟巖譯(ChinaPub上有外版定購(gòu))
這本書(shū)介紹了一組可復(fù)用的設(shè)計(jì)“珍寶”,,稱(chēng)為“泛型組件”(Generic Components), 同時(shí)還介紹了構(gòu)造這些組件所使用的技術(shù)。這些泛型組件能夠在各種軟件系統(tǒng)體系中向用戶(hù)提供類(lèi)似庫(kù)的功能,。編碼和實(shí)現(xiàn)的技術(shù)將重點(diǎn)置于那些傳統(tǒng)上是屬于設(shè)計(jì)階段的任務(wù)和問(wèn)題之上,,而設(shè)計(jì)階段的工作通常是在編碼之前就完成了。由于是高層次的組件,,泛型組件使得我們有可能將復(fù)雜的軟件體系以非常富有表現(xiàn)力 簡(jiǎn)潔和易于維護(hù)的代碼表達(dá)出來(lái),。泛型程序設(shè)計(jì)、設(shè)計(jì)模式與C++這三個(gè)要素在這里被組合起來(lái),,達(dá)成在縱向和橫向上的高度可復(fù)用性,。在橫向上,使用一個(gè)很小的代碼庫(kù)就實(shí)現(xiàn)了一個(gè)可組合的 數(shù)量不限的結(jié)構(gòu)和行為集合,。在縱向上,,這些組件的通用性使得它們能夠被應(yīng)用于廣泛的應(yīng)用程序中。
本書(shū)的主要讀者對(duì)象是兩類(lèi)人,。第一類(lèi)是有經(jīng)驗(yàn)的C++程序員,,他們希望掌握最新的庫(kù)編寫(xiě)技術(shù)。本書(shū)展示了新的,、強(qiáng)有力的C++慣用法(idiom),,其能力令人驚訝,有些甚至是人們從來(lái)就不敢想的,。第二類(lèi)是那些忙碌的程序員,,他們得完成工作,又不可能在學(xué)習(xí)上付出太大的代價(jià),。他們可以略過(guò)那些最復(fù)雜的實(shí)現(xiàn)細(xì)節(jié),,將精力集中到對(duì)這個(gè)庫(kù)用法的掌握上。每一章都有介紹性的解釋?zhuān)?“Quick Facts”結(jié)束,。程序員們會(huì)發(fā)現(xiàn)在理解和使用組件方面,,這些部份是非常有用的參考資料。組件可以單獨(dú)的去理解,,同樣可以很有力 安全和出色地使用,。這本書(shū)不是一本模式技術(shù)書(shū)籍 沒(méi)有打算全面論述模式技術(shù)。因?yàn)樵谶@本書(shū)里,,模式是從一個(gè)庫(kù)編寫(xiě)者的實(shí)用主義觀點(diǎn)來(lái)展現(xiàn)的,,所以即使是對(duì)模式技術(shù)更感興趣的讀者也會(huì)發(fā)現(xiàn)這個(gè)觀點(diǎn)很有新意。
◎Ruminations On C++: A Decade of Programming Insight and Experience
《Ruminations On C++》集中反映了C++的關(guān)鍵思想和編程技術(shù),,不僅告訴你如何編程,,還告訴你為什么要這樣編程。
這將是C++程序員的必讀之作,。 因?yàn)椋?
1.它包含了豐富的C++思想和技術(shù),,從詳細(xì)的代碼實(shí)例總結(jié)出程序設(shè)計(jì)的原則和方法。
2.它不僅教你如何遵循規(guī)則,,還教你如何思考C++編程,。
3.既包括面向?qū)ο缶幊桃舶ǚ盒途幊獭2⑸钊胩骄苛薙TL這一近年來(lái)C++最重要的新成果的內(nèi)在思想,。
本書(shū)的作者在使用C++的時(shí)候,,全世界的C++用戶(hù)還寥寥無(wú)幾。他們對(duì)C++語(yǔ)言的發(fā)展有著突出的貢獻(xiàn),。
2.Java
個(gè)人將Java書(shū)籍分為三類(lèi),,語(yǔ)言類(lèi)(如Thinking in java)、平臺(tái)及相關(guān)技術(shù)類(lèi)(如Inside JVM,, Java Management Extension)和設(shè)計(jì)類(lèi)(如 Design Pattern Java Companion Applied Java Patterns),,而依個(gè)人見(jiàn)解,基于Java的設(shè)計(jì)是重中之重,。眾所周知,,Java語(yǔ)言本身以面向?qū)ο蟆⒔Y(jié)構(gòu)簡(jiǎn)潔著稱(chēng),,其語(yǔ)言本身并沒(méi)有太大的復(fù)雜性(這與C++形成了鮮明對(duì)比),,因此,對(duì)于Java新手而言,,語(yǔ)言教學(xué)之類(lèi)的書(shū)籍只需要有一本入門(mén)教程,、一本較全的參考手冊(cè)即可(Thinking In Java 和 JDK Document 就可以滿(mǎn)足),而學(xué)習(xí)的重點(diǎn),,也是決定一個(gè)Java設(shè)計(jì)師的優(yōu)劣所在,,則是在于其對(duì)具體系統(tǒng)所設(shè)計(jì)的應(yīng)用是否滿(mǎn)足需求,,而設(shè)計(jì)方面的功力需要相當(dāng)?shù)睦碚摲e累和實(shí)際實(shí)踐并舉的。
(1)平臺(tái)及相關(guān)技術(shù)類(lèi)
◎《Inside JVM》
要深入Java的運(yùn)行機(jī)理,,必然需要對(duì)JVM機(jī)制有所了解,, Java號(hào)稱(chēng)Platform Independent,但JVM本身就是一個(gè)Platform,,正如我們用MFC寫(xiě)Windows應(yīng)用程序一樣,,只有了解了Windows的系統(tǒng)消息處理機(jī)制我們才能編寫(xiě)出強(qiáng)大的MFC應(yīng)用。
◎《O‘relliy Java Management Extentsion》
JMX Java Management Extentsion是Java組件管理的擴(kuò)展規(guī)范,,也是當(dāng)前主流J2EE應(yīng)用服務(wù)器(Weblogic,,Websphere,JBoss)的核心和基礎(chǔ),。
(2)語(yǔ)言類(lèi)
◎《The Elements of Java Style》
7個(gè)人參與編寫(xiě)的140頁(yè)的書(shū),,能不好嗎?J
Java Syntax 告訴你如何編寫(xiě)機(jī)器可以理解的代碼,,而Java Style則告訴你如何編寫(xiě)他人可以輕松讀懂的代碼,,事實(shí)證明,易讀易維護(hù)的代碼通常更加健壯,,而 Java作為面向大型工程應(yīng)用的程序設(shè)計(jì)語(yǔ)言在這方面則顯得尤其重要,。建議使用Java編程的人都來(lái)讀讀這本手冊(cè),不花太多的精力卻能給你的工作帶來(lái)極大的幫助,,極具指導(dǎo)意義,。
◎《Bitter Java》
設(shè)計(jì)模式對(duì)軟件開(kāi)發(fā)來(lái)說(shuō)很重要,這一點(diǎn)從它在技術(shù)中所占的數(shù)量就可見(jiàn)一斑,。不過(guò),,鑒于其在開(kāi)發(fā)過(guò)程中的實(shí)用性,設(shè)計(jì)模式只解決了問(wèn)題的一半,。反模式??描述“對(duì)產(chǎn)生絕對(duì)負(fù)面結(jié)果的問(wèn)題的一種常用解決方案”??旨在通過(guò)向 Java 程序員展示如何避免常見(jiàn)的 Java 陷阱來(lái)解決問(wèn)題的另一半,。《Bitter Java》就是這樣一本書(shū),,它告訴你不該做什么,,從而幫助讀者避免重蹈覆轍。
◎《Java Pitfalls》&《More Java Pitfalls》
Java界中的Effective C++,。
許多Java程序員通過(guò)幾年的辛苦,,不斷的碰壁總結(jié)出一些零散的編程經(jīng)驗(yàn),當(dāng)他們看到這兩本書(shū)的時(shí)候可能會(huì)欣喜若狂,,這兩本書(shū)總結(jié)了Java程序設(shè)計(jì)中可能遇到的大多數(shù)問(wèn)題,。不可不讀的好書(shū)。
(3)設(shè)計(jì)類(lèi)
◎《Applied Java Paterns》
GoF 的 Design Pattern 是設(shè)計(jì)模式的開(kāi)山之作,,但由于其采用的是C++的描述方法,,并且由于Java語(yǔ)言與C++的差異,,java程序員閱讀 Design Pattern往往有一種陌生感,難以切入實(shí)處,,而Applied Java Patterns則正是針對(duì)Java語(yǔ)言所撰寫(xiě)的設(shè)計(jì)模式書(shū)籍,。通過(guò)實(shí)際Java代碼示例,,讓讀者清晰的理解設(shè)計(jì)模式在Java中的實(shí)現(xiàn)并可以在實(shí)際工作實(shí)現(xiàn)設(shè)計(jì)模式的快餐化應(yīng)用,。
◎《Thinking in Patterns with Java》
Thinking In java 作者Bruce Eckel關(guān)于Patterns in Java 的大作,但現(xiàn)在還處于0.6版本,。
3. .NET
.NET 推出時(shí)間不長(zhǎng),,技術(shù)書(shū)籍的出版還處于黎明前的破曉階段,暫時(shí)沒(méi)有類(lèi)似《The C++ Programming Language》或者《Think in Java》之類(lèi)學(xué)者必備的經(jīng)典書(shū)籍,。此時(shí)來(lái)自微軟的文檔無(wú)疑是最具深入核心資質(zhì)的學(xué)習(xí)資源,。筆者翻閱過(guò)多本國(guó)內(nèi)外相關(guān)技術(shù)資料,感覺(jué)就入門(mén)而言最好不過(guò)MS Training Book,,深入淺出,,易于操作。
對(duì)于.NET,,類(lèi)似Java,,筆者同樣將其分為平臺(tái)技術(shù)相關(guān)類(lèi)、語(yǔ)言類(lèi)以及設(shè)計(jì)類(lèi),。
(1)平臺(tái)技術(shù)相關(guān)類(lèi):
◎《Inside Microsoft .NET IL Assembler》(MS Press)
深入剖析了MSIL,,Common Language Runtime的內(nèi)部運(yùn)作機(jī)制,要了解.NET系統(tǒng)機(jī)制不可不讀的機(jī)要大作,。
◎《Professional ASP.NET》(Wrox)
Wrox 號(hào)稱(chēng)Programmer to Programmer,,在.NET方面其出版的Professional系列書(shū)籍還是比較優(yōu)秀的。本書(shū)主要講述如何使用服務(wù)器控件以及數(shù)據(jù)訪問(wèn)技術(shù)創(chuàng)建ASP.NET Web應(yīng)用,;開(kāi)發(fā),、保護(hù)和配置Web Service,以及其中的調(diào)試技術(shù),、性能,、遷移性和互操作性等問(wèn)題。如果之前有過(guò)Web應(yīng)用設(shè)計(jì)的經(jīng)驗(yàn),,那么本書(shū)將會(huì)是一本非常好的針對(duì)ASP.NET的入門(mén)及開(kāi)發(fā)手冊(cè),。
◎《ASP.NET Website Programming : problem ?design ?solution》(Wrox)
ASP.NET的進(jìn)階讀物,建議在讀完了Professional ASP.NET的基礎(chǔ)之上進(jìn)行研讀,。
◎《Debugging ASP.NET》
此書(shū)面向的讀者是產(chǎn)品技術(shù)經(jīng)理或者富有經(jīng)驗(yàn)的高級(jí)技術(shù)人員,,他們需要對(duì)產(chǎn)品的代碼進(jìn)行評(píng)審,并進(jìn)行詳盡的測(cè)試以確保產(chǎn)品的質(zhì)量,。
本書(shū)教授了大型.NET應(yīng)用的調(diào)試策略和技巧,,如如何制定代碼編寫(xiě)規(guī)范以避免常見(jiàn)錯(cuò)誤的大量涌現(xiàn),,如何通過(guò).NET調(diào)試工具跟蹤調(diào)試.NET應(yīng)用,以及針對(duì)從傳統(tǒng)ASP轉(zhuǎn)移到ASP.NET過(guò)程中的一些告誡和建議等等,。
(2)語(yǔ)言類(lèi):
◎《Inside C# Second edition》&《Microsoft Visual C# .NET (Core Reference)》
來(lái)自微軟出版社的.NET核心語(yǔ)言C# 技術(shù)書(shū)籍,,最具權(quán)威的語(yǔ)言教程。
◎《Thinking in C#》 0.1 預(yù)覽版 MindView
剛剛下載翻閱還未深入閱讀,,暫不評(píng)論,,希望能保持Thinking in …系列的一貫品質(zhì)。
(3)設(shè)計(jì)類(lèi)
暫空缺,。
二,、Windows桌面應(yīng)用領(lǐng)域
由于國(guó)內(nèi)Windows平臺(tái)的普及,大量基于Windows平臺(tái)的桌面應(yīng)用發(fā)展迅猛,,同時(shí)國(guó)內(nèi)也涌現(xiàn)了一批高水平的桌面應(yīng)用研發(fā)力量,。從小型的工具型軟件到大型的辦公自動(dòng)化軟件,從多媒體播放,、娛樂(lè)游戲軟件到病毒防護(hù)等呈現(xiàn)出一片欣欣向榮的景象,。
在國(guó)內(nèi)桌面應(yīng)用開(kāi)發(fā)的正規(guī)軍中,基于Visual C++ 平臺(tái)的開(kāi)發(fā)技術(shù)得以普遍應(yīng)用,,以下是幾個(gè)例子:金山詞霸(可能是中國(guó)用戶(hù)使用最多的軟件了吧,,開(kāi)發(fā)工具:VC++),WPS Office(VC++)(上次與金山總裁雷軍閑聊之時(shí)也談到Windows開(kāi)發(fā)工具的選擇問(wèn)題,,在Win3.1平臺(tái)吃過(guò) Borland OWL的苦頭之后,,金山已經(jīng)全面轉(zhuǎn)向微軟開(kāi)發(fā)平臺(tái),不過(guò)好像現(xiàn)在也引入了Delphi,,C++ Builder這類(lèi)開(kāi)發(fā)工具),,東方影都(VC++),超級(jí)解霸(VC++),。
對(duì)于一些小型的桌面應(yīng)用開(kāi)發(fā),,如共享軟件開(kāi)發(fā)領(lǐng)域, Borland Delphi/Visual Basic等RAD開(kāi)發(fā)平臺(tái)則占領(lǐng)了很大的市場(chǎng)份額,,代表如Foxmail(Delphi),,超級(jí)兔子(VB),Windows優(yōu)化大師(Delphi),,網(wǎng)絡(luò)伴侶(Delphi)等,,當(dāng)然,也有基于VC++的Netants,,F(xiàn)lashGet等重量級(jí)作品,。
技術(shù)主題:
鑒于國(guó)內(nèi)桌面應(yīng)用多集中于Windows領(lǐng)域,這里我們就僅僅對(duì)Windows平臺(tái)的桌面應(yīng)用開(kāi)發(fā)平臺(tái)進(jìn)行探討。
1.VC++/C++ Builder
【現(xiàn)狀】對(duì)于Windows應(yīng)用開(kāi)發(fā)而言,,VC++似乎是不二之選,,全面的SDK文檔,豐富的開(kāi)發(fā)資源,,但由于VC++對(duì)于RAD開(kāi)發(fā)支持不夠,,難以進(jìn)行快速開(kāi)發(fā)和部署,特別是對(duì)于GUI開(kāi)發(fā)以及數(shù)據(jù)庫(kù)開(kāi)發(fā)的支持比較欠缺,,因此對(duì)需要進(jìn)行快速定制的桌面應(yīng)用(如小型專(zhuān)用軟件)而言開(kāi)發(fā)維護(hù)成本過(guò)高(根據(jù)與 Netants作者洪以容的交流得知,,為了達(dá)到最好的效果和靈活性,他在Netants的設(shè)計(jì)中舍棄了陳舊的MFC框架,,利用Windows SDK完成了整個(gè)界面設(shè)計(jì),,可想而知其工作量相當(dāng)可觀),個(gè)人認(rèn)為VC++更適合大中型軟件公司桌面應(yīng)用的產(chǎn)品化研發(fā),。
C++ Builder 作為C++ 語(yǔ)法與源于Delphi的VCL框架的結(jié)合,自然繼承了兩大主流桌面技術(shù)的先天優(yōu)勢(shì),,但從另一方面來(lái)看,,這恰恰也造成了C++ Builder尷尬的一面,由于Delphi VCL發(fā)展的歷史原因,,大部分VCL組件都由Delphi程序員用Object Pascal編寫(xiě),,這些組件經(jīng)過(guò)一定改編雖然可以用于C++ Builder,但在兼容性以及程序聯(lián)調(diào)等方面卻遇到了一些令人頭疼的問(wèn)題,,同時(shí)C++ Builder為人詬病的編譯速度以及 Code Insight速度也使得大部分C++程序員望而興嘆(目前的版本盡管使用了pre-Compiled headers等技術(shù)進(jìn)行相關(guān)性能調(diào)整,,但相對(duì)VC++而言,其編譯速度還是較慢,,不過(guò)最新的C++ Builder 6經(jīng)過(guò)筆者的使用感覺(jué)已經(jīng)有了一定的提高,,希望這個(gè)問(wèn)題在新版本中能得到更好的解決)。
【發(fā)展】VC++從設(shè)計(jì)思路而言,,是面向工程級(jí)的開(kāi)發(fā),,作為一個(gè)成熟的應(yīng)用開(kāi)發(fā)平臺(tái),無(wú)疑VC++已經(jīng)在桌面開(kāi)發(fā)領(lǐng)域建立了無(wú)可替代的地位,,其發(fā)展似乎不必多說(shuō),,相信在未來(lái)三年內(nèi)依然可以穩(wěn)居桌面應(yīng)用開(kāi)發(fā)工具的首位。
上面雖然列出了C++ Builder所存在的種種不足,,但我們必須認(rèn)識(shí)到“存在即合理”的含義,,C++ Builder的確滿(mǎn)足了C++技術(shù)人員對(duì)RAD 工具的強(qiáng)烈需求,隨著Kylix3的推出,,基于C++ Builder CLX編寫(xiě)的代碼可以無(wú)痛苦地移植到Linux平臺(tái),,這也為C++ Builder應(yīng)用注入了一針強(qiáng)心劑。如果Borland可以在編譯速度等方面做進(jìn)一步改進(jìn),C++ Builder將在C++ RAD方面大有作為,。
2.Delphi/VB
【現(xiàn)狀】Delphi/VB無(wú)疑是快速開(kāi)發(fā)的利器,,在國(guó)內(nèi)桌面應(yīng)用中,Delphi/VB占據(jù)80%以上的份額,。
Delphi 在臺(tái)灣,、新加坡、香港等東南亞地區(qū)應(yīng)用非常廣泛,,從桌面應(yīng)用到中小型的企業(yè)級(jí)開(kāi)發(fā)都可以看到Delphi的身影,。隨著Delphi.NET、 Kylix 3的前后推出,,Delphi/Kylix作為桌面應(yīng)用開(kāi)發(fā)工具發(fā)也展到了一個(gè)新的高峰,,同時(shí)借助.NET的威力在服務(wù)端更進(jìn)一步。
同時(shí),,VB在東亞,,特別是在日本應(yīng)用非常普遍。相對(duì)Delphi而言,,由于vb.NET的結(jié)構(gòu)調(diào)整較大,,其發(fā)展可能會(huì)暫時(shí)面臨一個(gè)轉(zhuǎn)型中的低迷階段。
【發(fā)展】從技術(shù)角度而言,,VB不能算是一個(gè)純粹面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,,這方面它大大落后于Borland Delphi、Object Pascal (Pascal的Delphi版本)從誕生起就是一個(gè)徹頭徹尾面向?qū)ο蟮膵雰?,其?jiǎn)潔明了的語(yǔ)法使得VB冗長(zhǎng)的代碼顯得單調(diào)而乏味,。事實(shí)上從我個(gè)人角度而言并不看好VB的技術(shù)體系,除了其衍自Microsoft的皇家血統(tǒng)(因而具備詳盡的文檔和示例,,以及可靠的持續(xù)性發(fā)展能力),,其并不具備技術(shù)上的競(jìng)爭(zhēng)優(yōu)勢(shì)。相反Delphi先進(jìn)的Application Framework已經(jīng)得到了一致的公認(rèn)和好評(píng),,近10年來(lái)的積累也帶來(lái)了極具規(guī)模的追隨者,,相信 Delphi在未來(lái)3年內(nèi)會(huì)持續(xù)輝煌,成為RAD開(kāi)發(fā)中的首選工具,。
3. .NET Windows Form
【現(xiàn)狀】剛剛誕生的新一代Windows桌面應(yīng)用開(kāi)發(fā)技術(shù),,尚未得到大規(guī)模的應(yīng)用。
【發(fā)展】.NET Windows Form作為Microsoft新一代技術(shù)平臺(tái).NET的組成部分,,無(wú)疑將成為Windows平臺(tái)桌面應(yīng)用開(kāi)發(fā)的主要技術(shù)之一,,但目前面臨比較尷尬的局面,首先由于.NET運(yùn)行平臺(tái)尚未普及,,導(dǎo)致基于.NET Windows Form開(kāi)發(fā)的桌面應(yīng)用難以部署,,這一點(diǎn)很大程度上阻礙了其進(jìn)一步的推廣和應(yīng)用,。相對(duì)于傳統(tǒng)的Windows原生開(kāi)發(fā)工具而言,其代碼運(yùn)行速度也較慢,,個(gè)人認(rèn)為其短期內(nèi)最大的應(yīng)用領(lǐng)域應(yīng)該是作為Web 應(yīng)用系統(tǒng)的輔助開(kāi)發(fā)(如編寫(xiě)應(yīng)用配置管理系統(tǒng)等),。而從長(zhǎng)遠(yuǎn),綜合各個(gè)方面的因素來(lái)看,,.NET Windows Form應(yīng)用的展開(kāi)只能是在下一代操作系統(tǒng)Windows.NET成為主流之后,,而這一過(guò)渡時(shí)間可能要延續(xù)3年之久,因此,,.NET Windows Form的規(guī)?;瘧?yīng)用應(yīng)該在2005年之后。
相關(guān)技術(shù)書(shū)籍推介
個(gè)人認(rèn)為,,桌面應(yīng)用設(shè)計(jì)與企業(yè)級(jí)應(yīng)用設(shè)計(jì)的最大區(qū)別在于:企業(yè)應(yīng)用設(shè)計(jì)關(guān)注的重點(diǎn)是良好的系統(tǒng)邏輯架構(gòu),,而桌面應(yīng)用大部分注意力集中在交互界面的設(shè)計(jì)以及結(jié)合操作系統(tǒng)接口的功能實(shí)現(xiàn)。
在桌面應(yīng)用設(shè)計(jì)中,,由于群眾基礎(chǔ)廣泛,,相關(guān)優(yōu)秀書(shū)籍早已經(jīng)被大家所發(fā)掘而得到公認(rèn)。這里就將筆者讀過(guò)的幾本書(shū)做簡(jiǎn)單的羅列以供大家參考,。
1.VC++
◎《Inside VC++》中文版《Visual C++技術(shù)內(nèi)幕》
網(wǎng)上對(duì)這本書(shū)評(píng)價(jià)不一,,主要是集中在兩個(gè)中文版(第四版和第五版),不過(guò)筆者閱讀技術(shù)書(shū)籍時(shí)大多把注意力集中在關(guān)鍵示例和相應(yīng)描述上,,字句上的出入倒是沒(méi)有什么影響J??偟膩?lái)說(shuō)此書(shū)比較淺顯,,實(shí)例甚豐,是一本不錯(cuò)的入門(mén)書(shū)籍,。
◎《Inside Windows 2000》
做Windows桌面應(yīng)用,,必須掌握Windows核心基礎(chǔ),本書(shū)就是來(lái)自微軟出版社的Windows核心技術(shù)揭密,。
◎《MFC深入淺出》
不多說(shuō)了,,侯捷的大作,想深入學(xué)習(xí)MFC的好導(dǎo)師,。
◎《Exceptional C++》&《More Exceptional C++》
前段時(shí)間買(mǎi)了本《More Exceptional C++》中文版,,不過(guò)還沒(méi)深入閱讀,不知漢化如何,,之前通過(guò)一些渠道閱讀了此書(shū)的一些樣章,,感覺(jué)還是非常不錯(cuò)的。
◎《C++ 對(duì)象模型》,、《Effective C++》,、《More Effective C++》
這三本是關(guān)于C++語(yǔ)言本身的著作,不僅僅拘泥于桌面應(yīng)用,而是深入掌握C++語(yǔ)言的經(jīng)典書(shū)籍,。
2.Delphi
◎《Essential Pascal》
Object Pascal的入門(mén)手冊(cè),,一百來(lái)頁(yè),初學(xué)者必備,。
◎《Delphi Developer’s Guide》
非常全面的開(kāi)發(fā)手冊(cè),,入門(mén)之后相信只要這本書(shū)常備案頭即可解決大部分問(wèn)題。
◎《Master Delphi》
Delphi的進(jìn)階教程,,講述了VCL的內(nèi)部實(shí)現(xiàn),。
3.VB
筆者使用VB似乎也沒(méi)看什么書(shū)籍,DOS下 Quick Basic 積累了一些語(yǔ)法基礎(chǔ),,從VB1.0 for Dos ,、 VB2.0 For Win3.0開(kāi)始自己摸索(當(dāng)時(shí)也沒(méi)有什么VB書(shū)籍),因此對(duì)于Visual Basic書(shū)籍情況不是非常了解,。據(jù)說(shuō)微軟出版社出的幾本書(shū)還都不錯(cuò)大家可以去翻閱一下,。
|