BREW到底是什么?

来源:互联网 发布:php权限管理系统源码 编辑:程序博客网 时间:2024/04/28 23:02

作者: 东方欲晓  发布日期: 2005-9-18    查看数: 2026出自: http://expert.imobile.com.cn
原址

为什么要写这篇文章:
  接触BREW已经4个多月了,虽然时间不是很长,但是对brew还是有一定的了解,也有一些我自己的见解。我是一个不喜欢单单为了做好工作而只去学习对工作有用的东西,我喜欢刨根问底,喜欢知道一样东西究竟是什么。现在不管是作brew develop的,还是brew oem的,其实存在一个问题,就是不是真正理解brew究竟是个什么东西,当然这并不直接影响他们的工作。但是,我个人认为,如果连brew究竟是什么都不知道,而去porting一些接口,用一些接口,是显得很“空虚”,你不能乐在其中。曾经网上看到好多关于误解brew的一些帖子,现在我觉得有必要写一篇阐述brew究竟是什么的文章。当然,我的见解也不是权威,也可能会错。只是将我理解中的brew呈现给大家,如果对你有帮助,我会很开心。如果有错误,请指正,或者相互探讨。

高通对brew的定义:
  有很多文档中都有对brew的定义,我也不想去查证哪一篇文档上有最权威的关于高通对brew的定义。我只是就我看过的一些高通的文档,总结归纳出高通对brew的定义。简单而言,高通对brew的定义就是:brew是一种无线移动网络中的端到端的解决方案。
BREW-4字母之我见:
  如上所说,brew是一种解决方案,那brew4个字母究竟是什么意思那。按照我的理解,B是针对j2me的虚拟机(解释)而言,说明brew的目标文件是二进制代码,不是中间解释程序。R说明brew是动态加载机制,只有当需要运行的时候,代码才加载运行。E代表BREW不仅仅是一些接口API,BREW有自身的内核,有自身的执行环境(AEE环境)。W代表BREW是专门针对无线移动的解决方案。
BREW与操作系统:
  经常看到有人拿BREW和操作系统相比较,最多的莫过于和Symbian作比较。“你觉得BREW和Symbian哪个好?”“我觉得BREW没有Symbian好”等等,诸如此类。其实,这两者根本没有可比性。BREW不是操作系统。本质上来说,BREW仅仅是运行于操作系统上的某个task中的一个软件而已。BREW位于操作系统之上,BREW在手机上的实现需要操作系统服务的支持。从理论上来说,BREW可以在任何操作系统上被支持起来。所以,不能将BREW和操作系统作比较,不具可比性。就好比你拿windows和vc作比较,那是很可笑的。
BREW和编程语言:
  另外经常看到有人拿BREW和java语言来作比较。这两者也根本不具有可比性。java是一种编程语言,编程语言用来编出软件。而BREW,你可以把它看作是软件,至于是什么编出来的,你无需考虑。 这样的比较,就好比拿bt软件和python语言(bt软件的开发语言)作比较,也是很可笑的。另外补充一点,虽然BREW环境的实现是用C语言,但是BREW应用的开发。“理论”上来说应该可以任何语言,目前主要是c,c++。其实,如果拿BREW和J2me作比较,那才具有可比性。详细见下面一节。
BREW是中间件:
  更多的人是拿BREW和j2me来作比较,因为他们分别是现在联通和移动所倡导支持的。为什么具有可比性那。因为就我理解,他们都是中间件技术。brew是中间件!
  中间件位于操作系统(以及native软件)与上层应用之间。通过它,可以使得应用的开发变得可扩展,灵活和“标准”。
  首先,我们看看没有中间件出现时的手机开发模式。
  此时,整个手机的开发都是oem厂商完成的。他们在手机的操作系统上编写一个个的task代码,编写一个个特定功能的底层api函数和服务(我们称之为native),然后再利用这些native的代码编写一些手机应用,比如电话簿,短信等等。此时,任何第三方都将无法进入这个行业,因为他们需要了解这个手机的系统,以及这些native的api,才能开发上层应用。但是,通常这些都是保密的。所以,那个时候,几乎没有develop的存在,只有oem。
  而中间件技术出现后,整个手机开发模式被改变了,我们以brew为例。
  我们把上面所讲的开发模式称之为纯native开发模式。而一旦handset被porting brew之后,那么在native之上就多了一个中间层,即中间件。中间件(brew)定义了一套标准的接口(环境),这套标准的接口(环境)是面向上层的,面向develop的。而这套接口(或者环境)的实现则是调用了native(以及操作系统)的服务,我们称之为porting。这样,中间件屏蔽了底层的差异性和具体实现,对上提供标准的接口。从而催生了手机develop这个行业的出现。因为,他们无需考虑具体手机,只需要利用中间件提供的标准接口(环境)来开发可移植的应用。这种可移植性的本质是因为,对于develop所呈现的“共性”是通过oem的“个性”来呈现的,并且通过中间件这样一种模式,屏蔽了这种共性和个性之间的联系。使得使用和实现分离。达到了可移植性!
  说到中间件技术,其实现在最多提到的就是j2me,brew,mhp。j2me是通过jvm在不同平台上的porting来提供通用的java接口。mhp是机顶盒上现在用的很多的中间件标准,具体的我就不是很清楚。另外,brew和j2me还是有区别的,因为j2me仅仅是一个瘦client型的中间件技术,不涉及端到端的整套方案。而brew不仅仅指handset上的中间件(brew)同时还包括ads(服务器端),所以brew不仅仅是中间件,完整的说,就是高通的定义,是一种端到端的解决方案。
