网站首页 > 文章精选 正文
我们知道Android本身是一个Linux操作系统,其应用程序(Apps)大多使用Java语言编写,而Java语言本身是一种解释型语言,在以前的推送中,我介绍过,Java源程序经过javac命令编译后能得到字节码,字节码可以被JVM解释执行,JVM所解释的字节码其实是一种“汇编语言”。
一、Android中的应用程序
Android Apps既然采用Java语言进行编写,其源代码也必然是需要经过“编译成字节码”和“解释执行”两个阶段才能使Apps跑起来。
Android Apps 的Java源代码在一个特定的项目构建工具的帮助下进行编译,得到一些“只能在Android上解释运行的字节码”。
Android中每一个App都是一个单独的APK文件,即“Android应用包”,它类似于Java的可执行JAR文件。
每个APK文件包含了“只能在Android上解释运行的字节码”“运行相关库”“应用相关资源”等内容。
二、什么是“艺术”(ART)?
Android通常用于使用电池的移动设备,也就是说Android Apps的运行环境注定受到了功耗、内存等方面的限制。
每一个传统的Java应用运行时都需要一个单独的JVM进程,因此会占用大量的内存。
Android使用一种方案解决了这个问题。在Android中,它并不使用JVM来运行应用,而采用了一种完全不同的虚拟机,叫作Android运行时(Android Runtime,即ART) (Android 4.4以前使用Dalvik虚拟机)。
三、只能在Android上解释运行的字节码
因为实际的Android应用在ART中运行,而非JVM,所以Android使用了一种格式为DEX而非class的字节码。
你可以用带有特定的项目构建工具的编译程序编译Android程序的Java源代码,这些源代码最终会形成适用于ART的高效、简短的DEX字节码。
ART可以把DEX字节码解释成为不同设备能识别的机器语言,直接在设备的CPU上运行。
因此,Android Apps可以跨设备运行。
猜你喜欢
- 2025-01-23 Java程序员终极面试题(java程序员面试题库)
- 2025-01-23 人生中的第一个Java程序:HelloWorld
- 2025-01-23 彻底搞定JAVA乱码问题来龙去脉(java乱码问题解决)
- 2025-01-23 面试必杀技:Jmeter性能测试攻略大全(第二弹)
- 2025-01-23 PATH系统环境变量配置教程【图文步骤】
- 2025-01-23 如何在Windows10中配置java的JDK环境
- 2025-01-23 java环境变量设置(java环境变量怎么设置)
- 2025-01-23 Java First Hello World 程序(hello world.java)
- 2025-01-23 Linux 下安装JDK17(linux如何安装jdk1.8)
- 2025-01-23 java编程、java学习:深刻理解Java编程的7个例子
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)