大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Scott Delap 译者 张龙 发布于 2007年11月14日
今天Google发布了Android SDK。 它是在Open Handset Alliance(开放手机联盟)宣布后不久发布的。Sun公司CEO Jonathan Schwartz高度称赞了OHA以及它对Java的支持。然而,直到今天我们仍旧不是很了解Android中关于Java的一些细节。Android使用Linux2.6作为硬件抽象层的基础,该底层系统提供了驱动支持、内存管理和网络支持等功能。在该抽象层之上是一套用C/C++编写的本地库,该库提供了如下一些特性:OpenGL、字体、多媒体编解码器、SQL Lite和用于浏览器渲染的Web工具集。其中比较有趣的地方就来自于该抽象层的上一层和Dalvik虚拟机。
Google没有提供一个Java SE或Java ME的完整版本,而是另行其道。首先,Google提供了一套Java核心包的有限子集。该子集包含了平时使用比较多的包,例如:java.nio、java.lang和java.util。除了Android的类库外,还使用了一些开源项目,其中包含Apache的HttpClient。然而,JME类和传统意义上的Java UI包(Swing和AWT)并没有出现。实际上这种方式正是Google在另一个项目GWT所采取的模式,GWT使用Java作为开发语言,但是并不是说JDK的所有特性它都支持。
Android使用了一个定制的虚拟机来运行应用程序,这些应用程序是用它所支持的Java语言子集来编写的:
每个Android应用都运行在它自己的进程里面,使用它自己的Dalvik虚拟机实例。Dalvik被设计成为可以在一个设备中有效运行多个虚拟机。Dalvik虚拟机执行Dalvik格式(.dex)的文件,该格式对于有限内存的情况做了优化。该虚拟机是基于寄存器的,并且运行由Java编译器(已经被内嵌的“dx”工具转换为.dex格式)编译成class文件。Dalvik虚拟机依赖于Linux内核来完成一些底层的功能,例如:线程和底层的内存管理。
Dalvik已经对在有限的电池和CPU的情况下移动设备的运行做了优化。Apache V.P.,JCP的Geir Magnusson 指出Dalvik使用了Apache的Harmony类库。Android SDK采用的是Apache软件许可。Ars Technica详细比较了该许可和GPLv2许可之间的差别。

上面的图片展示了Android栈示意图。蓝色部分是用Android的Java子集来编写的。这包含了应用框架服务,例如资源管理和窗口。Android Phone的核心部分、Browser和Contacts应用也是使用Java来编写的,并且运行在Dalvik虚拟机下。
Android SDK 目前支持Windows XP及之后的版本、OS X10.4.8+和Linux,同时需要JDK5或6。虽然Eclipse并不是必须的,仍有一个Eclipse3.2+的插件随着调试工具和模拟工具一起被提供。
先前一些开发者对该SDK的评论是好坏参半。一些人认为不应该使用Java lite:
……我认为这是令人失望的。没有与任何一个Java组织结盟是一个让人感到可惜的设计抉择。在我看来,Android与现存的所有东西都是不兼容的,然而这种设计毫无必要。除此之外,Android重复了很多Java、J2ME和很多开源项目的现有功能。我相信每种情况Android都会有自己的考虑,但是结果却是重复发明轮子。总的来说,我怀疑与现存的东西相比,Android的APIs是否更快、更灵活、更易用……
Ryan Block从更一般的角度提出了对Java的质疑:
Android采用Java作为应用层环境,对此感到失望的肯定不止我一个人。……Android已经拥有了比一般支持Java设备更优化的框架,一个移动多任务的Java虚拟机应用环境肯定不如操作系统的本地代码运行效率高。这一点已经可以在演示视频里面看到了,视频中一些挥动、轻点、轻触的手势比起iPhone / iPod Touch要笨拙得多,视觉上也没那么炫……
其他人比如Ed Burnette认为Android这样做是对的:
……对于开发者来说这确实是一个好消息,因为我们不必再为了不同的架构去重新编译程序,例如编译一个ARM版本,再去编译一个x86版本。这对于厂商来说也是一个好消息,因为他们在手机硬件设备的使用上拥有了更大的灵活性。他们可以采用新的处理器而不用担心影响现有的应用。……查看英文原文:Google's Android SDK Bypasses Java ME in Favor of Java Lite and Apache Harmony
译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。
AWT太笨重了,Swing不够酷,SWT即酷又方便,可惜好像目前用的不多。Google Android SDK的UI部分用的是什么呢?
我是一个.net使用者,但是我一直关注着java社区。
总的感觉是java社区里各自为政的问题好突出,先是ibm,现在是google,自己的虚拟机,自己的UI,似乎都不买sun的帐,ibm在java的应用上取得了巨大的成功,google是否也想复制这种模式呢?
也可以说是好事。Sun在某些方面固步自封,另一方面JCP扯皮又太多,IBM和Google财大气粗自然不鸟它。分歧也不见得是坏事,如果都跟着Sun的屁股转,大家恐怕还在受着EJB的煎熬呢。
不过Android这个还真是“伪”Java。另外Mono也说有兴趣实现一个CIL-to-Dalvik recompiler。
从SDK来看,应该是他们自己实现的一套东西。
看看他们的UI继承就清楚了,View继承于java.lang.object,另外onjava上有一篇好的文章,可以去看看,www.oreillynet.com/onjava/blog/2007/11/android_...
另外,thethirdpart打算加入android的adc行列,如果有愿意和我们一起来分这分羹的朋友,请和我们取得联系。www.thethirdpart.com/blog
我倒是觉得Swing在Windows是运行得挺不错的,正确配置下,感觉不到跟Windows程序有什么差别,不知道是不是新版的库有所改进!
相信google将有很好的发展,让我一起学习进步,欢迎访问www.loveandroid.com
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
7 条回复
关注此讨论 回复