Google中国工程研究院副院长林斌演讲

来源:百度文库 编辑:神马文学网 时间:2024/05/01 03:26:24
今天非常荣幸的是,不仅是我们现场的朋友可以感受到这次大会的盛况,由于有了新浪网以及CSDN网站的现场直播,有更多的朋友都在和我们共同见证这一激动人心的时刻。刚才在滚动大屏幕上,看到有朋友说今天的现场真是高手云集,不仅是高手而且是顶级的高手,在这里我们有请Google工程研究院副院长林斌来到我们现场,林斌曾经担任微软亚洲工程院工程总监,2006年底加入Google,任Google中国工程研究院副院长工程总监,全权负责Google在中国的移动搜索与服务的团队组织与工程研发工作,有请。
林斌:谢谢主持人的介绍。
最近几个月Google有很多跟我们在座每位程序员都相关的产品发布,大家可能都听说过,最热门的叫Android,次热门的也是最近大概两三个月之前的发布的跟SNS相关的产品,有没有朋友听说过Open  Social,用过的应该是零,没有人用过。有一位,用的感觉怎么样?
Open Social也是我们发布的跟程序员相关的产品,今天下午会有Google中国工程研究院的另外一位副院长姚宝钢给大家讲另外一个相关的技术,大家也都用过见过听过,叫Gear,今天下午大概是一点钟,欢迎大家去宝钢的讲座,非常有意思。今天我用20分钟的时间跟大家介绍一个最近很热门的产品Android,听过这个我就不问了,我想在座的程序员,下载过SDK的程序员请举手,还可以,大概20、30位的朋友。除了下载以后,真正用Android编过程序的在座的程序员请举手,有好几位。编起来感觉怎么样?不错啊。有没有死机过的?我自己编过一次,第一次还好,第二次就死机了,问题还是很多。
所以我今天给大家简单地讲一下Android的框架,为什么要做这个?今天有一个非官方的统计数据,统计下来,全世界有30亿的用户,是什么概念?全世界大概有8亿台的汽车,这个数目也非常大,8亿台汽车以外,在网上搜搜发现有13亿台的固定电话,15亿台的电视机,也是很多,14亿张信用卡,在座很多的都有信用卡,但不是每位朋友都有汽车,电视机基本上每个人都会有了。如果前面不算的话,如果看看跟互联网相关的大概有8.5亿台的个人电脑,用了个人电脑上网的大概有11亿的互联网用户,这个数目听起来非常大,可是这些数目怎么比都比不过我们手机的数目,我相信在座的每一位朋友都会有手机,而且可能不只有一个。所以手机数量非常大。
Android主要的目的就是一个,希望在座的每一位程序员以及全社会30亿的手机用户能够有一个一流的用户体验,而且可以用它访问全球信息的,并且让每位朋友从中受益的这样一个手机平台。我们再来看一下这个手机的平台,为什么这么做?
这里有另外一张图,这是由第三方权威机构统计的图,这张图基本上就是手机的操作系统的价格跟手机价格的比较,大家可以看到,大概早几年前,手机的这种开销价格的话,大概是两百美金一个的水准,那时候手机操作系统的价格大概也就是20块钱,占整个手机价格的1/10,非常低。可是随着手机成本越来越降下来的时候,03-08年这五年以来,手机价格差不多降了一半,手机操作系统的价格还是维持在20块钱。从比例来讲,占原来手机价格1/10,现在占到手机的1/5的比例。怎么样在第一建立一个很好的手机体验的手机上,同时让说几操作系统降下来,这样用户也可以从中受益,这两点就是一个基本的原因,就是为什么要做Android。
讲到全面的原因以后,我们再看一下究竟Android是一个什么东西,Android其实是很基本的两点:第一点,Android是一个手机的开发平台,平台有几个要素:一个是它是开源的,开源对在座的每一位程序员都有帮助,开放源代码就是什么地方不好可以改动,对每一位程序员都是非常好的事情。同时因为是开源,自然是免费的,所以操作系统的价格就可以降下来,这样用户就可以从中得益。除此以外,还是一个完整的系统,这个系统除了最底层的操作系统以外,还有中间层,还有上面的一些很有用的应用软件,都是包括在了这个平台里面,可以说这个平台是已经包括了所有的需要构造一个手机的整个系统的必须的元素,都具备了,有了这样的一个平台,拿起来是开源的代码,可以往上加一些自己喜欢的应用程序,就可以发布一台手机了。
第二点,这么一个系统听起来很好,非常的强大,什么都有。怎么做?做这个系统,纯粹Google的能力是很难做到的,纯粹任何一家公司是很难做到的。所以我们成立了一个开放手机的联盟,这个联盟有很多很多我们的合作伙伴,包括大家都非常熟悉的运营商、手机开发厂商、软件服务器公司,我们都在一起,这些合作伙伴在一起的目的就是为了把Android系统做的更好,让这个系统更完善。一个是希望给这个系统提供非常好的尖端的创新的技术,同时这个技术提供出来以后,是开放的,我们还是以开源为宗旨,这样的话合作伙伴在这个平台上做一些构建、技术创新的时候,可以把这个技术作为开源的方式,让所有人从中受益。
我们来仔细看一下开放联盟是什么样的。这个联盟分了五类的合作伙伴在这面,第一类就是我们很熟悉的手机运营商,运营商有很多的资源、很多的能力,能够提供非常好的服务以及支持。比如我们很熟悉的在日本的KDDI,Docomo,Sprint,以及中国移动都是手机开发联盟的一部分。做手机总得有手机的厂商,在这个联盟里面有很多出名的手机厂商,比如HTC,在台湾做的很棒的手机制作,还有三星和LG。除此以外,有了手机厂商自己是重视手机的,如果没有这一系列的半导体公司给他们提供各种各样非常好的芯片的设计和技术,第三类公司就是所谓的半导体公司,像大家很熟悉的Intel、BROADCOM,GPS全球定位的,都在里面。除了有了硬件、有了运营商以外,下来比较需要的就是所谓的软件服务公司,Google在这里,除了Google还有eBay,还有,都是一些软件公司。最后一类的公司就是所谓的系统集成商,他们能够跟公司很多一起合作,做的非常好把它做出来。整个联盟的目的就是做服务贡献,以开源方式给全世界的手机厂商跟有兴趣做手机的朋友们开放。
另外我们回到Android这个平台的设计理念,实际上我们的理念非常简单,我们就想做一个一流手机体验的平台。一流怎么定义呢?分析很酷的东西多媒体等等这些,这些是应用程序上可以做的,在手机平台上设计的话,其实就是根据这四点的设计理念来做的。有很多就是及时响应,我用手机经常碰到一个问题,我手机打开,用一个软件浏览器按下去出来了,网络的问题上不了网,就死在那里,等半天,想换到别的程序也不行,所以响应非常慢。及时响应很难做,因为网络的问题以及手机的内存问题,我们希望手机的平台及时响应,什么程序马上反应。
第二点,不会死机,这点很难做。我拿一个手机,上面跑一个程序,程序死机非常简单,做程序员的都知道,程序死机不存在,程序死机不代表我的手机挂掉,电脑死机了重启就可以了,手机实在不行把电池拔出来就可以了。我们的设计希望能够平台设计的不会死机的。
通话切换,也是简单的要求,如果打电话的时候,我突然想起来要记一个人的地址、姓名,打开联系人的软件,然后输入,但是发现不行,因为我在通话,把通话挂断才能输入信息。程序之间转换非常难。我用一个程序,到另外一个程序,这个程序的状态不会变,我现在浏览一个网页,然后我跑去打开联系人、打开电话,回来的时候我看网页的时候应该就是我前面在看的网页的内容,不应该让这个网页删掉或者看不见,所以这些理念听起来蛮简单的,但真正实现起来有很多很多困难,所以我们在做平台设计的时候,同时跟手机联盟一起做Android平台的时候要解决这个问题。整个技术的平台都是基于Linux做的,都是做的很好的平台管理,可以支持手机。
因为时间关系,我这里有非常详细的介绍就是整个Android系统框架的介绍,基本底层就是Linux内核,是基于Linux2.6做移植的,驱动都非常成熟了。再往上走是我们的Android的本地库,Libraries,都是用C++写的,所以运作的效率非常高,像OpenGL是支持三维库的,这个库还有一个好处,如果你的手机有硬件图象加速器的话,可以充分调动这个加速器。这边还有一个Media Framework是能够播放所有类型的解码器,所以大家在这个手机上就可以听音乐、看视频,都没有问题。FreeType是字体的。这边是Android有一个很大的方面,就是虚拟机叫做Dalvik,有三点主要的特征,它非常优化:第一是完全优化的虚拟机,在虚拟机里面是共享的,还有一个是对内存的应用非常有效。这个Dalvik虚拟机在不同的程序都可以运行,如果一个程序造成Dalvik死机的话,另外一个是不会死机的。
上面是用JAVA语言来实现的,在这上面标了一层应用程序,这是整个Android,大家在网上下载的就可以看到,比如有联系人、有打电话等等这样子。
在编写每一个程序的时候,实际上每一个程序可以分成四类,简单说一下:
Activities是一个用户界面,一个可以想像成一个屏幕一屏,举个例子,大家要编写一个邮件程序,可能要有三个Activities,一个是可能是显示一个邮件的,第二个显示邮件内容,第三个是编写新邮件的时候Activities。
IntentReceivers,我可以编写一个程序,我的Intent是要浏览网页,当别的程序触发你的程序我要浏览网页,就会触发你的程序,你的网页就会跳出来,然后就可以浏览网页了,所以实际上是各个联系整个所有的程度的一个很重要的机制,也是这么一个东西使的它在这个程序上完全显现,所有的程序都是一个完全关联的,都能够互相调用的体验。服务Services就是没有意外的,比如听音乐,打开以后就放了。最后ContentProviders,可以让你的程序所有的程序共享,比如联系人,就是一个共享的,我可以让所有在这个手机上的别的应有程序访问联系人的姓名、电话、地址,所以它是一个蛮重要的组成部分。
最后举个例子,所有的应用程序都有一个共同的目的就是要挑选图片,比如在我的HOME的时候我要挑选一个墙纸,挑一个联系人的图片放在里面,在彩信的时候挑选图片发出去,挑选图片这样一个请求,请求出来以后系统会根据在整个手机上的注册,挑一个最好的,一开始会跳出Photo Gallery的程序,你要挑图片嘛,给你一个UI然后挑出图片。我觉得这个系统不好,选择Picasa这个,下次再挑图片的时候就会自动去Picasa这样的东西。
还有Google公司出了1000万美元,出了一个Android程序员挑战,能够制作出最有创新创新的Android程序员和程序员的公司,1000万美元。大家有兴趣的话,可以上我们的网上看看SDK,可以下载下来。我简单做一个Demo。大家如果下载了SDK的话,所有的Demo内容都在里面,打开以后,到这里来Others,这里面打一个项目名字,随便打一个,Project的名字可以打上大家觉得有用的,ActivityName就打一个项目测试二的名字,Application就可以打一个名字,点击以后就生成了一个文件,这个文件里面有打开源程序,这个源程序关键还是这个源程序。还是刚才讲的Activity,是只有一个屏幕和界面的非常简单的程序,我们什么都不用做,马上执行Debug,这里就编译这个地方就出来了,这是一个仿真器,这个仿真器装了SDK就有,是跟着SDK来的。我这么简单好象不过瘾,我们用里面一个类,这个类可以改它的字体和大小。我们可以在这个代码这里加进去一个类:TextView tv=new TextView(this),这里面会出现很多的类,比如打上tv.setTextColor,用16位表示的话,前面两位是亮度,后面的六位是红绿蓝三个颜色,所以如果我们让颜色变成红色的话,把后面两个就变成FF,最后两个变成00,一共是四个0。我们再把Size改一下,这个Size打大一点36。再下来我们要把字体打上去,就SetText好了,我们打上(“Hello Android from CSDN 2.0”),我们在SetContentView就把TV打上去,这么简单的程序,再运行看看。选Yes,Yes、Yes、继续。然后就出来了,效果就出来了,非常简单的程序。欢迎大家下载,希望我们的SDK的下载量第一的同时的话,也可以赢取1000万美元的大奖吧。谢谢大家。
主持人:非常感谢林先生。其实我们与在座各位的相聚才不过一个小时的时间,大家都和我同一个感觉,就是不虚此行、满载而归,我们的承诺是在这两天里,我们将给您更多,让我们期待吧,在接下来的30分钟里面,我们稍微休息一下,共同回味一下所思所想所得,我们期待着您再次光临我们的现场,踏上我们的科技之旅。稍候再见。