android的内核是linux,用java包装一层会有效率上的损失。但是java的用户基数庞大,在当时拉开了c用户5个点之多。
此外,当时市场上有强大的iphone已经抢先建立了apple store,应用数量超android很多,如果用了java就有可能在程序员数量上超过ios程序员。从而建立自己的生态系统。
回答:共有一下四种方法
方法一、在Android应用程序中发送Intent启动Android应用程序
这个方式最简单,最常用。在此不在累述。关于Intent的更多内容请阅读《Intent技术简介》
方法二、在shell控制台通过am命令发送Intent来启动Android应用程序
在Android的shell控制台通过am命令发送Intent来启动Android应用程序
关于此的详细内容请参考《Android命令am详解》
方法三、在shell控制台直接通过davlikvm命令启动一个JAVA程序。
该方式有个天生的缺点,即在其中,很多Android的JNI无法调用。因为Android的很多JNI其实是需要手动注册的。
关于请参考《基本Dalvik VM调用》
方法四、在shell控制台直接通过运行app_process程序启动一个JAVA程序
在app_process程序中,他会对Android的JNI进行手动注册的,能很好的使用Android的API,因此通过运行app_process程序启动一个JAVA程序,是一个比较完美的方式。app_process程序是一个C程序,它的源码位于frameworks\base\cmds\app_process。
关于它的使用请参考《Android命令am详解》以及shell脚本frameworks\base\cmds\am\am和frameworks\base\cmds\pm\pm
安卓对Java的支持和其他一般手机中Java软件支持完全不是一个概念。笼统的你可以理解为,前者是系统级的,Java作为安卓系统的默认/推荐开发语言,安卓官方API(除了NDK)都是Java的。
而其他手机中对Java的支持是通过J2Me/Kjava,也就是说是Java虚拟机的移动版,并非系统原生支持,只是支持在这些手机平台上装一个Java虚拟机而已。
举个例子,Windows的API是C的,但是Windows下也可以安装JRE(Java 运行环境)来运行Java程序,但是很少有人用Java来做Windows的桌面程序,大多是用C/C++写。
但安卓的API本身就是Java的,不存在另装JRE的问题,也不存在不能访问本地API的问题,所以Android的程序都用Java来写。(除了对性能要求特别高的3D游戏等可能直接用C + NDK来写)
另外能在其他机子上跑的kjava程序不一定能在Android上跑,因为Android用的VM和Sun(现在是Oracle)的完全不同,只是都是用Java这个语言而已。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)