Java在Android应用开发中的持久生命力(除Kotlin之外)

简介: 虽然Google在2017年宣布Kotlin成为Android官方开发语言,但Java从未退出舞台。现有数十万个Android应用由Java编写,包括许多大型应用(如Twitter、Spotify早期版本)

1.Java在Android中的地位演变
虽然Google在2017年宣布Kotlin成为Android官方开发语言,但Java从未退出舞台。现有数十万个Android应用由Java编写,包括许多大型应用(如Twitter、Spotify早期版本)。GooglePlay上架的应用中,超过60%包含Java代码。Java拥有完整的工具链、海量的库和开发人员,在企业内部移动开发中依然被广泛采用。许多大型公司出于历史原因、人员技能或与后端共享代码的考虑,继续使用Java进行Android开发。
参考:https://npqev.cn/category/jieri-yonghua.html

2.JavaAndroid应用的基本架构
Android应用主要组件:Activity(界面)、Service(后台)、BroadcastReceiver(系统事件)、ContentProvider(数据共享)。Java通过AndroidSDK调用这些组件的API。一个典型的业务模块:网络请求(OkHttp)、JSON解析(Gson)、图片加载(Glide)、数据库(Room或SQLite)。这些库都是Java编写或提供Java绑定。

3.多线程与性能优化
Android应用不能在主线程做网络或数据库操作,否则会触发ANR。Java提供了多种异步方案:
AsyncTask(已废弃,但仍有许多老代码)
Thread+Handler/Looper
ExecutorService(线程池)
RxJava(响应式扩展,Java版本)
Coroutines(Kotlin主导,但Java可通过回调桥接)
性能优化方面,Java开发者需要关注:避免内存泄漏(尤其匿名内部类持有关联Activity引用)、使用SparseArray替代HashMap更省内存、启用ProGuard/R8代码混淆和收缩、利用android:largeHeap谨慎使用。

4.Java与Kotlin互操作
如果一个项目既有Java也有Kotlin,两者可以无缝互调。Java可以调用Kotlin的@JvmStatic方法,Kotlin也能访问Java的getter/setter。这种互操作性允许团队逐步迁移:新模块用Kotlin,老模块保持Java。许多第三方库仍提供Java示例和API。
参考:https://npqev.cn/category/huayu-huayi.html

5.案例:银行类App为什么坚持Java
某大型银行移动端App,用户数千万,功能包括账户查询、转账、理财购买。该App最初完全用Java开发,积累了数十万行业务代码。团队规模50+人。即使Kotlin成为主流,迁移成本过高(培训、重写、潜在bug)。他们采取以下策略:
所有新功能使用Kotlin编写,与Java互操作。
核心交易模块(涉及多线程同步、安全加密)保持Java,因为现有测试和审计流程完备。
使用Java编写关键工具类(如SharedPreferences封装),供Kotlin调用。
在CI中同时检查Java和Kotlin代码质量。
最终,他们享受了Kotlin的现代语法(数据类、空安全),也保护了既有Java投资。App的崩溃率保持在0.1%以下。

6.Java在Android上的局限性
与Kotlin相比,Java的短板包括:
空安全:必须手动检查null,容易引发NullPointerException。
冗长:数据类需要写大量getter/setter、equals/hashCode。
协程:Java没有原生协程,异步代码回调嵌套多。
函数式编程支持弱:StreamAPI在低API级别需要desugar。
但这些缺点可以通过工具缓解:Lombok(但Android支持不好)、AutoValue、RxJava等。

7.未来发展
Google仍在更新Android的Java支持:从Java7到Java8,再到Java11/17的部分特性(通过desugar)。新AndroidStudio对Java代码提示、重构、性能分析依然完善。对于企业级Android开发,Java作为Kotlin的“平替”还将长期存在。尤其在系统级开发(AOSP本身大量使用Java)和需要与后端共享代码的场景(如通过JAR复用业务逻辑),Java不可替代。

8.总结
Java在Android开发中并未消亡,而是与Kotlin共存。对于已有大型Java代码库的团队,继续使用Java是合理选择。新项目推荐Kotlin,但理解Java对于维护老应用、阅读AOSP源码、掌握JVM原理仍然至关重要。
参考:https://npqev.cn

目录
相关文章
|
1月前
|
监控 Java 大数据
Java进阶:JVM调优实战与内存泄漏排查技巧
Java程序的运行依赖JVM(Java虚拟机),JVM的性能直接决定了Java应用的运行效率和稳定性。
126 0
|
1天前
|
人工智能 自然语言处理 数据可视化
【AI 尝鲜实验室】5.22 号上新 | DeepSeek-TUI:终端里 DeepSeek 版的 Claude Code
本实验通过阿里云计算巢快速部署DeepSeek-TUI,配置API Key后即可在云服务器终端中使用命令行与AI编程助手交互,支持代码生成、脚本处理、项目搭建及问题排查等开发任务,全程可视化、低门槛、高效率。
1059 27
|
1天前
|
监控 安全 BI
厂区人员定位管理系统|管理痛点+技术原理(二)
该系统专为化工厂区设计,融合高精度定位与智能管控,具备五大核心功能:实时厘米级定位、智能电子围栏预警、全程轨迹追溯、SOS一键应急救援、外来人员全周期管控,实现人员管理从“被动应对”到“主动防控”的升级,筑牢本质安全防线。(239字)
|
1月前
|
传感器 Java 物联网
Java冷门应用场景:嵌入式开发与物联网设备落地
提到Java,大多数开发者首先想到的是企业级后端开发、移动开发、大数据开发,但很少有人知道,Java也可以用于嵌入式开发和物联网设备开发
132 2
|
1天前
|
消息中间件 Java 测试技术
Java在微服务契约测试(Pact)中的运用
在微服务架构中,服务之间通过HTTP或消息通信。传统的集成测试需要同时启动多个服务,环境搭建困难、执行缓慢。
110 0
|
1天前
|
存储 缓存 编译器
C++在实时音频处理与数字音频工作站(DAW)中的运用
数字音频工作站(如AbletonLive、FLStudio、Cubase)需要处理实时音频流,施加各种效果(均衡、压缩、混响)、合成虚拟乐器、混合多轨。
75 0
|
1天前
|
消息中间件 缓存 供应链
Java在供应链管理系统(SCM)中的深度应用
供应链管理系统涵盖采购、生产、库存、仓储、运输、分销等环节。SCM的核心挑战:
80 0
|
1天前
|
机器学习/深度学习 人工智能 机器人
电话语音 Agent 说话间隔 0.8 秒,听起来真的像真人吗
本文探讨电话语音AI的“真人感”核心指标——说话间隔(Turn-Taking Latency)。分析指出:人类对话平均间隔仅300–400ms,而当前顶尖系统通过流式ASR、LLM加速、流式TTS等技术,已将延迟压至0.8–1.2秒,在预约等结构化场景中用户误判为真人的比例超80%。
146 0
|
1天前
|
自然语言处理 编译器 C语言
C++在编译器与静态分析工具开发中的核心运用(以Clang为例)
编译器将高级语言转换为机器码,包含词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成等阶段。
94 0
|
1天前
|
监控 算法 关系型数据库
程序员必备的十大技能(进阶版)之高性能数据库实战(三)
教程来源 http://tmywi.cn/ 本文系统梳理数据库架构演进路径:从单库单表→读写分离→分库分表,并详解ShardingSphere实战——含分片键设计、跨分片分页优化、雪花算法全局ID生成;同时深入剖析MySQL主从复制原理、读写分离配置及主从延迟监控与应对策略。