关于虚拟机,百度的答案是"虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统",这种概念不是很好懂,但总结起来虚拟机就是(计算机)系统,
java有JVM虚拟机,android自然有DalvikVM虚拟机,但是这个DVM虚拟机有系统卡顿的问题,Google推出了ART虚拟机用来解决这个问题,他们工作原理简单说一下,java的JVM虚拟机是把你的字节码文件转成机器码,这个字节码格式呢是.class,然后java虚拟机从文件里面获取想要的信息,这里的字节码文件会先被打包进jar文件夹,所以以后导入类可以下载jar文件。
说下机器码,他是系统能理解的语言,准确的是二进制码,为啥呢,电脑不是人,他跟电流有关,而电流只有开或关,对应计算机就是true或false。
然后是android的DalvikVM,源文件 => .class格式的字节码 => dex格式的文件,DVM跟java虚拟机原理相似,也是从dex格式的文件中获取相应的信息。dex格式文件打包进APK中。
ART虚拟机也是android虚拟机一种,所有跟DVM虚拟机原理相似。
这里补充一句,jar文件夹可以有多个.class文件,APK只有一个dex格式的文件,不过他们最终会被虚拟机编译成机器码被计算机"认识"。