京东APP收银台Kotlin化实践

本文介绍了京东APP收银台从H5到原生Kotlin的改造过程,分析了H5收银台的局限性,探讨了Kotlin的特性及优势,包括其在类型系统、函数式编程和空安全方面的改进。通过Kotlin改造,收银台首屏加载时间显著减少,提升了用户体验。同时,文章分享了Kotlin在收银台项目中的实践,包括与Java的互操作、空安全策略以及遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

我们把移动端App分为四大类

  • React/Flutter App

  • Web App(纯网页)

  • Native App(纯原生App)

  • Hybrid app (混合App)

o 多View混合型:Native View与WebView交替出现的场景

o 单View混合型:在同一个View内,同时包括Native View和Web View

o Web主体型:移动应用的主体是WebView

过去收银台模块采用单View混合型,我们称之为H5收银台。H5收银台开发快,一次开发,iOS和Android两端通用。在享受开发便利的同时长期使用过程中发现:

  • H5收银台首屏加载时间长,大多数时候超过1秒以上;

  • 弹窗动画生硬,用户体验不够友好;

  • 技术栈链路过长:JDWebView容器,H5前端页面,原生页面和JDWebView统一控件交互,原生和H5页面交互,定位问题、排查问题相对耗时长;

  • 从占用手机大量内存的页面比如游戏网页跳转到收银台时,配置低的手机存在大概率性的黑屏或者白屏问题。

瓶颈是WebView,基于上述认识我们需要对业务较稳定的收银台首页去掉WebView,改成纯原生页面。改造后的架构图:

在原生化改造过程中我们面临一个选择:是继续使用Java还是选用Kotlin,收银台团队认为Kotlin是Andrioid开发的未来,谷歌的全力支持和未来丰富的语言生态让我们有理由相信Kotlin在移动端的远大且光明的前景。

接着来聊聊Kotlin和我们对Kotlin的实践,本文将从下面两部分展开:

  • 对Kotlin的理解

  • Kotlin在收银台里的具体实践

编程语言的时空观

想对Kotlin有全面、深刻的理解,还得从语言的源头入手,溯洄从之,一路探究。纵观过去100年,编程语言经历了三大阶段,分别是机器语言,汇编语言和高级语言。Kotlin隶属于高级语言,从高级语言这一阶段出发来看看编程语言的发展历程:

摘自:Most Popular Programming Languages 1965 - 2019 by youtube

上图为最受欢迎的高级语言的变化过程。高级语言从20世纪50年代到1983年为早期孕育阶段,按时间先后顺序发展出面向过程的结构化设计,面向对象的分析与设计,函数式编程范式等。随着语言的发展,原本常用的“面向对象”和“函数式”的边界变得越来越模糊。Kotlin于2011年问世,并在2017年得到谷歌官方支持,开始作为Android开发语言。

找到了Kotlin在时间轴线上的位置,Kotlin和其他语言的横向比较的位置在哪儿呢?

根据运行时是否允许隐式变量类型转换,把语言分为强类型和弱类型。Kotlin是强类型语言(隐式类型转换:不需要用户干预,编译器私下进行的类型转换行为)

根据对类型的检测时机是在编译期还是运行期,把语言分为静态语言和动态语言;Kotlin是静态语言。

根据程序的源文件被运行前是否需要提前转化为机器码,把语言分为编译型和解释型;Kotlin和Java类似,需要编译成字节码的解释型语言。

依据动态性和类型强度可以建立一个直角坐标系,如下图所示:沿着X轴正方向,静态性越来越强;沿着Y轴正方向,类型强度越来越强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值