首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Brew >

《More Than BREW: 解析BREW核心血制》 草拟提纲,目录。 欢迎大家提提意见

2012-12-14 
《More Than BREW: 解析BREW核心机制》 草拟提纲,目录。 欢迎大家提提意见基于目前BREW的书籍实在太少。本人草

《More Than BREW: 解析BREW核心机制》 草拟提纲,目录。 欢迎大家提提意见
基于目前BREW的书籍实在太少。本人草拟了一些专题,打算能出包含这些专题的一本BREW书籍。 不过,目前也仅仅是定了目录提供而已。 工作繁忙没多少时间,究竟何时开写和完成 无法预告。  这里,期望大家看看目录,提提意见, 是否这些正是当前BREW书籍缺少的,或者大家期望的专题, 或者还有没有覆盖到的但是也很重要的专题。 谢谢~~~

PS: 本内容基本不涉及具体BREW的应用程序开发,主要针对平台,机制解析等方面。 下面的comment行,是再具体说明包含的内容。


More Than BREW: 解析BREW核心机制

目录

前言

第一篇 BREW中的C

第一章 回顾C语言几大重要专题
1. 指针与参数传递的本质
   //comment: 通过IShell_CreateInstance, FreeIF两种实现(宏和函数)解析参数传递和指针

(多重指针)的本质

2. 虚且不虚的Void*指针
   //comment: 通过IConfig_Get/SetItem解释Void*的典型使用:需要透明数据传递的场合

3. 函数指针
   //comment:介绍函数指针的两种定义方式和技巧。介绍函数指针的各种作用(间接调用函数

,动态绑定,实现多态和回调)。

4. 多态
   //comment:函数指针实现虚表(接口),实例创建时绑定函数地址

5. 回调
  //comment: 介绍同步回调(策略模式),异步回调概念;介绍阻塞/非阻塞,异步/同步概念

。介绍同步回调,异步回调的典型应用场合;介绍BREW中的多层回调实现机制。

第二章 用C实现面向对象
1.面向对象技术介绍
2.基于C的实现
  //comment:说明BREW中虚表(接口),继承,多态,封装的实现


第二篇 BREW中的组件技术

第三章 组件基本技术
1. 基本术语
  //comment:说明接口,类,组件,实例/对象,module,applet,extension的概念
2. BREW基于接口的服务体系
3. BREW的引用计数
4. BREW的QueryInterface
  //comment:BREW QueryInterface的用途:二进制兼容(虚表内存布局不变,实现新旧客户

端的兼容性)同时支持扩展功能。 BREW QueryInterface的典型实现。
5. BREW中的GUID
  //comment:CLSID,IID,GROUPID

第四章 组件动态加载技术
1. 组件动态加载概念
2. 常见组件动态加载技术
3. 基于接口的动态组件-BREW平台动态加载的必然实现方式
4. BREW Module的注册,发现,加载,执行。


第三篇 BREW中的设计模式

第五章 工厂模式
1. 工厂模式介绍
2. BREW中的IShell_CreateInstance

第六章 SingleTon模式
1. SingleTon模式
2. BREW中SingleTon的不同实现方式和注意事项
3. SingleTon/Multi-Instance的使用场合
4. SingleTon中如何存储应用关联的非共享数据
5. Multi-Instance中如何进行局部共享

第七章 Facade模式
1. Facade模式介绍
2. BREW是手机软件的Facade

第八章 Proxy模式
1. Proxy模式介绍
2. BMP中的Stub/skelecton

第九章 Observer模式
1. Observer模式介绍
2. BREW中的Model-Listener
3. BREW中的Notifier

第四篇 BREW中的核心机制

第十章 安全
1. 权限
  //comment:ACL.GROUPID,Least-Privilege]
2. 签名
3. 其他

第十一章 运行环境
1. BREW环境如何运行
2. App环境和系统环境以及其作用
3. App和System间的环境切换
4. BREW与Native的环境边界
4. 协作式多任务机制及其实现

第十二章 内存管理
1. Node TAG机制
2.内存自动回收
3. App和System环境下分配内存

第十三章 Component Service
1.什么是CS
2.CS的目的是什么

第十四章 MIME Handler
1.BREW Handler机制的作用和使用方式
2.基于Interface ID的Handler
  //comment: App handler, Service Handler
3.如何基于MIME Handler机制进行解耦设计
4.实际设计案例
  //comment:Script Extend


第五篇 BREW中的框架

第十五章 基本概念
1.架构,框架,类库区别
2.框架解决什么
  //comment:共性,不变性。支持扩展

