杰瑞科技汇

Android与Java究竟是什么关系?

Android 是一个基于 Linux 的操作系统,而 Java 是其主要的应用开发语言,你可以把 Android 看作一个舞台,Java 就是用来在这个舞台上表演(开发应用)的主要工具之一。

Android与Java究竟是什么关系?-图1
(图片来源网络,侵删)

下面我们从几个层面来深入理解这个关系。


核心关系:Android 运行时与 Java 虚拟机

这是理解两者关系最关键的一点。

传统 Java (J2SE/J2EE) 的工作方式:

  1. 你用 Java 语言编写代码(.java 文件)。
  2. 使用 javac 编译器将 .java 源文件编译成 字节码.class 文件)。
  3. 字节码被运行在 Java 虚拟机 上,JVM 负责将字节码解释或即时编译成特定平台的机器码来执行。
    • 优点:一次编写,到处运行(Write Once, Run Anywhere),只要有 JVM,就能运行。
    • 缺点:JVM 占用内存较大,启动速度较慢,不适合资源受限的移动设备。

Android 的工作方式(早期及现在的关系):

Android 团队为了在性能有限的手机上高效运行 Java 应用,并没有直接使用标准的 JVM,他们自己设计了一个新的运行时环境,叫做 Android Runtime (ART)

ART 和 JVM 的核心区别与联系:

Android与Java究竟是什么关系?-图2
(图片来源网络,侵删)
特性 Java 虚拟机 Android Runtime
目标 通用计算平台 专为移动设备优化
执行方式 解释执行 + JIT (即时编译) AOT (预编译) + JIT
启动速度 较慢 非常快 (应用启动时已完成大部分编译)
内存占用 较大 较小 (共享了部分代码区域)
垃圾回收 相对简单 更高效 (如并行/并发 GC,减少卡顿)

核心流程:

  1. 你用 Java 语言编写 Android 应用的代码(.java 文件)。
  2. 使用 Android SDK 提供的 javac 编译器(或 Android Studio 的构建工具)将其编译成 Java 字节码.class 文件)。
  3. 在构建应用时(gradle build),Android 的构建工具会使用一个叫做 D8/R8 的工具链,将 Java 字节码转换成 Android 的 Dalvik 字节码(.dex 文件).dex 文件比 .class 文件更紧凑,内存效率更高。
  4. 这个 .dex 文件最终会被打包到 APK 文件中。
  5. 当用户安装并运行你的 App 时,Android 系统会在设备上启动 ART
  6. ART 负责加载和执行你的 .dex 文件。

总结一下这个链条:

Java 代码 -> 编译成 Java 字节码 -> 打包时转换成 Dalvik 字节码 (.dex) -> 在 Android Runtime (ART) 上运行

Android 通过 ART.dex 格式,对 Java 的标准执行方式进行了深度优化,使其能完美地运行在移动设备上。

Android与Java究竟是什么关系?-图3
(图片来源网络,侵删)

API 层面关系:Android SDK 是 Java 的“超集”

除了运行时,Android 还为开发者提供了大量的 API,这些 API 是用 Java 语言封装的。

  • Java 标准库:你可以使用 Java 语言自带的所有功能,如 String, List, HashMap, 多线程, 网络编程等。
  • Android SDK 特有库:Android 提供了极其丰富的、专门用于构建应用的 API,这些 API 都是用 Java 写的,并且扩展了 Java 的功能。
    • android.app: 应用程序基类,如 Activity, Service
    • android.content: 内容提供者、意图等。
    • android.view: 视图系统,如 Button, TextView, Layout
    • android.widget: 更多预制好的 UI 组件。
    • android.os: 操作系统相关服务,如 Handler, Bundle
    • android.net: 网络通信。

一个简单的比喻:

  • Java 就像是你拥有的基础工具箱,里面有锤子、螺丝刀、扳手。
  • Android SDK 就像是又给了你一个专门盖房子的专业工具箱,里面有水平仪、墨斗、瓦刀等。
  • 作为 Android 开发者,你同时拥有这两个工具箱,并且用它们(通过 Java 语言)来建造(开发)房子(App)。

历史演变与现状:Java 的“黄金时代”与“Kotlin 的崛起”

Java 的黄金时代 (约 2008 - 2025)

在很长一段时间里,Java 是 Android 官方、唯一、且首选的开发语言,几乎所有的 Android App 都是用 Java 写的,无数的教程、开源库、招聘需求都围绕 Java,可以说,Java 的兴衰与 Android 的发展紧密相连。

现状:双雄并立,Kotlin 成为主流

从 2025 年 Google I/O 大会开始,Google 宣布 Kotlin 成为 Android 的官方首选开发语言

  • 为什么是 Kotlin?

    1. 更简洁:用更少的代码实现同样的功能,可读性更强。
    2. 更安全:从语言层面解决了 NullPointerException (空指针异常) 这个 Java 最大的痛点之一。
    3. 与 Java 100% 互操作:你可以在一个项目中同时使用 Java 和 Kotlin,它们可以无缝调用彼此的代码,这使得现有 Java 项目可以逐步迁移到 Kotlin,新项目也可以直接上手。
    4. 现代化:支持函数式编程、协程等现代编程特性,更适合开发复杂的异步应用。
  • 这对 Java 意味着什么?

    • 并未被淘汰:Google 承诺会长期支持 Java,Android 的底层框架、大量的开源库仍然是用 Java 写的,作为 Android 开发者,你必须能看懂 Java 代码,因为很多第三方库和系统源码都是 Java。
    • 地位变化:Java 从“唯一主角”变成了“重要角色”和“Kotlin 的坚实后盾”,新项目推荐使用 Kotlin,但维护旧项目或使用特定 Java 库时,Java 依然是必需品。

维度 关系描述
本质 Android 是操作系统,Java 是其核心应用开发语言(之一)。
运行时 Android 不使用标准 JVM,而是使用自己优化的 ART 来执行 Java 编译后产生的 .dex 字节码。
API Android SDK 是 Java 语言的超集,它用 Java 封装了所有用于构建 App 的系统 API。
历史 Java 曾是 Android 开发的唯一官方语言,拥有辉煌的“黄金时代”。
现状 Kotlin 是现在的官方首选语言,但 Java 仍然被广泛使用,并与 Kotlin 完全兼容,学习 Android 开发,两者都需要掌握,但新项目应优先考虑 Kotlin。
未来 两者将长期共存,Java 作为基石,Kotlin 作为更高效的现代化工具,共同服务于 Android 生态。

给初学者的建议:

  1. 先学 Java 基础:掌握 Java 的语法、面向对象、集合、多线程等核心概念。
  2. 再学 Android SDK:学习如何使用 Java (或直接用 Kotlin) 调用 Android 的 API 来构建界面、处理数据、进行网络通信等。
  3. 最后拥抱 Kotlin:在掌握了 Java 和 Android 开发基础后,学习 Kotlin 的语法和特性,你会发现开发效率大大提升。
分享:
扫描分享到社交APP
上一篇
下一篇