开源android

由于最近工作和android这个平台相关,所以把以前保存的内容贴出来,以备查找。

注:原文地址没找到,找到以后会及时更新......


随着上周Google的Android SDK的发布 ,关于它的API以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举。不过,其中的一个话题在Java社区是一石激起千层浪,这就是Android平台 的基础——Dalvik虚拟机

Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。一直以来都有人在猜测,选择基于寄存器的方式是因为它对提前优化(ahead-of-time optimization)提供了更好的支持 ,而这对类似于移动电话这样的受限环境是颇有裨益的。另一份针对基于寄存器虚拟机和基于栈虚拟机更深入的比较分析 指出,基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。

Dalvik和Java之间的另外一大区别就是运行环境——Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。Neil Bartlett 指出 ,给每一个应用赋予独立的进程可以允许动态安装、激活和去激活,但是他对Dalvik为什么要选择这种方式而没有使用OSGi在单一进程中实现表示疑问——Radoslav Gerganov回复说 ,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。Carl Rosenberger也指出 OSGi也可以被移植到Android平台,而Jilles van Gurp 对Google为何选择重新实现若干组件 ,如跨进程通信,表示疑问。

此外,Java也已经不再是人们在Dalvik上开发所选择的唯一语言了——已经有人在Dalvik上运行Scala取得了成功 ,并且Hecl 也已经被成功移植 了。另外更有人对运行Groovy做了一次尝试 ,不过目前为止还不怎么成功。Mono项目 的创始人Miguel de Icaza 也对在Dalvik源码公开之后将Mono整合到Dalvik上表示了兴趣 ,而且也已经有人猜测如何用多种方式来实现整合了,包括与随Android SDK提供的Java到Dalvik重编译器类似的CIL(Common Intermediate Language,通用中间语言)到Dalvik重编译器。

Dalvik的诞生也导致人们开始忧虑Java平台的第一次大规模的分道扬镳或许已经是进行时了——有人已经把Davlik和微软的JVM 以及Sun对微软的诉讼 联系起来,等着看Google身上是否也会发生类似事情;另外一些人则指出,Google并没有宣称Dalvik是一个Java实现 ,而微软却是这样做的。Sun也对可能带来的阵营分裂表达了忧虑情绪 ,并提出和Google合作来保证Dalvik和JVM之间的兼容性——Google对此的解释是,Dalvik是对解决目前Java ME平台上分裂的一次尝试,也是为了提供一个拥有较少限制许可证的平台。甚至还有人怀疑这是否是Sun和Google两大阵营对Java之未来的一次大规模较量 Ian Skerret 认为,Dalvik的诞生是对Sun尝试控制和保护来自Java ME收入来源的一次反应 ,以及对建立OpenJDK 统辖理事会迟迟未果的回答。这也导致Dalibor Topic 怀疑Google是否要重履Sun走过的路

当然,一个很有意思的问题是,为什么没人有勇气拿Google关于OpenJDK的问题反过来问Google呢?

虽 然Android号称开源,但它仍是专有产品。Android做过兼容性保证,是在秘密会议室中签署和保管的。Android不具备任何治理模型,也没有 证据指出将来会出现治理模型。Android没有规范,并且它的许可证禁止任何替代实现的开发,因为这并非Google在SDK许可证中授权许可的使用 权。Android完全在Google的掌控之下,一旦有竞争性应用在财政上损害了Google的利益,Google是保有一刀抹杀这些应用的权利的。从 设计伊始,Android就收到限制,只能在Google的财务利益允许的条件内开放。专有的Java也不是什么好货色,旧瓶装新酒而已。

这就好像我们在见证JCP的重生一样,人们排着队把开源社区的“街头信誉”在一个单一的、专有的实现的基础上借给另外一个封闭的厂商垄断集团。只不过这次的大头改姓Google,而不是Sun了。

Stefano Mazzocchi 发布了一篇分析报告,深切入里地探讨了围绕Java ME和Dalvik的许可证问题 , 他得出结论说,Dalvik的市场定位良好,足以给移动电话市场带来冲击。尽管Google一直都很小心避免引起诉讼的几个关键点,但Mazzocchi 相信Sun还是会起草知识产权案的状告书(IBM也有可能)。他还指出,由于在JCP之外操作,Google可以非常快地对Android进行更改,而且 可以避开Sun对任何JCP更动的否决权——这样他们也可以为诸如USB和蓝牙这样的组件加入接口,而这些组件在基础Java ME实现中是不可用的。最后,通过在Apache许可证下授权许可Dalvik的源码,移动电话运营商更有可能采用Dalvik,因为运营商可以在不花费 许可费用的情况下使用和修改它。

看起来Dalvik已经在Java社区中掀起了轩然大波——您持的又是什么样的想法呢?

我浏览过大多数相关英文网站,发现android这个平台的大多数源码已经开源了,唯独虚拟机dalvik没有开源,但也有人在研究dalvik源码,有相关代码。晕了。如果哪位朋友知道dalvik的源码地址,希望能给我留个言,感谢!

更多相关文章

  1. Android设计模式系列(1)--SDK源码之组合模式
  2. Android 利用广播实现黑名单【指定号码】的短信的拦截 附源码下
  3. Android 中LayoutInflater(布局加载器)之源码篇
  4. Android异步消息处理机制详解及源码分析
  5. Android PinyinIME 源码笔记 -- 1. 底层服务接口简介

随机推荐

  1. android intent深入解析
  2. Android(安卓)NDK开发入门篇 .
  3. android学习小结3
  4. Android关于SD卡中多层目录的创建
  5. Android Logo消息角标数字提醒
  6. Android 网络连接-重试机制-HttpRequestR
  7. android启动时自动抓取logcat
  8. Android世界的Swift - Kotlin语言
  9. android 锁屏页
  10. android聊天表情开发