BREW是设计模式:
  我对设计模式仅仅是初学而已,所以这里仅仅是我的见解而已。我认为,BREW是一种特殊的,可扩展的Facade设计模式。Facade模式的意图是简化现有系统的使用方法,重新定制一种新的接口(或者方式),并呈现给client,使得client更容易的使用现有的系统。在没有brew出现之前,client(上层应用)使用系统(调用系统服务,达到特定功能)的方式是native的方式(直接调用操作系统或者native的api),这种使用系统的方式非常复杂,而且通常对第三者不可用。通过brew,我在native基础上重新定制了一个新的接口(平台,环境,或者方式),并将它呈现给client(上层应用)。这样,client通过这个新的接口(平台,环境,或者方式)同样实现了某种功能,但是却更加的方便。
  为什么又说是可扩展的Facade设计模式那。因为通常Facade模式中所说的定制的新接口所提供的服务往往是原有系统所能提供服务的子集。BREW也如此,只能通过所有的Interface向client提供服务,当然不能包括整个handset理论上所能提供的所有服务。但是,我们知道BREW本身是可伸缩的,比如可以由oem扩展接口,或者oem裁减掉一些接口,或者随着brew版本的更新也会扩展一些接口。这样,对client所提供的服务也就具有伸缩性,所以我称之具有可扩展性。
  另外说是特殊的Facade模式,是因为Facade模式没有强迫所定制的新的接口需要是“标准”的接口。但是BREW对外提供的确是标准的接口。它使得cilent(应用)具有了可移植性,所以我称之为特殊。
结束:
  在这么多大虾的面前,对BREW妄加评论,无他,仅仅分享我的见解而已,如果对你有帮助,则有感一丝欣慰。如果有什么错误之处,还请指教。也请大家,相互交流。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 y一夜没有睡好现在母乳不够怎么办 喂母乳的婴儿总要吃奶怎么办 宝宝四个月了奶水不够吃怎么办 宝宝出生十天了奶水不够吃怎么办 宝宝晚上不吃奶了奶水多怎么办 我家小孩六个月了奶不够吃怎么办 六个月的宝宝奶不够吃怎么办 宝贝六个月了奶不够吃怎么办 奶不够吃宝宝又不吃奶粉怎么办 婴儿到新环境哭闹不睡觉怎么办 婴儿到陌生地方狂哭不止怎么办 在家里遇到有人有陌生人敲门怎么办 在家里晚上睡觉遇到持刀小偷怎么办 在租房中房东随意调换房间怎么办 梦见熟人当面说我坏话偷东西怎么办 偷了家里的存折拿了钱该怎么办 故意让小偷偷车捉住他怎么办 进屋门正对着厕所门怎么办 楼房对面门上放个镜子我该怎么办 从顺丰发的水果坏了顺丰不管怎么办 汽车塑料件被机头水腐蚀了怎么办 孕期吃了炒菜里面加的香精怎么办 五个月宝宝只长身高不长体重怎么办 孩子6个月奶水越来越少怎么办 孩子快三个月了奶水越来越少怎么办 老婆生完孩子乳房肿胀不下奶怎么办 大人吃了退烧药不出汗怎么办 三岁宝宝抵抗力差总生病怎么办 8个月宝宝发烧39度怎么办 小孩发烧吃了药不退烧怎么办 小孩一直发烧39度左右不退怎么办 九个月宝宝反复发烧39度怎么办 八个月宝宝反复发烧39度怎么办 十个月宝宝反复发烧39度怎么办 2岁宝宝反复发烧怎么办39度左右 宝宝两周岁光吃水果不吃饭怎么办 3岁宝宝光吃水果不吃饭怎么办 中学生就爱玩儿游戏不爱学习怎么办 一岁宝宝只吃水果不吃饭怎么办 孩子发烧咳嗽怎么办最有效的方法 打了百白破孩子一直发烧咳嗽怎么办