第十六章 应用框架
1.应用框架的主要作用
2.常见典型应用框架
3.BREW的应用框架解析
 //comment:Shell, Applet, Event-Driven, IAC, App ManageMent, Entry Point

第十七章 UI框架
1.UI框架的主要作用
2.常见典型UI框架
3.BUIW解析
  //comment:MVC模式,组成部件,事件流,重绘机制
4.BUIW中使用的设计模式
  //comment:Observer,Composite pattern, decarator pattern,Stradegy,Flyweight,

Chain of Responsibility(Hook Event to Add to chain),Adapter,Bridge,Template 

method,Indexer

第十八章 测试框架


1.测试框架的主要作用
2.常见典型的测试框架
3.OAT框架解析


第六篇 规范,准则和实践

第十九章 基于BREW的编程规范
1. 接口命名和服务提供规范
2. 全局变量使用规范
3. 接口,应用间通信规范
4. 其他注意点

第二十章 基于BREW的设计原则
1. BREW中的低耦合设计准则
2. BREW的接口设计准则
3. BREW的接口OEM层设计准则

第二十一章 几个实例
1. IDLE Notification的设计
2. AlarmService的设计
3. USB Plug-in App设计
4. Browser App设计
5. MyData App设计
6. Desktop Widget环境设计
7. PC Sync App设计
8. Gesture Capture设计
[解决办法]
sp
[解决办法]
非常期待!有很多是我正想弄明白的。我觉得光看目录都似提供了一个学习的内容和方向~ 
第一篇是基础,比较适合我这种刚接触brew不够久,且C基础不够扎实的~
希望第二篇多能讲一些原理,特别是brew的机制,实现原理。第3章和第4章都很期待~
第5章以及第第五篇的知识都很想了解。当然第20章的设计原则以及21章实例都是吸引我的地方。
总的来说,如果成书的话,对我的吸引力还是蛮大的,基本上每章都有我所想了解的知识~
对于我这样接触半年左右的人来说,是一本不错的参考书籍,不过不知道别的阶段的看法了,仅给楼主提供一个参考吧~
还有,希望楼主能够写的详细些,像你发的《BREW 动态加载深入刨析》,由于没有引入代码,我又对brew加载的机制不了解,所以看起来较费劲~ 个人意见~ 也许合适我的不一定适合别人呢~
[解决办法]
对于BREW的学习内容和方向,可以参考笔者以前写的 BREW学习之路-解析BREW学习过程

这个网上可以免费下载到

谢谢~~
[解决办法]
强烈支持楼主,您的文章看过不少,非常深入,强烈支持一下!!
[解决办法]
楼主很牛,我也是看你的文章的哦,很期待你的书,如果能快点写出来的话,估计会卖得很火。
[解决办法]
支持。我是这方面的菜鸟,希望有的章节能介绍下mif文件相关的知识,同时想了解brew在高通平台中扮演的角色,比如和操作系统(比如rex)的关系。谢谢!期待。
[解决办法]

引用:
支持。我是这方面的菜鸟,希望有的章节能介绍下mif文件相关的知识,同时想了解brew在高通平台中扮演的角色,比如和操作系统(比如rex)的关系。谢谢!期待。


BREW 和REX的关系在《BREW进阶与精通》一书中有介绍
[解决办法]
把多媒体加进去吧
[解决办法]
楼主很强悍。。。。。
[解决办法]
东方兄,可以先开个贴,我们跟贴。

当然如果有些自己的想法也可以通过这种方式来进行交流。
[解决办法]
Deep in C Dual-Point Parameter Transfer Mechanism
(thought arised from ISHELL_CreateInstance in BREW)
东方欲晓

2005-9-28

1. ISHELL_CreatInstance 使用方式

ITextCtl * pt=NULL;
ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_TEXTCTL,(void **)(&pt))
上面是再熟悉不过的BREW 接口创建的示例代码了。可是,不知道大家有没有考虑过,为什么需要将ItextCtl 的双重指针(&pt)作为参数传入?ISHELL_CreateInstance 的最后一个参数为什么是void**

2. 创建对象需要传入双重指针的原因

现在,我们来解释以上的两个原因。 ISHELL_CreateInstance 的作用是根据clsid 创建一个对象的实例。但是,ISHELL_CreateInstance本身的返回值仅仅标识该函数执行的成功与否。那如何返回创建的对象那?我们知道,C 中的函数有两种带回值的方式,一种是通过返回值, 一种是通过出口参数。显然对于ISHELL_CreateInstance,使用了出口参数带回创建的对象。既然是出口参数,那就应该使用指针类型。并且此处需要改变的不是对象的内容,而是改变指向的对象(即pt 的指向),所以需要传入双重指针。这样当&pt 作为参数传入ISHELL_CreateInstance,该接口函数执行返回后,pt 的指向就改变了,指向了一个已创建的对象。ISHELL_CreateInstance 最后参数需要void 型的指针是为了使得ISHELL_CreateInstance 可以被传入各种指针。

