C++跨平台开发技术指南

出版时间:2009-1  出版社:机械工业出版社  作者:[美] Syd Logan  页数:318  译者:徐旭铭  
Tag标签:无  

前言

  作为Firefox、Mozilla和Netscape浏览器解析和渲染超文本标记语言/可扩展标记语言/层叠样式表(HTML/:XML/CSS)的引擎,Gecko是全世界使用最广泛的渲染引擎之一。  而我身为Netscape的工程师以及后来MozillaGecko团队的开发经理,有幸从一开始就参与了Gecko引擎的开发。  Gecko诞生时的愿望是要创建一个跨平台的、小巧快速的、先进的可嵌入Web浏览引擎,而这一点正是我们在“浏览器大战”中争夺优势的砝码。当时笨拙的Netscape4.x引擎显然已经无法再完全支持CSS2、CSS3和:XMI。Web标准了。所以有人提出只使用原有的引擎的一部分库来重新开发。在Gecko项目的早期,我们曾经讨论过要采用拥有跨平台能力的Java而不是c++。但最后还是觉得只有c++以及它特有的开发过程、工具和设计技术,才能产生最好的解决方案。《C++跨平台开发技术指南》将会把这些过程、工具和设计技术作为最佳实践来逐一描述。  在进入.Netscape工作之前,我曾为很多公司开发过跨平台软件。然而,MoziUa项目把这些经历提升到了一个完全不同的高度。我们使用和开发了一系列软件架构、工具和过程来实现大范围内的跨平台开发工作。  我的第一个任务是把Gecko从微软Windows系统上移植到Motif/Xlib上去。写过跨平台软件的人都知道,刚开始的移植工作是最有挑战性的。你会在那时发现软件的移植性到底如何。即使Gecko从设计的时候就是以可移植为目标,然而平台和编译器之间的细微差异还是搞得我们很头疼。这就是为什么需要有一个像Mozilla‘Tinderbox那样的工具来验证check.in代码的可移植性,并且还需要一个软件开发过程来要求工程师在向代码仓库提交新的源代码之前至少在两个平台上验证过。  Gecko引擎开发的动机之一,是要在它上面重现NetscapeCommunicator的用户界面体验。这就要求有一个跨平台的用户界面方案,因为NetscapeCommunicator就是在多个平台上提供了图形用户界面的环境。所以我就有了这样一个机会来设计一个用户界面策略以解决这个棘手的跨平台问题。我撰写了一份文档,解释了如何在Gecko渲染引擎里把描述用户界面元素的X~~VII。元描述(XML,metadescription)与作为控件和事件逻辑的JavaScript相混合,以达到跨平台用户界面的目的。这份文档后来成为了XUL(XMLUserInterfaceL.anguage)的原型。再后来,Firefox的开发人员用xuL和Gecko引擎开发出了小巧快速、广受欢迎的跨平台Web浏览器。第9章描述了如何在xUL上创建你自己的跨平台用户界面。  作为W3CSVG(ScalableVectorGraphics)最早的成员之一,我对Gecko能不断地进化和解决跨平台问题感到非常兴奋。最近添加的对SVG的原生支持则又是Gecko可移植性的一大胜利。  SydL.xogan在这里要展示的信息是无数工程师对于那些和创建跨平台软件产品相关的特殊问题的真知灼见。虽然它是以c++为蓝本,不过很多技术都是可以为其他非c++软件项目所借鉴。我希望你能从中发现有用的工具、技术或是过程,从而避免跨平台开发中的陷阱,让你的项目取得巨大成功。

内容概要

  本书详细介绍C++语言的跨平台技术,包含的主要内容有:Netscape在向数百万Win-dows、Mac OS和Linux用户发布浏览器时采用的策略和过程;如何使用基于标志的API,包括POSIX和STL;如何避免隐晦的移植性陷阱,相关的如浮点数、chat。类型、数据序列化,以及C++的类型;如何建立一个有效的跨平台bug报告和跟踪系统等。本书内容详实,实例丰富。适合软件开发技术人员参考。      本书是开发可移植C/C++应用程序的权威读物,它指导编写的代码可以无缝地运行在Windows、Macintosh和Linux平台上而不需要牺牲任何功能、易用性或是产品的品质。  Mozilla和Netscape的资深工程师Syd Logan系统地讲解了所有和软件移植性有关的技术和管理上的挑战,包括编码、测试以及部署上的设计和考量。基于他丰富的跨平台开发经验,Logan完整地讨论了从原生API的使用到最新的可移植GUI开发策略等一系列问题。他还展示了如何避免传统跨平台开发方法里存在的问题,以及如何达到特性的对等性。   本书对正在构建新的跨平台软件,移植现有的C/C++软件,或是考虑将来为软件添加跨平台支持的每一位软件从业人员和技术经理来说,都是必不可少的资源。

