Android和Java的关系到底是怎么样的? 从系统中找了好久关于JAVA的蛛丝马迹,却一无所获,Google了一段时间,有人说Android只是实现了一个java的VM.是这样的吗?从terminal中可否找出点儿这个VM的一丝丝信息呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Android是一个操作系统, java只是一门语言.为了方便开发者入手写应用程序,Android系统开放了一些应用程序接口(API),这些API由形似于Java的语言提供。Android系统的Java 不同于我们泛指的sun或者IBM公司的Java. sun/IBM的java是采用JVM的技术,而Android采用的是DVM的技术。 除了语法极其类似之外,两者没有更多的相同点了。其它的我了解也不多, 等楼下补充 Android is an Operating system like windows which has a whole platform from drivers to application and the interface for developer---the sdk which is programmed with Java languages.It is just like Windows whose API(SDK) is in the form of C/C++. 嗯 Dalvik虚拟机 ..貌似是这样就不用给sun交钱了 http://zhidao.baidu.com/question/145042036.html?si=1 有没有关于DVM的相关的技术呢?举一个很简单的例子,在Linux中每一个java运行的程序ps aux|grep java之后可以看到他是由虚拟机直接起来的,可是在android的terminal中。他的command line却不是由别人带动的。这是什么原因呢? Android整个系统的构架LZ应该知道吧 Linux内核层 + DVM中间件及调用库 + 应用接口层 + 应用层主要就是通过DVM虚拟机扯上关系的吧 这个我知道。主要就是想知道DVM和他们是怎么样扯上关系的。然后Linux和他们又是怎么样扯上关系的。然后还有一个小问题。假如有一天java升1.7了。是不是意味着1.7中的一些新功能在Android中就用不了了?那他现在又是支持多少呢?1.4?1.5?1.6? 这个java的jar 可以导进去 编译没问题 但是运行到那个类就出错了 所以得把jar编译到framework层 我感觉java的类库 跟 android的 没关系 虽然 android的类库里一些和Java的名字一样 但是编译的不一样你写一个Java的代买 放到android的没问题 但是 如果是 外部的jar 就有问题了 我做 google docs应用的一点经验 audroid下面2曾是用C,C++开发的,上面俩曾是用java开发的。 然后我还发现一点:在系统的/data/anr/traces.txt中,进程栈有许多用的就是java的线程库。比如说object.wait()方法,Thread.run()。其中还发现了反射的影子。让我感觉他好像用了其中一部分。然后自己写了大部分。不知道是不是这样的? 我想说,没啥关系,就app开发的时候语法用的java,和j2ee更不沾边,android也说是分层架构,但是是操蛋的分层,高度耦合,哈哈 表达一下我的观点:1. 为了说明楼上各位的问题,我将Android架构简化如下: Linux + C/C++层 + JVM和java core + framework + app Linux 和 C/C++层就不说了。 JVM是Dalvik虚拟机,另外,Android还实现了一个java core库,例如system类,socket......等等, 所以,你看已写的java程序放在Android才可以运行。 framework: 基于JVM和java core, 再采用JNI方式,Android实现了framework层,为APP服务。 app层不说了。2. 从代码和Android初始化过程的log信息来分析; Android 启动也是从Linux的init来启动的。启动到zygote进程,其实才真正开始初始化JVM了。 然后,就是Framework层的各个组件,如powermanager,activitymanager......,最后,就是load(或者说启动)上层的APP了。 如果想了解更加详细的过程: 可以从以下方面: 1. log信息 2. 初始化完成后的进程列表 关于这部分内容,请参考我的博客: http://blog.csdn.net/liranke下的Android目录下的一些文章。 从平台到应用要学的多了!内核就是Linux,驱动/移植就要学C,虚拟机一部份是用C++搭建的, 应用就是用jave写的! 呵呵 android 怎 么能是操作系统,分不清概念andriod 只能算是一个java的库 个人认为,如果从形式来看,android java用的都是java语言,但从内部来他们的编译不一样了,同样如果我们问java和C++的关系,java和C++语法不一样,编译不一样,我们说他们是两种不同的语言,假设java和C++的语法和一样,我们就可以说和android 和java的关系是一样的啦, 为什么使用java呢,不是说java慢吗 在android中的editText和界面 新手请教下关于ListView的小问题 音乐文件时长获取不到 请教大家一个关于android双卡拨号的问题 如何做一个山寨app? 模拟器问题 HTTP链接下载音乐文件问题? Intent intent1 = new Intent(ActivityMain.this , ActivityFrameLayou.classt) linux jni没有调试好 双卡机器调用拨号盘拨号时怎么控制用哪张卡拨号? 各位达人,有没有办法在程序结束时候自动卸载本apk? 如何在Android模拟器上打开一幅图
而Android采用的是DVM的技术。 除了语法极其类似之外,两者没有更多的相同点了。其它的我了解也不多, 等楼下补充
It is just like Windows whose API(SDK) is in the form of C/C++.
有没有关于DVM的相关的技术呢?举一个很简单的例子,在Linux中每一个java运行的程序ps aux|grep java之后可以看到他是由虚拟机直接起来的,可是在android的terminal中。他的command line却不是由别人带动的。这是什么原因呢?
主要就是通过DVM虚拟机扯上关系的吧
这个我知道。主要就是想知道DVM和他们是怎么样扯上关系的。然后Linux和他们又是怎么样扯上关系的。然后还有一个小问题。假如有一天java升1.7了。是不是意味着1.7中的一些新功能在Android中就用不了了?那他现在又是支持多少呢?1.4?1.5?1.6?
这个java的jar 可以导进去 编译没问题 但是运行到那个类就出错了 所以得把jar编译到framework层 我感觉java的类库 跟 android的 没关系 虽然 android的类库里一些和Java的名字一样 但是编译的不一样你写一个Java的代买 放到android的没问题 但是 如果是 外部的jar 就有问题了
在系统的/data/anr/traces.txt中,进程栈有许多用的就是java的线程库。比如说object.wait()方法,Thread.run()。其中还发现了反射的影子。让我感觉他好像用了其中一部分。然后自己写了大部分。
不知道是不是这样的?
1. 为了说明楼上各位的问题,我将Android架构简化如下:
Linux + C/C++层 + JVM和java core + framework + app
Linux 和 C/C++层就不说了。
JVM是Dalvik虚拟机,另外,Android还实现了一个java core库,例如system类,socket......等等, 所以,你看已写的java程序放在Android才可以运行。
framework: 基于JVM和java core, 再采用JNI方式,Android实现了framework层,为APP服务。
app层不说了。2. 从代码和Android初始化过程的log信息来分析;
Android 启动也是从Linux的init来启动的。启动到zygote进程,其实才真正开始初始化JVM了。
然后,就是Framework层的各个组件,如powermanager,activitymanager......,最后,就是load(或者说启动)上层的APP了。
如果想了解更加详细的过程:
可以从以下方面:
1. log信息
2. 初始化完成后的进程列表
关于这部分内容,请参考我的博客: http://blog.csdn.net/liranke下的Android目录下的一些文章。