3. 双重指针参数传递机制

大家可能对上面的解释还有些不解。那此处就来详细谈谈c 双重指针的参数传递机制。
首先,我们来谈谈c 函数参数传递的本质。请记住,C 函数的参数传递机制永远只是“值传递”(请忘记以前学的所谓的还有地址传递,下面我将给予分析),因此函数内部不可能改变实参的“值”。此处的“值”究竟代表什么,也就意味着什么是不同改变的。而其他的确是可以被改变的,指针就利用了这种特性。
我们来看3 个例子,理解传“值”的本质。
Void fun(int a)
{
a=6


}
main()
{
int x=3;
fun(x);
}
此处,因为传递的是对象本身,所以此处的值代表对象本身的内容。该值不能被改变。所以fun(x)后,x 的值没有被改变。(谭号强的书上对这种传递应该分析的够清楚)
Void fun(int *a)
{
*a=6
}
main()
{
int y=3
int *x=&y;
fun(x);
}
此处传递的变量是int 指针类型,对于一个指针变量,它的“值”是它的指向(请体会这一点)。规则没有变,同样是传值,值不能被改变,所有x 的值(x 的指向)不能被改变,但是我通过解除引用符号*,我可以改变x 所指向的对象的内容。所以fun(x) 执行后,x 指向的对象的值被改变了。但是x 自身的值没有改变!更通常的做法,上述代码可以写成,
main()
{
int x=3
fun(&x);
}
但原理还是一致的。(谭号强的书中可把这种指针传递方式作为传址而单独区别哦,的确是传址,但是地址的的确确就是指针变量的值压!干吗要区分开来)
Void fun(object **a)
{
*object=malloc(sizeof(object));
}
main()
{
object *p=NULL;
fun(&p);
}
此时传递的是指针的指针,对于这种传递的变量,其值是对象的地址的地址,按照规则仅仅是不能改变该值,但是由于是指针,所以可以使用解除引用符号通过在函数内部使用*a,我们可以改变所赋对象的地址(即p 的
指向)。通过在函数内部使用**a,我们甚至可以改变所赋对象的内容(即p所指向的对象的内容)仅仅不能改变的是a 本身,而此时的a 是地址的地址,我们干吗要去改变它那?

4. 总结

c 中函数的参数传递规则只有一条,“值”传递 ,传入的值是不可改变的(因为仅仅传入的是实参的副本)!
请在不同的情况下,考虑传入变量的“值”意味着什么?您仅仅被限制不能改变它的“值”,您是允许改变它的其他的!(当然,您需要有手段来实现)指针提供了这种手段,因为它具有解除引用的功能。所以指针可
以被作为出口参数,因为它能以参数的形式,带回一些什么(对于c,出口参数只能是指针及多重指针类型)
如果你不想通过函数改变某个对象本身,那么不需要使用指针参数来传递。如果你需要通过函数来改变某个对象本身的内容,那么请使用指向该对象的指针作为参数传递来做设计。如果你需要通过函数来改变某一指针的指向,那么请将该指针的指针作为参数传入,并且在函数内部对传入的参数做解除引用操作,*p=new object(此处的p 是传入的双重指针),使得传入的指针的指向改变。
[解决办法]
Deep in C Dual-Point Parameter Transfer Mechanism 
(thought arised from ISHELL_CreateInstance in BREW) 
东方欲晓 

2005-9-28 

1. ISHELL_CreatInstance 使用方式 

ITextCtl * pt=NULL; 
ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_TEXTCTL,(void **)(&pt)) 
上面是再熟悉不过的BREW 接口创建的示例代码了。可是,不知道大家有没有考虑过,为什么需要将ItextCtl 的双重指针(&pt)作为参数传入?ISHELL_CreateInstance 的最后一个参数为什么是void** 

2. 创建对象需要传入双重指针的原因 