作者简介

  Syd Logan,是一位工作生活在南加州的软件工程师,拥有圣地亚哥州立大学的计算机科学学士和硕士学位。Syd曾是Netscape Client Product Development(CPD)团队的一员,在Netscape 6和7的开发过程中,他同时担任了开发和管理的职务。之后,Syd留在AOL并作为AOL Instant Me

书籍目录

“C++设计新思维”丛书前言译者序序前言引言第1章 策略与管理 条款1:把所有的平台都放在同样重要的位置 条款2:使用公共的代码  工厂模式在不同平台上的实现  类的实现  平台相关的ProcessesImpl类  创建实例层次  用CVS或SVN组织项目  编译代码和Makefile 条款3:要求开发人员用不同的编译器编译代码 条款4:要求开发人员在不同的平台上编译代码  条款5:测试所有的平台 条款6:关注编译警告  GNU 标志  微软Visual C++第2章 Build系统和Toolchain 条款7:使用最适合平台的编译器 条款8:尽量使用本地IDE 条款9:在Windows上安装和使用Cygwin 条款10:使用跨平台的Make系统Make  在Windows上编译Makefile和源码  Autoconf/Automake  Imake  在Mac OS X上安装Imake  在Windows上安装Imake  一个例子:使用Imake  Imakefile文件  完整编译的一个多文件程序  在site?def里重写默认值  去除代码里的#ifdefs  Imake中用到的文件  编译含有子目录的项目  Debug的编译第3章 软件配置管理 条款11:使用跨平台的bug报告和  跟踪系统  可访问性  跟踪平台相关bug的能力Bugzilla75 条款12:设置Tinderbox 条款13:用CVS或Subversion来管理  源代码  设置和使用CVS 条款14:使用patch  一个例子  patch选项  应对reject  patch和跨平台开发第4章 安装与部署94条款15:为本地安装程序提供支持 XPInstall 平台安装第5章 操作系统接口和库 条款16:使用标准API(如POSIX)  POSIX  支持POSIX、SVID、XPG和BSD  在GCC里使用标准支持  微软Runtime Library对POSIX的支持  在Windows上使用GCC  决定支持哪个标准 条款17:考虑使用NSPR这样的平台  抽象库  为什么要开发NSPR  NSPR基础  线程  NSPR的其他功能第6章 其他可移植性主题  条款18: 慎用浮点数  不要把浮点值序列化为二进制  判断相等 条款19:显式地注明char类型的符号 条款20:避免序列化二进制数据 条款21: 避免类型长度和组织带来的  问题  整型的长度  NSPR里的类型  长度和效率  整型转换  struct的对齐和顺序第7章 用户界面 条款22:从Model里把用户界面分离出来  用Model/View把用户界面和程序逻辑  分开  用Publish/Subscribe在View和Model之间通讯  小结 条款23:开发一个跨平台用户界面的  策略  影响跨平台GUI开发移植性的问题 选择GUI的策略第8章 wxWidgets196wxWidgets概述 许可协议 安装wxWidgets 一个简单的例子:Hello wxWidgets199创建应用程序的用户界面 编译wxWidgets应用程序 控件与事件 容器widget 对话框 复合式widget 国际化和本地化第9章 用C++开发跨平台GUI工具包 什么是XUL DHTML HTML 脚本语言 文档对象模型 样式系统 XUL 窗口和对话框 box元素 工具条  菜单 控件 其他widget 用XUL编程 用JavaScript为UI添加逻辑 用XPCOM和XPConnect接口化JavaScript和C/C++ Trixul Trixul支持的widget Trixul的基本操作 widget 类的实现 创建widget实现的对象 widget工厂 应用程序主循环 Trixul创建用户界面的步骤 文档、元素和DOM288 创建widget 布局 滚动窗口和布局 和JavaScript集成 和C++组件集成

