JavaME无法满足Android,只有设计Dalvik

很多网友可能发现Google在Android手机软件使用的并不是常规的C/C++开发而是更高层的Java语言,但是主流的手机上使用的均为 JavaME VM和T-Mobile G1上使用的Dalvik VM相差甚远。

Android为什么不使用Native C/C++

其实不难理解这个问题,如果你了解移动开发就很明白Symbian Series60平台使用的是Native C++,但更趋于STL库,通过typedef使得整个类型变得更不明朗,由于EPoc的前身构架针对的资源受限的移动设备而言,目前越来越有不符合时代 的发展要求,至少开发效率上无法满足当前发展,即使S60智能机也主要使用的Symbian J2ME作为游戏开发平台。

第二个就是微软Windows Mobile,虽然支持Native C/C++开发但是不难发现以前都是使用Win32 SDK来编写程序,整个过程是一个结构化的过程,无法很好的管理项目,后来微软将.Net Framework移植到了自家的WinCE平台,改名为.Net Compact Framework以及后来更精简的.Net Micro Framework,Android手机网统称为.Net CF和.Net MF。

全新的智能平台iPhone使用的是Mac OS X,由于核心构架为早期的Unix内核,使用的是Apple自己的Object-C语言来开发,虽然支持面向对象但是似乎感觉不如直接使用C或Java来 得明朗,在移植上面也是最头疼的平台。Google选择使用Java语言看中的是开发效率和简单性,后来延伸的就是平台的安全以及更多的目的,阻止第三方 库入驻,我们知道在Android构架中webkit浏览器、openGL图形层都是使用的C/C++提前封装好的,其他的Firefox、Opera浏 览器只能使用Dalvik这样的Java层开发性能自然受限。

Android为什么不使用Sun JavaME

首先JavaME无法满足Android手机的需求,传统的J2ME主要用来开发手机游戏这类的高层或更抽 象的应用,而Android上的Dalvik需要管理整个系统逻辑,包括消息循环,包括电话、短信程序都需要Dalvik做得的Shell来和底层服务器 交互,JVM无法满足系统常规逻辑处理,比如多线程多任务的效率等等,在这些方面 Dalvik是经过优化后设计的,如果你了解Android整个构架就完全不会想起问这个问题。

早期的传闻说是因为Google为了躲避Sun JVM授权,可能有这样的问题,但仔细回想,如果Google没有开发Dalvik VM的话,它们开发设计了什么?整个平台使用的主要均为开源库,即使是自带的Chrome Lite浏览器也是webkit内核,自己研发Java虚拟机可以高度化定制,设计程序的整个安全细节。

最后我们就不难发现Google开发Dalvik和放弃Native C/C++是经过多方面考虑的,完全可以实现了有C/C++的能力和Java的高效开发,同时自己可以定制平台,修改平台安全模型。

更多相关文章

  1. ubuntu环境下android开发平台的搭建
  2. Android平台上长连接的实现
  3. 跨平台框架---uniapp--打包
  4. 微软发布 mircosft remote desktop for android
  5. (转载)Android上HDMI介绍(基于高通平台)
  6. android 系统平台的架构
  7. android 7.0平台客制化虚拟导航按键(隐藏NavigationBar,上滑显示N
  8. Android广告平台

随机推荐

  1. android官网图像与动画章节demo的分析
  2. Error:android-apt plugin is incompatib
  3. android中使用sqlite的简明教程
  4. android中的autocomplete例子小结
  5. 开启adb su权限
  6. android中任何禁止软键盘自动弹出而点击E
  7. Android(安卓)Handler 分析
  8. Android 图片选择器
  9. Android官方入门文档[18]与其他碎片通信
  10. 2012/3/21