韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 一个…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8923483 在前面一文中,我们分析了Dalvik虚拟机的运行过程.从中可以知道,Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个 JNI方法,那么就会直接跳到它的地址去执行.也就是说,JNI方法是直接在本地操作系统上执行的,而不是由Dalvik虚拟机解释器执行.由此也可看 出,JNI方法是Android应用程序与本地操作系统…
1.什么是JVM?   JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序,JAVA在编译后会生成类似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编译成的汇编语言会直接在硬件上跑,但JAVA编译后生成的字节码是在JVM上跑,需要由JVM把字节码翻译成机器指令,才能使JAVA程序跑起来. JVM运行在操作系统上,屏蔽了底层实现的差异,从而有了JAVA吹嘘的平台独立性和Write Once Run Anywhere.根据JVM规范实现的具体虚拟…
1.什么是JVM? JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才干够运行Java程序,JAVA在编译后会生成相似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编译成的汇编语言会直接在硬件上跑.但JAVA编译后生成的字节码是在JVM上跑,须要由JVM把字节码翻译成机器指令.才干使JAVA程序跑起来. JVM运行在操作系统上,屏蔽了底层实现的差异.从而有了JAVA吹嘘的平台独立性和Write Once Run Anywhere.依据JVM规范实现的详细虚拟机有…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8914953 在前面一篇文章中,我们分析了Dalvik虚拟机在Zygote进程中的启动过程.Dalvik虚拟机启动完成之后,也就是在各个子模块初始化完成以及加 载了相应的Java核心类库之后,就是可以执行Java代码了.当然,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也 就是C和C++代码.在本文中,我们就将继续…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例.除了指令集和类文件格 式不同,Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT).垃圾收集(GC).Java本地 方法调用(JNI)和Java远程调试协议(…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8885792 在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的.Zygote进程在启动时会创建一 个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序 进程都有一个独立的Dalvik虚拟机实例.…
java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行. Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一…
Dalvik虚拟机 DVM是Dalvik Virtual Machine的缩写,是Android4.4及以前使用的虚拟机,所有android程序都运行在android系统进程里,每个进程对应着一个Dalvik虚拟机实例. DVM和JVM的区别 执行的字节码不同 JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码 JVM: .java -> javac -> .class -> jar -> .jar DVM: .java -> javac -&…
这几天在做一个项目时需要在Android中使用OSGi框架(Apache Felix),于是在一个android 4.4.2 版本系统的某品牌的平板上实验. 实验内容很简单:把felix包里的felix.jar包和一些bundles的jar包用android sdk里的dx及aapt工具转化为包含dex字节码的jar 包.这样使这些jar包能在Android上跑起来.(因为Android上使用的是在Dalvik虚拟机而不是标准的java虚拟机,所以"原生"的 jar包不能直接在Andr…