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

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的高效开发,同时自己可以定制平台,修改平台安全模型。

你可能感兴趣的:(java,.net,android,Google,JavaME,平台)