免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1385 | 回复: 0
打印 上一主题 下一主题

JavaME无法满足Android,只有设计Dalvik [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-18 10:20 |只看该作者 |倒序浏览

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


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85805/showart_1421638.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP