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