- Java 在 Android 中的地位与演变
- 搭建 Java Android 开发环境
- Java Android 应用的核心组件
- 一个简单的 "Hello, World" 示例
- Java Android 开发的关键技术点
- 从 Java 迁移到 Kotlin 的建议
- 学习资源
Java 在 Android 中的地位与演变
-
过去:绝对的主角 在 2025 年 Google 官方宣布 Kotlin 为 Android 开发“首选语言”之前,Java 是 Android 开发的唯一官方语言,几乎所有的官方教程、开源库和大型项目都是用 Java 编写的,Android SDK 本身就是用 Java 编写的。
-
依然强大,但不再是唯一 Kotlin 凭借其简洁、安全、现代化的特性,迅速成为新项目的主流选择,Java 并没有被淘汰,原因如下:
- 庞大的存量代码:数百万个现有 App 和库都是用 Java 写的,维护和更新它们需要 Java 知识。
- 庞大的开发者社区:全球有数百万 Java 开发者,他们可以无缝地转向 Android 开发。
- 企业级应用:许多大型企业的后端系统是用 Java 构建的,使用 Java 开发 Android 端可以保持技术栈的一致性。
- 稳定性:Java 是一门非常成熟和稳定的语言,其生态系统和工具链非常完善。
对于新手,学习 Kotlin 是更现代、更高效的选择,但对于理解 Android 的底层原理、维护旧项目或从 Java 转来的开发者,Java 依然是必须掌握的技能。
搭建 Java Android 开发环境
要开始 Java Android 开发,你需要安装以下工具:
-
JDK (Java Development Kit):
- Android 开发需要 JDK 8 或更高版本,你可以从 Oracle 官网或 Adoptium (Eclipse Temurin) 等开源社区下载,推荐使用 Adoptium,它免费且稳定。
- 安装后,需要配置环境变量
JAVA_HOME,并将%JAVA_HOME%\bin(Windows) 或$JAVA_HOME/bin(macOS/Linux) 添加到PATH变量中。
-
Android Studio:
- 这是 Google 官方推荐的集成开发环境,它基于 IntelliJ IDEA,是开发 Android 应用的最佳工具。
- 下载并安装 Android Studio,安装过程中,它会自动下载 Android SDK (Software Development Kit)、Android SDK Tools、Android Virtual Device (AVD) Manager 等必需组件。
-
配置模拟器或连接真机:
- 模拟器:在 Android Studio 中,打开 "AVD Manager",可以创建一个虚拟 Android 设备来运行和调试你的应用。
- 真机:通过 USB 线将你的 Android 手机连接到电脑,并在手机的“设置 -> 关于手机”中连续点击“版本号”7次,开启“开发者选项”,在“开发者选项”中启用“USB调试”。
Java Android 应用的核心组件
一个标准的 Android 应用通常由以下几个核心组件构成(使用 Java 语法):
a. Activity (活动)
- 作用:用户界面的载体,一个窗口,通常与一个屏幕对应,一个登录界面、一个设置界面都是一个 Activity。
- 生命周期:Activity 有非常明确的生命周期,从创建、显示、暂停、停止到销毁,你需要重写
onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy()等方法来管理 UI 和资源。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 加载布局文件 activity_main.xml
setContentView(R.layout.activity_main);
}
}
b. Service (服务)
- 作用:在后台长时间运行执行操作,没有用户界面,播放音乐、下载文件、网络请求等。
- 生命周期:生命周期比 Activity 简单,主要涉及
onCreate(),onStartCommand(),onBind(),onDestroy()。
c. BroadcastReceiver (广播接收器)
- 作用:用于接收系统或应用发出的广播消息,接收手机电量低、网络状态改变、应用安装完成等广播。
- 生命周期:非常短暂,只在
onReceive()方法执行期间存在。
d. ContentProvider (内容提供者)
- 作用:用于管理应用的数据,并允许其他应用安全地访问这些数据,它是一个标准化的数据接口,联系人、媒体库等都是通过 ContentProvider 提供的。
e. Intent (意图)
- 作用:它不是组件,而是组件间通信的“信使”,可以用来启动 Activity、Service,或者发送 Broadcast。
- 显式 Intent:明确指定要启动的组件类名。
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);
- 隐式 Intent:只描述要执行的操作,系统会找到最合适的组件来处理。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(intent);
- 显式 Intent:明确指定要启动的组件类名。
一个简单的 "Hello, World" 示例
让我们创建一个最简单的应用,在屏幕上显示 "Hello, World!"。
-
创建项目: 打开 Android Studio,选择 "New Project" -> "Empty Activity",语言选择 "Java"。
-
布局文件 (
activity_main.xml): 在res/layout目录下,打开activity_main.xml,使用拖拽方式或直接编写 XML 代码添加一个TextView。<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, World!" android:textSize="24sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> -
Java 代码 (
MainActivity.java):MainActivity.java文件已经由 Android Studio 自动生成,你只需要确保onCreate方法中调用了setContentView(R.layout.activity_main);。R.layout.activity_main就是系统根据你的 XML 文件自动生成的资源 ID。 -
运行应用: 点击工具栏上的绿色 "Run" 按钮(▶️),选择一个模拟器或连接的真机,应用就会被安装并启动,你将在屏幕中央看到 "Hello, World!"。
Java Android 开发的关键技术与点
除了核心组件,你还需要掌握以下技术:
-
UI 布局:
- XML 布局:在
res/layout目录下编写 XML 文件来定义 UI 结构。 - ViewBinding:强烈推荐!它可以让你在 Java 代码中直接、类型安全地访问 XML 中的视图,避免了
findViewById()的繁琐和潜在的错误。
- XML 布局:在
-
数据存储:
- SharedPreferences:用于存储简单的键值对数据,如用户设置。
- SQLite 数据库:用于存储结构化的关系型数据。
- 文件存储:将数据直接存储在设备的文件系统中。
- 网络存储:将数据存储在服务器上。
-
网络编程:
- HttpURLConnection:Java 标准库,功能基础。
- OkHttp:目前最流行的第三方网络请求库,高效且易用。
- Retrofit:基于 OkHttp,专注于将 RESTful API 调用转换为 Java 接口,极大地简化了网络请求。
-
多线程:
- 主线程 (UI Thread):所有 UI 操作都必须在主线程进行。
- 子线程:耗时操作(如网络请求、文件读写、数据库查询)必须在子线程执行,否则会导致应用卡顿(ANR - Application Not Responding)。
- AsyncTask:一个已废弃的轻量级异步工具类。
- Handler & Looper:用于线程间通信,特别是将子线程的结果更新到 UI 线程。
- ExecutorService:Java 并发包,用于管理线程池。
- RxJava / Coroutines:更现代的异步编程解决方案(Kotlin 中 Coroutines 更常用)。
-
依赖管理:
- Gradle:Android 项目的构建工具,通过
build.gradle文件管理项目依赖(库),就像 Maven 或 npm 一样。
- Gradle:Android 项目的构建工具,通过
从 Java 迁移到 Kotlin 的建议
如果你是新手,直接学习 Kotlin。 如果你是 Java 开发者,或者需要维护 Java 项目,
- 语法差异:Kotlin 更简洁,支持空安全、扩展函数、Lambda 表达式等。
- 互操作性:你可以在同一个项目中混合使用 Java 和 Kotlin 代码,Kotlin 可以无缝调用 Java 代码,反之亦然,这使得迁移可以逐步进行,而不是一次性重写。
- 转换工具:Android Studio 提供了 "Convert Java File to Kotlin File" 的工具,可以自动将大部分 Java 代码转换为 Kotlin 代码,但生成的代码通常需要人工优化。
- 未来趋势:Google 的所有新文档、示例和推荐实践都优先使用 Kotlin,学习 Kotlin 是为了跟上行业发展的步伐。
学习资源
-
官方文档:
- Android Developers 官方网站:最权威、最全面的资源,包含所有 API 文档、指南和 Codelab。
- Java 官方文档:学习 Java 语言本身的权威资料。
-
在线课程:
- Udemy:搜索 "Java Android Development",有大量高质量的课程,如 Angela Yu 的课程非常受欢迎。
- Coursera / edX:提供来自知名大学的系统化课程。
-
社区与博客:
- Stack Overflow:遇到编程问题,首先来这里搜索。
- ProAndroidDev (Medium):高质量的 Android 开发博客。
- GitHub:阅读优秀开源项目的源码是最好的学习方式之一。
希望这份详细的指南能帮助你全面了解 Java Android 开发!祝你学习顺利!