现在,我们来解释以上的两个原因。 ISHELL_CreateInstance 的作用是根据clsid 创建一个对象的实例。但是,ISHELL_CreateInstance本身的返回值仅仅标识该函数执行的成功与否。那如何返回创建的对象那?我们知道,C 中的函数有两种带回值的方式,一种是通过返回值, 一种是通过出口参数。显然对于ISHELL_CreateInstance,使用了出口参数带回创建的对象。既然是出口参数,那就应该使用指针类型。并且此处需要改变的不是对象的内容,而是改变指向的对象(即pt 的指向),所以需要传入双重指针。这样当&pt 作为参数传入ISHELL_CreateInstance,该接口函数执行返回后,pt 的指向就改变了,指向了一个已创建的对象。ISHELL_CreateInstance 最后参数需要void 型的指针是为了使得ISHELL_CreateInstance 可以被传入各种指针。 

3. 双重指针参数传递机制 

大家可能对上面的解释还有些不解。那此处就来详细谈谈c 双重指针的参数传递机制。 
首先,我们来谈谈c 函数参数传递的本质。请记住,C 函数的参数传递机制永远只是“值传递”(请忘记以前学的所谓的还有地址传递,下面我将给予分析),因此函数内部不可能改变实参的“值”。此处的“值”究竟代表什么,也就意味着什么是不同改变的。而其他的确是可以被改变的,指针就利用了这种特性。 
我们来看3 个例子,理解传“值”的本质。 
Void fun(int a) 

a=6 

main() 

int x=3; 
fun(x); 

此处,因为传递的是对象本身,所以此处的值代表对象本身的内容。该值不能被改变。所以fun(x)后,x 的值没有被改变。(谭号强的书上对这种传递应该分析的够清楚) 
Void fun(int *a) 

*a=6 

main() 

int y=3 
int *x=&y; 
fun(x); 

此处传递的变量是int 指针类型,对于一个指针变量,它的“值”是它的指向(请体会这一点)。规则没有变,同样是传值,值不能被改变,所有x 的值(x 的指向)不能被改变,但是我通过解除引用符号*,我可以改变x 所指向的对象的内容。所以fun(x) 执行后,x 指向的对象的值被改变了。但是x 自身的值没有改变!更通常的做法,上述代码可以写成, 
main() 

int x=3 
fun(&x); 

但原理还是一致的。(谭号强的书中可把这种指针传递方式作为传址而单独区别哦,的确是传址,但是地址的的确确就是指针变量的值压!干吗要区分开来) 
Void fun(object **a) 

*object=malloc(sizeof(object)); 

main() 

object *p=NULL; 
fun(&p); 

此时传递的是指针的指针,对于这种传递的变量,其值是对象的地址的地址,按照规则仅仅是不能改变该值,但是由于是指针,所以可以使用解除引用符号通过在函数内部使用*a,我们可以改变所赋对象的地址(即p 的 


指向)。通过在函数内部使用**a,我们甚至可以改变所赋对象的内容(即p所指向的对象的内容)仅仅不能改变的是a 本身,而此时的a 是地址的地址,我们干吗要去改变它那? 

4. 总结 

c 中函数的参数传递规则只有一条,“值”传递 ,传入的值是不可改变的(因为仅仅传入的是实参的副本)! 
请在不同的情况下,考虑传入变量的“值”意味着什么?您仅仅被限制不能改变它的“值”,您是允许改变它的其他的!(当然,您需要有手段来实现)指针提供了这种手段,因为它具有解除引用的功能。所以指针可 
以被作为出口参数,因为它能以参数的形式,带回一些什么(对于c,出口参数只能是指针及多重指针类型) 
如果你不想通过函数改变某个对象本身,那么不需要使用指针参数来传递。如果你需要通过函数来改变某个对象本身的内容,那么请使用指向该对象的指针作为参数传递来做设计。如果你需要通过函数来改变某一指针的指向,那么请将该指针的指针作为参数传入,并且在函数内部对传入的参数做解除引用操作,*p=new object(此处的p 是传入的双重指针),使得传入的指针的指向改变
[解决办法]
介绍的很详细,很期待新书的出来
[解决办法]
C中的两个技巧

东方欲晓 2005年 10月13日


以下是c 编程中的两个小技巧。可能大家都已经知道了。此处希望对不知道的人有所帮助。

1. 复杂typedef 的用法

typedef 的最基本用法是 typedef a b; 其中a 是一种已经存在的基本类型, b 则是a 的同意类型。

比如 typedef int INT;

typedef struct _test
{
int a;
char *p;
} test;
INT a;
test test;

这种最基本的使用方式也是谭号强的经典c 教程中的方法。 但是如果仅仅知道这种使用方法,则大量的使用在“真正”代码中的typedef用法可能就完全看不懂了。 比如

typedef char a[2][2];
typedef char* a[2][2];
typedef void(*p)(int,char*);
等等。

