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 PIPS is a C library layer see the Symbian website or talk to Symbian Academy for more information
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++ Symbian OS C++ 被称为是 “特定领域的 C++ 语言,并附有用于构建Symbian OS 及运行于其上的软件的框架”
Symbian C++的演化 Symbian OS 设计 and C++ 考虑由如下因素推动: 能源 (电池寿命) 用户响应 移动设备“一直开启” 的特性 有限资源 (RAM, ROM) 框架的重用和定制 可靠数据存储 开放性
Symbian C++的演化 Symbian OS 的C++ 也受到开发该操作系统时间的影响: 这影响了C++后来一些特性的选用: 还没有被标准化 这影响了C++后来一些特性的选用: 模板 异常 命名空间 New casts Boolean 类型 其他不为工具链所支持或不成熟的特性.
Symbian C++的演化 一些特殊机制被发明出来,以弥补C++中的不足,例如 异常退出(Leaves) 清除栈(The cleanup stack) 描述符(Descriptors) 没有采用C++中的某些模式,因为C++本身就是被设计成一种通用的系统语言 它并没有针对小型、低内存、低功率设备进行优化
通用模式 通用的Symbian OS 模式 在本课程中,我们将讨论这些以及更多的内容 多线程与抢先式多任务 轻量级微内核OS设计 客户端-服务器, 基于session的进程间通信IPC (包括其他机制) 异步服务,活动对象 清除栈, 异常退出, 异常处理陷阱 对应用程序、中间件和GUI可重用的框架 描述符 命名规范 在本课程中,我们将讨论这些以及更多的内容
其他语言支持 Symbian OS 也支持 Java Flash Lite 运行时语言,如Python, Ruby, Visual Basic OPL (直到v9) 功能及性能 开发的容易性 Java Flash Symbian C++ Web Python Managed code Native code P.I.P.S. Hardware Symbian OS Java Flash Lite Runtimes Python Ruby C++
体系结构
Symbian OS 体系结构 Symbian OS 将UI与引擎和服务分离,从而允许被授权人(像Nokia)为手机开发它们自己的UI Hardware Kernel & H/W Interface OS Services Application Services UI Framework Licensee UI Platform Licensee H/W Services Symbian OS The Symbian Press book “Symbian OS Architecture Sourcebook” has more information. Chapter 3 details the architecture
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 平台 不同的UI平台运行在Symbian OS上 这些平台提供 每个平台都有不同的外观 Nokia的S60 UIQ科技(Sony Ericsson 的一部分)的UIQ 在日本NTT DoCoMo为FOMA™ 3G网络设计的MOAP UI 这些平台提供 图形用户界面(GUI)并扩展了Symbian提供的应用程序和中间件 每个平台都有不同的外观 支持使用该平台的手机的特性
UI 和引擎分离 一般而论,被授权人在UI框架上构建系统 UI框架由Symbian OS提供 Licensee UI UI Framework App UI & Views Application Engine Engine Support Base
UI平台外观实例 Nokia S60 Sony Ericsson UIQ
课程
先导知识 本课程需要的先导知识: C++ 编程 面向对象设计基础 推荐至少具有的背景知识: 操作系统理论 基本通信协议
课程 本课程是基于Symbian 学院(Symbian Academy) Symbian OS 基础课程 本课程推荐用书 “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 描述符的特点 描述符类的继承层次 使用描述符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)客户端进行连接玩 一个小行星游戏. Repetition Form Exercise
平台安全 分析平台安全的三个核心概念: 信任模型, 能力和数据隔离。介绍Symbian OS v9上的软件设计、开发与发布 信任模型(The Trust Model) 能力模型(Capability Model) 数据隔离(Data Caging) 安全标识符(Secure Identifier),厂商标识符(Vendor Identifier)和唯一标识符 (Unique Identifier) 基于安全平台的应用程序设计 在Symbian OS v9上发布安全应用程序 本地软件安装器
兼容性 介绍二进制和源代码兼容性,以及相应的编程和设计技术,它对于维护代 码模块和API的兼容性是需要的 兼容性等级 防止兼容性中断 — 什么不能改变? 什么可以修改,而不会破坏兼容性? 好习惯——为确保未来的兼容性进行设计
项目 课程材料中提供了多个不同难度的项目思想. 对于大多数工程,推荐的小组人 数为两人。为了给你足够的时间,题目应被尽快的分发到每个组中。 为了完成项目,你需要显示你对Symbian OS基本原则的理解。通常,也要 求对Symbian OS S60或UIQ提供的许多API进行研究. Project
资源
推荐阅读 C++ 参考书 Stroustrup, B. (2000) The C++ Programming Language (Special 3rd Edition), Addison-Wesley Professional Meyers, S. (2005) Effective C++: 55 specific ways to improve your programs and designs, 3rd Edition, Addison Wesley Symbian 书籍 Stichbury, J & Jacobs, M. (2006) The Accredited Symbian Developer Primer, John Wiley & Sons Jipping, M. (2007) Smartphone Operating System Concepts with Symbian OS, John Wiley & Sons Harrison, R. & Shackman M. (2007) Symbian OS C++ for Mobile Phones Volume 3, John Wiley & Sons Heath, C. (2006) Symbian OS Platform Security: Software development using the Symbian OS security architecture, John Wiley & Sons Morris, B. (2006) The Symbian OS Architecture Sourcebook: Design and evolution of a mobile phone OS, John Wiley & Sons
Symbian 出版社出版物
区域书籍 Symbian 出版社书籍中文版 (北邮出版社) Symbian 出版社书籍在印度 Symbian 出版社数据日文版 http://www.ptpress.com.cn/ Symbian 出版社书籍在印度 http://www.wileyindia.com/ Symbian 出版社数据日文版 http://developer.symbian.com/main/learning/press/translated/japanese.jsp
有用链接s Symbian 开发者网络 Symbian 学院 开发者工具与SDK Nokia 论坛大学区 http://developer.symbian.com Symbian 学院 http://developer.symbian.com/main/academy/ 开发者工具与SDK http://developer.symbian.com/main/tools/ Nokia 论坛大学区 http://forum.nokia.com/main/forum_nokia_for_universities/index.html
Symbian出版社的精华小册子 免费小册子 (可以以pdf的形式下载) http://developer.symbian.com/main/learning/press/essential/booklets_using.jsp 也有翻译后的版本 http://developer.symbian.com/main/learning/press/essential/booklets_translated.jsp Note to lecturer. Symbian Press will also ship you a set of free booklets if you request them from editor@symbian.com - please mention your affiliation with Symbian Academy
祝好运、愉快!