出版時(shí)間:2009-1 出版社:機(jī)械工業(yè)出版社 作者:[美] Syd Logan 頁數(shù):318 譯者:徐旭銘
Tag標(biāo)簽:無
前言
作為Firefox、Mozilla和Netscape瀏覽器解析和渲染超文本標(biāo)記語言/可擴(kuò)展標(biāo)記語言/層疊樣式表(HTML/:XML/CSS)的引擎,Gecko是全世界使用最廣泛的渲染引擎之一?! 《疑頌镹etscape的工程師以及后來MozillaGecko團(tuán)隊(duì)的開發(fā)經(jīng)理,有幸從一開始就參與了Gecko引擎的開發(fā)。 Gecko誕生時(shí)的愿望是要?jiǎng)?chuàng)建一個(gè)跨平臺(tái)的、小巧快速的、先進(jìn)的可嵌入Web瀏覽引擎,而這一點(diǎn)正是我們在“瀏覽器大戰(zhàn)”中爭奪優(yōu)勢的砝碼。當(dāng)時(shí)笨拙的Netscape4.x引擎顯然已經(jīng)無法再完全支持CSS2、CSS3和:XMI。Web標(biāo)準(zhǔn)了。所以有人提出只使用原有的引擎的一部分庫來重新開發(fā)。在Gecko項(xiàng)目的早期,我們曾經(jīng)討論過要采用擁有跨平臺(tái)能力的Java而不是c++。但最后還是覺得只有c++以及它特有的開發(fā)過程、工具和設(shè)計(jì)技術(shù),才能產(chǎn)生最好的解決方案?!禖++跨平臺(tái)開發(fā)技術(shù)指南》將會(huì)把這些過程、工具和設(shè)計(jì)技術(shù)作為最佳實(shí)踐來逐一描述。 在進(jìn)入.Netscape工作之前,我曾為很多公司開發(fā)過跨平臺(tái)軟件。然而,MoziUa項(xiàng)目把這些經(jīng)歷提升到了一個(gè)完全不同的高度。我們使用和開發(fā)了一系列軟件架構(gòu)、工具和過程來實(shí)現(xiàn)大范圍內(nèi)的跨平臺(tái)開發(fā)工作?! ∥业牡谝粋€(gè)任務(wù)是把Gecko從微軟Windows系統(tǒng)上移植到Motif/Xlib上去。寫過跨平臺(tái)軟件的人都知道,剛開始的移植工作是最有挑戰(zhàn)性的。你會(huì)在那時(shí)發(fā)現(xiàn)軟件的移植性到底如何。即使Gecko從設(shè)計(jì)的時(shí)候就是以可移植為目標(biāo),然而平臺(tái)和編譯器之間的細(xì)微差異還是搞得我們很頭疼。這就是為什么需要有一個(gè)像Mozilla‘Tinderbox那樣的工具來驗(yàn)證check.in代碼的可移植性,并且還需要一個(gè)軟件開發(fā)過程來要求工程師在向代碼倉庫提交新的源代碼之前至少在兩個(gè)平臺(tái)上驗(yàn)證過?! ecko引擎開發(fā)的動(dòng)機(jī)之一,是要在它上面重現(xiàn)NetscapeCommunicator的用戶界面體驗(yàn)。這就要求有一個(gè)跨平臺(tái)的用戶界面方案,因?yàn)镹etscapeCommunicator就是在多個(gè)平臺(tái)上提供了圖形用戶界面的環(huán)境。所以我就有了這樣一個(gè)機(jī)會(huì)來設(shè)計(jì)一個(gè)用戶界面策略以解決這個(gè)棘手的跨平臺(tái)問題。我撰寫了一份文檔,解釋了如何在Gecko渲染引擎里把描述用戶界面元素的X~~VII。元描述(XML,metadescription)與作為控件和事件邏輯的JavaScript相混合,以達(dá)到跨平臺(tái)用戶界面的目的。這份文檔后來成為了XUL(XMLUserInterfaceL.a(chǎn)nguage)的原型。再后來,F(xiàn)irefox的開發(fā)人員用xuL和Gecko引擎開發(fā)出了小巧快速、廣受歡迎的跨平臺(tái)Web瀏覽器。第9章描述了如何在xUL上創(chuàng)建你自己的跨平臺(tái)用戶界面?! ∽鳛閃3CSVG(ScalableVectorGraphics)最早的成員之一,我對Gecko能不斷地進(jìn)化和解決跨平臺(tái)問題感到非常興奮。最近添加的對SVG的原生支持則又是Gecko可移植性的一大勝利。 SydL.xogan在這里要展示的信息是無數(shù)工程師對于那些和創(chuàng)建跨平臺(tái)軟件產(chǎn)品相關(guān)的特殊問題的真知灼見。雖然它是以c++為藍(lán)本,不過很多技術(shù)都是可以為其他非c++軟件項(xiàng)目所借鑒。我希望你能從中發(fā)現(xiàn)有用的工具、技術(shù)或是過程,從而避免跨平臺(tái)開發(fā)中的陷阱,讓你的項(xiàng)目取得巨大成功。
內(nèi)容概要
本書詳細(xì)介紹C++語言的跨平臺(tái)技術(shù),包含的主要內(nèi)容有:Netscape在向數(shù)百萬Win-dows、Mac OS和Linux用戶發(fā)布瀏覽器時(shí)采用的策略和過程;如何使用基于標(biāo)志的API,包括POSIX和STL;如何避免隱晦的移植性陷阱,相關(guān)的如浮點(diǎn)數(shù)、chat。類型、數(shù)據(jù)序列化,以及C++的類型;如何建立一個(gè)有效的跨平臺(tái)bug報(bào)告和跟蹤系統(tǒng)等。本書內(nèi)容詳實(shí),實(shí)例豐富。適合軟件開發(fā)技術(shù)人員參考。 本書是開發(fā)可移植C/C++應(yīng)用程序的權(quán)威讀物,它指導(dǎo)編寫的代碼可以無縫地運(yùn)行在Windows、Macintosh和Linux平臺(tái)上而不需要犧牲任何功能、易用性或是產(chǎn)品的品質(zhì)?! ozilla和Netscape的資深工程師Syd Logan系統(tǒng)地講解了所有和軟件移植性有關(guān)的技術(shù)和管理上的挑戰(zhàn),包括編碼、測試以及部署上的設(shè)計(jì)和考量?;谒S富的跨平臺(tái)開發(fā)經(jīng)驗(yàn),Logan完整地討論了從原生API的使用到最新的可移植GUI開發(fā)策略等一系列問題。他還展示了如何避免傳統(tǒng)跨平臺(tái)開發(fā)方法里存在的問題,以及如何達(dá)到特性的對等性。 本書對正在構(gòu)建新的跨平臺(tái)軟件,移植現(xiàn)有的C/C++軟件,或是考慮將來為軟件添加跨平臺(tái)支持的每一位軟件從業(yè)人員和技術(shù)經(jīng)理來說,都是必不可少的資源。
作者簡介
Syd Logan,是一位工作生活在南加州的軟件工程師,擁有圣地亞哥州立大學(xué)的計(jì)算機(jī)科學(xué)學(xué)士和碩士學(xué)位。Syd曾是Netscape Client Product Development(CPD)團(tuán)隊(duì)的一員,在Netscape 6和7的開發(fā)過程中,他同時(shí)擔(dān)任了開發(fā)和管理的職務(wù)。之后,Syd留在AOL并作為AOL Instant Me
書籍目錄
“C++設(shè)計(jì)新思維”叢書前言譯者序序前言引言第1章 策略與管理 條款1:把所有的平臺(tái)都放在同樣重要的位置 條款2:使用公共的代碼 工廠模式在不同平臺(tái)上的實(shí)現(xiàn) 類的實(shí)現(xiàn) 平臺(tái)相關(guān)的ProcessesImpl類 創(chuàng)建實(shí)例層次 用CVS或SVN組織項(xiàng)目 編譯代碼和Makefile 條款3:要求開發(fā)人員用不同的編譯器編譯代碼 條款4:要求開發(fā)人員在不同的平臺(tái)上編譯代碼 條款5:測試所有的平臺(tái) 條款6:關(guān)注編譯警告 GNU 標(biāo)志 微軟Visual C++第2章 Build系統(tǒng)和Toolchain 條款7:使用最適合平臺(tái)的編譯器 條款8:盡量使用本地IDE 條款9:在Windows上安裝和使用Cygwin 條款10:使用跨平臺(tái)的Make系統(tǒng)Make 在Windows上編譯Makefile和源碼 Autoconf/Automake Imake 在Mac OS X上安裝Imake 在Windows上安裝Imake 一個(gè)例子:使用Imake Imakefile文件 完整編譯的一個(gè)多文件程序 在site?def里重寫默認(rèn)值 去除代碼里的#ifdefs Imake中用到的文件 編譯含有子目錄的項(xiàng)目 Debug的編譯第3章 軟件配置管理 條款11:使用跨平臺(tái)的bug報(bào)告和 跟蹤系統(tǒng) 可訪問性 跟蹤平臺(tái)相關(guān)bug的能力Bugzilla75 條款12:設(shè)置Tinderbox 條款13:用CVS或Subversion來管理 源代碼 設(shè)置和使用CVS 條款14:使用patch 一個(gè)例子 patch選項(xiàng) 應(yīng)對reject patch和跨平臺(tái)開發(fā)第4章 安裝與部署94條款15:為本地安裝程序提供支持 XPInstall 平臺(tái)安裝第5章 操作系統(tǒng)接口和庫 條款16:使用標(biāo)準(zhǔn)API(如POSIX) POSIX 支持POSIX、SVID、XPG和BSD 在GCC里使用標(biāo)準(zhǔn)支持 微軟Runtime Library對POSIX的支持 在Windows上使用GCC 決定支持哪個(gè)標(biāo)準(zhǔn) 條款17:考慮使用NSPR這樣的平臺(tái) 抽象庫 為什么要開發(fā)NSPR NSPR基礎(chǔ) 線程 NSPR的其他功能第6章 其他可移植性主題 條款18: 慎用浮點(diǎn)數(shù) 不要把浮點(diǎn)值序列化為二進(jìn)制 判斷相等 條款19:顯式地注明char類型的符號(hào) 條款20:避免序列化二進(jìn)制數(shù)據(jù) 條款21: 避免類型長度和組織帶來的 問題 整型的長度 NSPR里的類型 長度和效率 整型轉(zhuǎn)換 struct的對齊和順序第7章 用戶界面 條款22:從Model里把用戶界面分離出來 用Model/View把用戶界面和程序邏輯 分開 用Publish/Subscribe在View和Model之間通訊 小結(jié) 條款23:開發(fā)一個(gè)跨平臺(tái)用戶界面的 策略 影響跨平臺(tái)GUI開發(fā)移植性的問題 選擇GUI的策略第8章 wxWidgets196wxWidgets概述 許可協(xié)議 安裝wxWidgets 一個(gè)簡單的例子:Hello wxWidgets199創(chuàng)建應(yīng)用程序的用戶界面 編譯wxWidgets應(yīng)用程序 控件與事件 容器widget 對話框 復(fù)合式widget 國際化和本地化第9章 用C++開發(fā)跨平臺(tái)GUI工具包 什么是XUL DHTML HTML 腳本語言 文檔對象模型 樣式系統(tǒng) XUL 窗口和對話框 box元素 工具條 菜單 控件 其他widget 用XUL編程 用JavaScript為UI添加邏輯 用XPCOM和XPConnect接口化JavaScript和C/C++ Trixul Trixul支持的widget Trixul的基本操作 widget 類的實(shí)現(xiàn) 創(chuàng)建widget實(shí)現(xiàn)的對象 widget工廠 應(yīng)用程序主循環(huán) Trixul創(chuàng)建用戶界面的步驟 文檔、元素和DOM288 創(chuàng)建widget 布局 滾動(dòng)窗口和布局 和JavaScript集成 和C++組件集成
編輯推薦
《C++跨平臺(tái)開發(fā)技術(shù)指南》是開發(fā)可移植C/C++應(yīng)用程序的權(quán)威讀物,它指導(dǎo)編寫的代碼可以無縫地運(yùn)行在Windows、Macirltostl和Linux平臺(tái)上而不需要犧牲任何功能、易用性或是產(chǎn)品的品質(zhì)。 Mozilla和Netscape的資深工程師Syd Logan系統(tǒng)地講解了所有和軟件移植性有關(guān)的技術(shù)和管理上的挑戰(zhàn)。包括編碼、測試以及部署上的設(shè)計(jì)和考量?;谒S富的跨平臺(tái)開發(fā)經(jīng)驗(yàn),Logarl完整地討論了從原生API的使用到最新的可移植GUI開發(fā)策略等一系列問題。他還展示了如何避免傳統(tǒng)跨平臺(tái)開發(fā)方法里存在的問題,以及如何達(dá)到特性的對等性。 《C++跨平臺(tái)開發(fā)技術(shù)指南》對正在構(gòu)建新的跨平臺(tái)軟件,移植現(xiàn)有的c/c++軟件,或是考慮將來為軟件添加跨平臺(tái)支持的每一位軟件從業(yè)人員和技術(shù)經(jīng)理來說,都是必不可少的資源?! 禖++跨平臺(tái)開發(fā)技術(shù)指南》詳細(xì)介紹跨平臺(tái)應(yīng)用的構(gòu)建方法,包括真實(shí)的場景和大量實(shí)用的代碼示例。以及一個(gè)完整的基于Mozilla xUL的跨平臺(tái)GUI工具包,你可以在網(wǎng)站上下載到所有的源碼,并從中獲益?! etscape在向數(shù)百萬Windows、Mac OS和Linux用戶發(fā)布瀏覽器時(shí)采用的策略和過程。 在所有平臺(tái)上提供一致的功能和接口?! ±斫饬餍械钠脚_(tái)GUl API之間關(guān)鍵的相似與不同,它們包括Win32/.NET、Cocoa和Gtk+。 決定使用原生IDE的時(shí)機(jī),以及如何限制它們對移植性的影響?! ∈褂没跇?biāo)志的API,包括POSI×和STL等。避免隱晦的移植性陷阱,相關(guān)的如浮點(diǎn)數(shù)、char類型、數(shù)據(jù)序列化,以及C++的類型等?! ±闷脚_(tái)抽象庫,如Netscape Portable Runtime(NSPR)等。 建立一個(gè)有效的跨平臺(tái)bug報(bào)告和跟蹤系統(tǒng)。為多個(gè)平臺(tái)創(chuàng)建build并在跨平臺(tái)構(gòu)建失敗時(shí)檢測到它們。理解本地運(yùn)行環(huán)境以及它們對安裝程序的影響。使用wxWidgets從一個(gè)代碼庫里來創(chuàng)建多平臺(tái)的GUI應(yīng)用程序?! ⊥暾販y試應(yīng)用程序的可移植性?! ⊥ㄟ^Trixul理解跨平臺(tái)GUl工具包的設(shè)計(jì)。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
C++跨平臺(tái)開發(fā)技術(shù)指南 PDF格式下載