编辑推荐

  《C++跨平台开发技术指南》是开发可移植C/C++应用程序的权威读物,它指导编写的代码可以无缝地运行在Windows、Macirltostl和Linux平台上而不需要牺牲任何功能、易用性或是产品的品质。  Mozilla和Netscape的资深工程师Syd Logan系统地讲解了所有和软件移植性有关的技术和管理上的挑战。包括编码、测试以及部署上的设计和考量。基于他丰富的跨平台开发经验,Logarl完整地讨论了从原生API的使用到最新的可移植GUI开发策略等一系列问题。他还展示了如何避免传统跨平台开发方法里存在的问题,以及如何达到特性的对等性。  《C++跨平台开发技术指南》对正在构建新的跨平台软件,移植现有的c/c++软件,或是考虑将来为软件添加跨平台支持的每一位软件从业人员和技术经理来说,都是必不可少的资源。  《C++跨平台开发技术指南》详细介绍跨平台应用的构建方法,包括真实的场景和大量实用的代码示例。以及一个完整的基于Mozilla xUL的跨平台GUI工具包,你可以在网站上下载到所有的源码,并从中获益。  Netscape在向数百万Windows、Mac OS和Linux用户发布浏览器时采用的策略和过程。  在所有平台上提供一致的功能和接口。  理解流行的平台GUl API之间关键的相似与不同,它们包括Win32/.NET、Cocoa和Gtk+。  决定使用原生IDE的时机,以及如何限制它们对移植性的影响。  使用基于标志的API,包括POSI×和STL等。避免隐晦的移植性陷阱,相关的如浮点数、char类型、数据序列化,以及C++的类型等。  利用平台抽象库,如Netscape Portable Runtime(NSPR)等。  建立一个有效的跨平台bug报告和跟踪系统。为多个平台创建build并在跨平台构建失败时检测到它们。理解本地运行环境以及它们对安装程序的影响。使用wxWidgets从一个代码库里来创建多平台的GUI应用程序。  完整地测试应用程序的可移植性。  通过Trixul理解跨平台GUl工具包的设计。

图书封面

图书标签Tags

评论、评分、阅读与下载


    C++跨平台开发技术指南 PDF格式下载


用户评论 (总计18条)

 
 

  •   读了一半章节左右,其它翻了下

    本书主要把跨平台开发、维护的手段、注意事项和经验总结了一下,对于刚接触的人起到引导、提醒的作用

    但对于有过相关经验的老程序员来说,本书可能没有太令人感觉出彩的地方,因为大多内容都是较普通和常见的
  •   写跨平台的代码,需要太牛的功底
  •   写得很好的一本书...可心看出作者是位很有开发经验r的
  •   才开始看,很实用的一本书,操作性比较强。
  •   内容很好,很有帮助,推荐。
  •   送货速度飞快,很满意,书也很好
  •   偶然之间在书架上发现此书,由于实际生活中有类似需要,见之大喜,遂然读之。书中涉及了项目管理和技术开发两部分,再加上拿Mozilla和Netscape做例子,感觉真实性较强。本书富于指导性,从项目管理到设计理念,谈及的话题比比皆是;然而面面俱到的风格难免造成细节方面的缺失。以最后一章为例,你可能需要(也是建议)在源码的陪同下进行阅读,方能感受Trixul的实现机理,毕竟“纸上学来终觉潜”。此外,该章中对一些字词翻译的把握上方可进一步斟酌。至于是否有收获,PM类型的我不敢说;但喜欢探究C++跨平台技术开发和实现的朋友倒不妨一试。
  •   这是一本写给有比较丰富编程经验的程序员看的书,不太适合初学者。书中提到了若干在跨平台开发过程需要注意的问题,言简意骇,给了不少很好的建议。对有经验的开发者——相信有跨平台开发需求的一般都不是是菜鸟——来讲,书的内容很易理解,读起来很轻松,可以当作饭后睡前的消遣。
    当然书中的有些内容略显陈旧了点,如CVS这种server-client模式的版本控制已经有点过时了。
    是一本好书,值得看一看。
  •   从工程源文件如何在CSV组织到测试到平台特性都说的很详细。跨平台开发的必备手册。
  •   因为最近在弄跨平台的东西,所以买了这本书。
    从一些开发流程和编码的一些习惯或技巧上,这本书都有些介绍 ,虽然深入不深入还有待商榷,但是确实可以从中吸取不少的经验。

    值得一看!
  •   作者是从事过实际跨平台开发的,所讲的很多东西还是比较有用的。不过,如果你的基础不好,可能会比较吃力,因为里面涉及的知识领域很广。
  •   这是一本指导性的书,内容很全面。不过由于面太广,不可能太详细。
  •   不光是设计,还有其他方面,比较全面
  •   内容还行,就是纸的质地太薄了
  •   还行,中规中矩,帮助不是很大
  •   还行吧,没仔细看,不过对扩展自己的C++知识还是有好处的
  •   纸张的质量和排版不是很好,翻译的也不太通顺,不过还能读
  •   细节不够,范围太广
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7