我们应该用一种“万能”的方式去使用typedef, 规则如下:(以下 F(a)代表a 的一个表达式)

typedef F(a);

阅读方法:

首先去掉typedef, 则F(a)定义了一个变量a,a 是某个类型的变量。
请记住这个类型(再复杂也要记住)
再将typedef 加上, 此时 typedef F(a); 就定义了一种新类型,类型名为a,真正的类型就是上面需要你记住的那个类型。
非常的简单,而且是万能的,上面提到的几个例子。

typedef char a[2][2];
首先 char a[2][2];定义的是2 维char 类型的数组变量a;
所以typedef char a[2][2]; 就是定义了一种新的类型a,这种类型的本质,就是char 型2 维数组。
此时 a b;就等价与 char b[2][2];

同理, typedef char* a[2][2];就定义了一种新类型a,本质是2 维char型指针数组

typedef void(*p)(int,char*); 去掉typedef,定义了一个函数指针变量p(指向的函数类型为int, char* 作为参数,void 返回值)则typedef void(*p)(int,char*); 就定义了一种新类型p,本质就是指针函数类型(指向的函数类型为int, char* 作为参数,void 返回值)此时 p pfun;就和 void(*pfun)(int,char*); 等价
使用这种方式,任何复杂的typedef 都可以分析。

2. 复杂的强制转换技巧。

对于复杂的类型强制转换,有如下技巧。

如果F(a)定义了一种类型的变量a, 则将另外一种类型变量b 强制转换成变量a 的类型时, 使用 ( F())b 意思是,把a 去掉,并且外面加括号其他不变。
例如:
char **a; 定义了char 型双重指针的变量a。 则要将b 转换成char型双重指针就应该这样写, (char**)b ---> a 去掉,并加括号,其他不变

char *a[2][3] 定义了char 型指针数组的变量a。 则要将b 转换成char 型指针数组 应该这样写 (char*[2][3])b ---> a 去掉,并加括号,其他不变

void(*a)(int,char*); 定义了一个函数指针变量a(指向的函数类型为int, char* 作为参数,void 返回值) 则要将b 转换成这种函数指针类型 应该这样写
(void(*)(int,char*))b---> a 去掉,并加括号,其他不变
使用这样方式,再复杂的类型转换都可以
当然,如果结合typedef,就可以写的更加简单了。
[解决办法]
顶起来,顶东方兄
[解决办法]
brew深入的书太少了,对brew签名感兴趣。
[解决办法]
刚开始接触BREW的时候就是在网上看了一些东方兄的文章,感觉很棒。
希望如果出书的话再带一些lua和themec等相关内容。
[解决办法]
该回复于2009-09-25 10:52:46被版主删除
[解决办法]
希望早点出版!呵呵
[解决办法]
顶上,希望对手机启动及应用内存管理讲详细一些
------解决方案--------------------


请问下楼主有brew 动态应用的资料么
[解决办法]
顶,大力支持。
[解决办法]
期待啊
[解决办法]
顶起 相当的期待!
[解决办法]
偶也是刚刚接触BREW的菜鸟,看过几篇东方兄的文章,受益匪浅啊,希望你的书快点出版啊!!
[解决办法]
期待啊。.
[解决办法]
期待,但是要看实际内容,如果是泛泛说下,那就没什么意思了,有API就行,真正能深入说的,我肯定会买本,
我最近就在找一些国外这类书,要详细的!
[解决办法]
提供c++的入门,代码编写,编译方式等,现在大多数都是c的
[解决办法]
支持,我最近也在学brew
[解决办法]
顶,很全面。。

我以前都自己网上一个一个的找,发现这里很系统,全面。
[解决办法]
看着目录,就很吸引人。非常期待!
[解决办法]
支持一下,共同学习。
[解决办法]
很期待啊,实在对brew有太多的疑问了,真的是期待着能够弄清楚这里面的奥秘哦!!
[解决办法]
还应该多加点c++的东西
brew里用到cpp的地方也越来越多了
[解决办法]
哇哦, 简直是BREW的大集合, 囊括了好多东东~

[解决办法]
什么时候写好?写好哪里买?快点写好啊,要保证质量哦
[解决办法]
你的书啥时候能出啊,我先预定一本啊
[解决办法]
偶开博啦

http://blog.csdn.net/nicefuture

希望大家多多光临

谢谢~~~~
[解决办法]
刚要开始学BMP,支持你的创作
[解决办法]
顶,期待中,希望多些实例,
[解决办法]
太强了

热点排行