600 likes | 781 Views
Symbian OS 介绍. 概述 第一部分. 前言. 本讲是整个课程的导言 Symbian 公司的背景 Symbian OS C++ 特色语言 Symbian OS 的体系结构 本课程覆盖内容 相关资源. 背景. Symbian 之前 - Psion. Psion 成立于 1980 年 为基于 Z80 的 Sinclair 系列,如 ZX81 和 ZX Spectrum ,开发游戏和软件 产品包括 飞行模拟器, “ 豪斯滑雪 ” , Psion 象棋,太空奇袭和其他游戏 其中为 ZX81 开发的 Psion 象棋只占用 1K 内存
E N D
Symbian OS介绍 概述 第一部分
前言 本讲是整个课程的导言 • Symbian 公司的背景 • Symbian OS C++ 特色语言 • Symbian OS的体系结构 • 本课程覆盖内容 • 相关资源
Symbian 之前 - Psion Psion 成立于1980 年 • 为基于Z80的Sinclair系列,如ZX81 和 ZX Spectrum,开发游戏和软件 产品包括 • 飞行模拟器,“豪斯滑雪”,Psion象棋,太空奇袭和其他游戏 • 其中为ZX81开发的Psion象棋只占用1K内存 • 为Sinclair QL 开发的办公套件 (1983)
Symbian 之前 - Psion 八十年代中期——硬件 • 基于6301的位Organiser (1984) —— 14cm x 9cm, 2K RAM, 4K ROM, 8K 数据包, 6个月电池寿命! • Organiser II (1986) —— 世界上第一款严格意义上的PDA • 创建Organiser II 的各个变体 —— 一直到64k内存,4行屏幕解析度,以及扩展硬件 • 十来年总共销售50万台
Symbian 之前 - Psion 1989 - MC400 膝上电脑 • 16位 “EPOC” 操作系统 —— 多任务、GUI和内置应用程序 • 独特的电源管理和屏幕技术 1991 - Series 3, 1993 - Series 3a, 1996 Series 3c/Siena, Series 3mx • 硬壳organisers, 内置应用程序, 支持OPL, 最大2MB 内存 • 基于EPOC构建 • 销售150多万单元 1997 - Series 5 • 32位操作系统 “EPOC32” (EPOC -> EPOC16 -> SIBO) • 滑出式QWERTY 键盘,触摸屏, 4MB/8MB • 用C++实现 http://3lib.ukonline.co.uk/historyofpsion.htm
Symbian 历史 1998 – Symbian由Psion, Nokia, Ericsson 和 Motorola创建 • Matsushita 于1999年加入, Sony Ericsson & Siemens于2002年加入, Samsung 2003加入 • Motorola 在Symbian的股份于2003年售出 • Psion 股份于2004年售出 • EPOC32 后来更名为 Symbian OS 第一款Symbian OS 手机与2000年发布(Ericsson R380) • Nokia 9210 Communicator 于2001年发布——它是第一款“开放”的手机 2.5G 手机于2002年早期出现 • Nokia 7650 3G 手机在2002年12月发布 • Fujitsu的3G FOMA F2051
Symbian 历史 其他值得注意的里程碑 • EKA2 (EPOC 内核体系结构2)于2004年宣布 • 2005年Symbian OS v9引入了安全平台 • Symbian OS于2007年通过P.I.P.S向非移动开发者社区开放 P.I.P.S 代表 “P.I.P.S Is POSIX on Symbian OS” – 一个POSIX 兼容API
Symbian 所有权 到2007 夏季,Symbian的股东情况
一些统计 到2007年3月31日 • 成长的公司 —— 2007年第一季度,Symbian授权厂家交货的手机达1590万台,比2006年第一季度增长35.9% (2006年第一季度为1170万台) • Symbian智能手机累计交货达1亿2600万个单元 • 自从2003年3G Symbian 模块交货以来,日本累计Symbian手机单元交货量已经达到了2000万的里程碑 • Symbian OS C++ 开发者已经供不应求! • 更多的统计见http://www.symbian.com/about/fastfacts/fastfacts.html
Symbian OS C++ Symbian OS C++ 被称为是 “特定领域的 C++ 语言,并附有用于构建Symbian OS及运行于其上的软件的框架”
Symbian C++的演化 Symbian OS 设计 and C++ 考虑由如下因素推动: • 能源 (电池寿命) • 用户响应 • 移动设备“一直开启” 的特性 • 有限资源 (RAM, ROM) • 框架的重用和定制 • 可靠数据存储 • 开放性
Symbian C++的演化 Symbian OS 的C++ 也受到开发该操作系统时间的影响: • 在1994年 - C++ 仍处于演化之中 • 还没有被标准化 这影响了C++后来一些特性的选用: • 模板 • 异常 • 命名空间 • New casts • Boolean 类型 • 其他不为工具链所支持或不成熟的特性.
Symbian C++的演化 一些特殊机制被发明出来,以弥补C++中的不足,例如 • 异常退出(Leaves) • 清除栈(The cleanup stack) • 描述符(Descriptors) 没有采用C++中的某些模式,因为C++本身就是被设计成一种通用的系统语言 • 它并没有针对小型、低内存、低功率设备进行优化
通用模式 通用的Symbian OS 模式 • 多线程与抢先式多任务 • 轻量级微内核OS设计 • 客户端-服务器, 基于session的进程间通信IPC (包括其他机制) • 异步服务,活动对象 • 清除栈, 异常退出, 异常处理陷阱 • 对应用程序、中间件和GUI可重用的框架 • 描述符 • 命名规范 在本课程中,我们将讨论这些以及更多的内容
Python Ruby Runtimes Hardware FlashLite C++ Java Symbian OS Web Flash Python Managed code Java P.I.P.S. 开发的容易性 Symbian C++ Native code 功能及性能 其他语言支持 Symbian OS 也支持 • Java • Flash Lite • 运行时语言,如Python, Ruby, Visual Basic • OPL (直到v9)
Licensee UI Platform UI Framework Application Services Symbian OS OS Services Kernel & H/W Interface Licensee H/W Services Hardware Symbian OS 体系结构 Symbian OS 将UI与引擎和服务分离,从而允许被授权人(像Nokia)为手机开发它们自己的UI
Symbian OS 体系结构 详细一点
Symbian OS 体系结构 更加详细!
Symbian OS 体系结构 前一页显示的Symbian 系统模型在如下地址可以访问到 • http://developer.symbian.com/main/oslibrary/sys_models/index.jsp 或者参考 “The Symbian OS Architecture Sourcebook” • http://developer.symbian.com/main/learning/press/
UI 平台 不同的UI平台运行在Symbian OS上 • Nokia的S60 • UIQ科技(Sony Ericsson 的一部分)的UIQ • 在日本NTT DoCoMo为FOMA™ 3G网络设计的MOAP UI 这些平台提供 • 图形用户界面(GUI)并扩展了Symbian提供的应用程序和中间件 每个平台都有不同的外观 • 支持使用该平台的手机的特性
App UI & Views Application Engine Engine Support Base UI Framework Licensee UI UI 和引擎分离 一般而论,被授权人在UI框架上构建系统 • UI框架由Symbian OS提供 • 我们在例子中会碰到一些UI编程 • 但是本课程的重点还是Symbian的特有模式与概念
UI平台外观实例 Nokia S60 Sony Ericsson UIQ
先导知识 本课程需要的先导知识: • C++ 编程 • 面向对象设计基础 推荐至少具有的背景知识: • 操作系统理论 • 基本通信协议
课程 本课程是基于Symbian 学院(Symbian Academy) Symbian OS 基础课程 • Symbian OS开发者的专业资格是基于本课程 • 认证的Symbian开发者 • 所有Symbian内部员工必须具有该资格 • 本课程推荐用书 “The Accredited Symbian Developer Primer: Fundamentals of Symbian OS” ,由Symbian出版社2006出版
培训练习 现有类型: 测试你的知识回答不同的问题,例如找出代码中的错误或者解释概念 Repetition Form 对以前写好的源代码进行扩展一个小框架标有许多“可编辑”位置的,它们对单个的任务进行介绍 Exercise 更自由,更多说明不再是很多已定义好的小任务,tutorials包含了更详细的解释,以帮助你完成模块. Tutorial 真正的挑战在课程的最后,你应当承担Symbian OS项目,它将帮助你复习很多的基础,也可以进入更多高级的课题 Project
课程核心主题 工具链(Tool Chains) Symbian OS 类型与声明(Symbian OS Types & Declarations) 异常退出与清除栈(Leaves and the Cleanup Stack) 两阶段构造和对象销毁(Two-phase Construction and Object Destruction ) 描述符(Descriptors) 动态数组(Dynamic Arrays) 活动对象(Active Objects) 系统结构(System Structure) 客户端-服务器(Client Server) 文件服务器,流集与流(File Server, Store & Streams) 套接字(Socket) 平台安全(Platform Security) 二进制兼容性(Binaries Compatibility)
工具链 介绍Symbian OS 工具链和开发环境 • 构建工具(Build Tool) • 硬件构建(Hardware Build) • 安装程序到手机硬件上 • Symbian OS 模拟器
Symbian OS 类型与声明 介绍基本的Symbian OS类型、命名规范、编码风格以及Symbian OS基本类的使用范例 • T 类 • C 类 • R 类 • M 类 • 静态类 • 创建Symbian OS类时要考虑的因素 • 为什么Symbian OS的命名规范很重要?
Symbian OS 类型与声明 练习第一个练习的目的是知道Symbian OS基本数据类型以及Symbian OS模拟器的控制台模式. Repetition Form Exercise
异常退出与清除栈 介绍清除栈以及标准C++与Symbian OS在处理内存泄露和异常时的区别 • 异常退出: Symbian OS轻量级的异常 • 如何用异常退出工作 • 比较异常退出和致命错误(Panics) • 什么是TRAP? • 清除栈 • 检测内存泄露
异常退出与清除栈 练习本模块提供一个leave传递练习,以及如何用清除栈处理危险内存状况的不同方法. Repetition Form Exercise
两阶段构造与对象销毁 介绍Symbia OS中两阶段构造,安装创建对象与避免内存泄露 • 两阶段构造 • 对象销毁
两阶段构造与对象销毁 练习本模块中,你将看见Symbian OS中两阶段构造如何工作,以及如果你不正确的实现它,会发生什么。 Repetition Form Tutorial
描述符 介绍使用描述符的原因、如何使用缓冲区和指针描述符,以及何时使用包描述符类 • Symbian OS 描述符的特点 • Symbian OS 描述符类 • 描述符类的继承层次 • 使用描述符API • 描述符作为函数参数 • 正确使用动态描述符类 • 描述符使用中常见的低效用法 • 文字描述符 • 描述符转换
描述符 练习本模块的两个部分练习都覆盖描述符的工作。通过不同的例子,你可以学会它们各自不同以及可用的操作方法. Repetition Form Exercise Exercise
动态数组 分析OS动态数组的使用要优于标准C++数组的地方,理解动态数组类的选择依赖于需要的用法和数组元素的特点 • Symbian OS中的动态数组 • RArray, RPointerArray还是 CArrayX? • 数组粒度 • 数组排序和搜索 • TFixedArray
动态数组 练习在本模块,你要写一个表示学生的类,它有名称和其他细节.动态数组将被用于存储多个学生信息以及对其元素进行排序和查找. Repetition Form Exercise Tutorial
活动对象 分析为什么活动对象要优于线程和在什么条件下优于,介绍简单活动对象的使用和实现以及它们与活动调度器的关系 • Symbian OS事件驱动的多任务处理 • CActive类 • 活动调度器(The Active Scheduler) • 取消已经发出的请求 • 后台任务 • 公共问题
活动对象 练习为了让活动对象这一主题更加有趣,本练习基于一个简单的控制台动作游戏. 你将需要写两个活动对象以便为游戏引擎提供输入 Repetition Form Exercise
系统结构 分析Symbian OS的底层结构,包括线程,进程,DLLs和内存管理 • Symbian OS中的DLLs • 可写静态数据 • ROM 和RAM中的可执行文件 • 线程与进程 • 进程间通信 (IPC) • 识别器 • 致命错误与断言
客户端-服务器框架 分析手机中客户端/服务器模型的用例, 使用该模型的系统组件,以及典型的服务器实现 • 客户端-服务器模式 • Symbian OS 客户端-服务器框架基础 • Symbian OS 客户端-服务器类 • 客户端-服务器数据传输 • 客户端-服务器框架的影响
文件服务器与流 介绍使用文件、流集(Store)、流(Stream)来存储持久性和暂时性数据 • Symbian OS 文件系统 • 流与流集
客户端-服务器框架文件系统与流 练习你要创建一个基于S60平台的完全能够工作的音频播放器应用程序,它能够播放mp3/aac/…等文件格式. 为了完成这项工作,需要使用多媒体框架以及文件服务器,同时验证客户端服务器通信机制. Repetition Form Exercise or Tutorial
套接字(Socket) 研究套接字服务器架构中的通信服务以及异步通信事件 • 介绍套接字 • Symbian OS 套接字架构 • 使用Symbian OS 套接字
套接字 练习本例要求你完成一个功能完全的多人游戏客户端的套接字部分,而不是通过套接字传递一些人为制造的数据.服务器是一个桌面应用程序,它允许许多(Symbian OS)客户端进行连接玩一个小行星游戏. Repetition Form Exercise