Kotlin京东业务实战强大又简洁的JVM语言腾讯云开发者社区

9年以上开发经验,熟悉主流移动开发框架,热衷于探索新技术,曾负责过店铺、JDReact架构等项目的开发工作,目前专注于京东App领券中心频道开发,以及移动端技术难点攻克和新技术调研实施。

2011年JetBrains推出Kotlin项目,这是一个面向JVM的新语言,主要是解决Java之前被诟病已久的问题,而且积极借鉴了Scala、Ruby等新语言在开发效率和简洁性上的优势。

2017年Google开始力推Kotlin,在I/O大会上谷歌宣布Kotlin正式成为Android官方支持开发语言。

Kotlin已经越走越近,抱着“为了让移动开发更简单”的理念,让Kotlin在京东业务中落地。

对比其他语言,Kotlin语法和Java很像,非常容易上手,推荐以循序渐进的方式开发项目;由于项目中允许同时存在Java和Kotlin代码文件,并且允许Java与Kotlin互调,使得开发者可以很方便的在已有项目中引入Kotlin;新模块用Kotlin,稳定模块勿需用Kotlin重写。

Kotlin拥有大量非常打动人心的特性,这里无法一一进行介绍,不过我们来看一下其中最为重要的一些。

如前所述,Kotlin是null安全的。如果一个类型可能为null,那么我们就需要在类型后面加上一个。这样,每次在使用该类型的变量时,我们都需要进行null检查。比如说,如下代码将无法编译通过:

varartist:Artist=nullartist.print()第2行会显示一个错误,因为没有对变量进行null检查。

Null曾经被戏称为“十亿美金的错误”,Null虽然好用,但是导致很多错误的元凶往往都是它。在Kotlin中,编译器是可以识别你的引用是否是null,进而提醒你。默认kotlin中所有的对象都是不为Null的。

在Java中,如果想要创建数据类或是POJO类(只保存了一些状态的类),我们需要创建一个拥有大量字段、getters与setters的类,也许还要提供toString与equals方法:

dataclassArtist(varid:Long,varname:String,varurl:String,varmbid:String)使用一行代码创建一个包含getters、setters、equals()、hashCode()、toString()以及copy()的POJO。

Kotlin提供了一些非常棒的互操作特性,这对于Android开发帮助非常大。其中之一就是拥有单个方法的接口与lambda表达式之间的映射。例如下面这个单击监听器:

viewHolder.mCouponItemBottom.setOnClickListener(object:View.OnClickListener{overridefunonClick(v:View){Toast.makeText(mContext,"Click",Toast.LENGTH_LONG).show()}})可以写成这样:

viewHolder.mCouponItemBottom.setOnClickListener{Toast.makeText(mContext,"Click",Toast.LENGTH_LONG).show()}>>>>Lambda表达式Lambda表达式会极大程度的精简代码,借助于Lambda表达式,我们可以做到之前无法实现或是实现起来非常麻烦的事情。借助于Lambda表达式,我们可以以一种更加函数式的方式来思考问题。Lambda表达式其实就是一种指定类型,并且该类型定义了一个函数的方式。

valsum={x:Int,y:Int->x+y}>>>>Kotlin编译分析Kotlin代码比Java的简洁,更易于编写维护,所以我们认为转换是值得的。但很多开发者都担心Kotlin编译可能没有Java快,影响开发效率,反而得不偿失。

上图是Java编译器的编译过程,Kotlin和Java的编译过程是很相似的,区别在于Kotlin与Java相比重要的细节在编译后端(目标代码生成)环节。

Kotlin编译器在目标代码生成环节做了很多类似于Java封装的事情,比如自动生成Getter/Setter代码的生成、Companion转变成静态类、修改类属性为final不可继承(open修饰即可继承)等等工作。

Kotlin将我们本来在代码层做的一些封装工作转移到了编译后端阶段,使得语言更加简洁。

1、安装Kotlin插件

AndroidStudio从3.0(preview)版本开始将内置安装Kotlin插件。如果你正在使用的是早期版本,需要通过File|Settings|Plugins|InstallJetBrainsplugin…搜索并安装Kotlin插件。

2、Jdlib工程中配置Kotlin

新增applyplugin:‘kotlin-android’及其依赖。

配置方式与Jdlib相同,注意需要将compile修改为provided,防止类库重复引用。如果不配置,插件代码不能打到apk中,调用时报ClassNotFoundException异常。

provided"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"4、添加混淆配置

如果调试Kotlin代码,总是报ClassNotFoundException异常,或者NoSuchMethod异常,你要考虑加入混淆配置。缺失混淆配置,Kotlin类库代码会被优化掉,编译正常,但无法运行。

#Kotlin-dontwarnkotlin.**-keepclasskotlin.**{*;}-keepclassmembersclass**$WhenMappings{;;}>>>>业务实现1、业务重写将整个模块改为Kotlin语言实现,修复语法方面的编译错误。AndroidStudio提供将Java转为Kotlin的插件,可以转换大部分代码。

常见编译问题:

a、代码编译出错,定义变量时,没有赋初始值,变量可以为空,需要加修饰符

varmCouponItemLayout:RelativeLayoutvarmCouponItemTop:LinearLayoutvarmCouponIcon:SimpleDraweeViewvarmCouponName:TextViewvarmCouponItemTopTv1:TextViewvarmCouponItemTopTv2:TextViewvarmCouponItemMiddle:LinearLayout以下为修改后的代码:

varmCouponItemLayout:RelativeLayout=nullvarmCouponItemTop:LinearLayout=nullvarmCouponIcon:SimpleDraweeView=nullvarmCouponName:TextView=nullvarmCouponItemTopTv1:TextView=nullvarmCouponItemTopTv2:TextView=nullvarmCouponItemMiddle:LinearLayout=nullb、代码编译出错,变量可以为空时,使用变量需要加修饰符,自动判断是否为空,防止出现空指针异常

viewHolder.mCouponItemValueDiscount.text=entity.quotaviewHolder.mCouponItemValuePrice.text=entity.minOrderAmount以下为修改后的代码:

viewHolder.mCouponItemValueDiscount.text=entity.quotaviewHolder.mCouponItemValuePrice.text=entity.minOrderAmountc、代码编译出错,由于FontsUtil的参数有@NonNull标签,需要保证只有在确保变量不是null的情况下才能这么调用,否则它会抛出异常

FontsUtil.changeTextFont(viewHolder.mCouponItemMoneyTag,FontsUtil.MULTI_BOLD)FontsUtil.changeTextFont(viewHolder.mCouponItemValueDiscount,FontsUtil.MULTI_REGULAR)以下为修改后的代码:

FontsUtil.changeTextFont(viewHolder.mCouponItemMoneyTag!!,FontsUtil.MULTI_BOLD)FontsUtil.changeTextFont(viewHolder.mCouponItemValueDiscount!!,FontsUtil.MULTI_REGULAR)2、运行调试编译成功后进行代码调试,修改运行时异常问题,可以正常使用debug工具,Kotlin模块与Java模块互相直接调用,显示效果和交互效果与Java模块没有差别。

Kotlin语言提供了类型的自动判断,自动拆装箱,字符串拼接,lambda表达式,空判断等一系列功能,功能精简了很多,语法与js有相似,同时去掉了findViewById(),省去了很多iftry等语句,业务代码量减少很多。

统计业务模块的Java实现和Kotlin实现的代码量,不包含xml布局文件,代码量减少超过20%;代码减少最多的为pojo类,减少比例甚至超过80%;业务逻辑代码减少10%,同时代码会更加简洁直观,有助于提高代码可维护性。

由于业务量级比较大,为防止新技术对业务稳定性产生影响,计划通过Java实现代码,Kotlin实现代码两套代码并存,使用ABTest方式逐渐放量,待稳定后切到Kotlin。

Kotlin在设计上避免了常见的编程错误,从而减少了应用程序崩溃和系统故障。此外,由于Kotlin是快速失败机制,可以立即报告任何可能导致失败的问题。因此Kotlin在降低应用崩溃率上有很大作用,非常值得期待!

Pinterest

Pinterest已成功将Kotlin引入了他们的应用程序,每个月有1亿5千万人使用。

Gradle

Gradle正引入Kotlin作为编写脚本的语言。

Evernote

Evernote最近将Kotlin整合到了他们的Android客户端。

Uber

Uber团队使用Kotlin来构建内部工具。

Corda

Corda是一个开源分布式分类账号平台,由各大银行提供支持,完全由Kotlin构建。

THE END
1.手机京东京东客户端、app下载平台为您提供iphone、ipad、安卓(Android)手机、安卓(Android)TV、windows phone京东官方客户端下载、提供京东团购、京东读书、京东音乐、京东应用、京东极速版等手机客户端app下载,全部最新版本,免费下载。https://app.jd.com/
2.农夫好牛原切牛排澳洲进口西冷眼肉雪花牛排牛肉生鲜儿童牛扒家庭收藏 评论0次 推荐人:新年就要年一起 商城:京东商城 时间:2024-12-06 18:57 直达链接> 温馨提示:推荐的商品都具有一定的时效性,价格可能随时变化。 配送至: 推荐理由: 购买方案 1 店铺 京东商城 农夫好牛旗舰店 ,商品面价169元 2 领券 满119减40 满169减50 3 加购 加购1件 4 实付 78.https://cu.manmanbuy.com/discuxiao_10769200.aspx
3.京东商城网店电脑端首页装修教程京东商城首页的装修是非常重要的,首页装修的好也能给顾客留下一个好的印象,而且能让流量提升最大化,让顾客在店铺的时间更长,点击更多的商品,让跳失率更少,从而来提高店铺的ROI。如果您正在为京东商城的首页专修烦恼,那么就来看看文中分享的京东商城网店电脑端首页装修教程吧。 https://www.mmker.cn/article/3766.html
4.京东商城招聘最新京东商城招聘信息200条欢迎光临应届生京东商城招聘专版,在这里汇聚了及时有效的京东商城招聘信息、京东商城校园招聘信息共3432条、京东商城招聘资料、京东商城笔试面试资料等相关信息共200条,为您求职应聘京东商城提供有价值的信息。https://m.yingjiesheng.com/j.php?word=%E4%BA%AC%E4%B8%9C%E5%95%86%E5%9F%8E
5.www.psm99.com/aplhtml51953.htm胖胖少妇性爱网 四川小虎2019视频 成人91天堂狼友视频在线免费观看 姐弟乱伦视屏 人人摸人人揉人人操 124.48MB 315好评 黄片日B下载 桥本有菜黄色视频 黄色打炮视频免费在线观看 425.43MB 289好评 玩弄逼芯 一小孩半夜喂女孩吃鸡巴,发出,啊啊啊,的声音, http://www.psm99.com/aplhtml51953.htm
6.kj.zhikao666.com/newxr95212123.shtml久色商城 44.51MB 22%好评912人 一级性爱A 粉嫩网 JIZZJIZZ69 88.93MB 58%好评689人 女人张开腿让男生插 大胆美女人体艺术图片写真集 亚洲AV成人无码一区在 91.82MB 16%好评675人 挡不住的疯情 自拍av不卡电影 男生把小j放在美女屁股里狂躁 19.25MB 29%好评723人 女班长晚上求捅她下部http://kj.zhikao666.com/newxr95212123.shtml
7.www.hnxjcable.com/aplpage51587.html这部剧一共只有四集,对这个类型有兴趣的剧迷可以去下载看了。 /阅读下一篇/返回网易首页下载网易新闻六,搞少妇逼逼,鲤鱼乡后穴调教前列腺高潮3P 七,欲火视频Ft中文网 【联系我们】http://www.hnxjcable.com/aplpage51587.html
8.京东京造JBudsAir蓝牙耳机¥84.9购买方案 1 店铺 京东商城 XAXR旗舰店 ,商品面价20.9元 2 领券 商品页点击领取PLUS立减0.05元 商品页点击领取店铺新客 完整阅读> 5小时前 直达链接 > 京东 纽曼Newmine TWS-X5 蓝牙耳机真无线 半入式音乐耳麦 蓝牙5.3 远动跑步长续航107.31元需领券 https://guangdiu.com/detail.php?id=16049211
9.小程序项目开发京东商城uni 推荐一款找工作神器网站: 点击跳转牛客网 |笔试题库|面试经验|实习招聘内推| 还没有账户的小伙伴 速速点击链接登录注册把! 该文章收录专栏? 2022微信小程序京东商城实战 ? @[toc] 一、新建tabBar分支(选读*) https://blog.51cto.com/u_15691039/5631445
10.京东店铺首页pc端怎么装修?方法是啥?京东店铺首页的装修是非常重要的,因为这会给买家们一个好的印象,决定了买家们是否会继续逛店铺,不过京东装修想要装修的非常好也是需要花钱的,那么到底该如何去装修pc端的京东店铺首页呢? 一、Jshop装修的流程 在JSHOP中我们提供了页面装修全部“模块化”。 https://www.maijia.com/article/504796
11.京东商城网页热词css京东商城网页 大二的时候·写的一个商城项目里面用到css和html 代码如下 index.html 1 北京你好,请登录免费注册我的订单我的京东?</https://blog.csdn.net/weixin_50919504/article/details/115365916
12.京东商城自营供应商开放平台VC使用说明.docx京东商城自营-供应商开放平台VC使用说明.docx,级别:□普通 □秘密 时间 容 创建人 版本 2014年4月28日 供应商协同平台操作手册 加龙 V1.0 供应商协同平台商品管理操作说明书 部门:—产品部 编写人:—加龙 核准人: 日期:2014_年_04_月_28一日 .C 跨系统使用说明 跨系统https://m.book118.com/html/2021/0311/5044204202003142.shtm
13.若愚(H,强制爱)近日,著名演员舒淇在某社交平台上遭遇了一起尴尬事件。一名素人男子不断私信骚扰她,评论区更是乌烟瘴气。令人啼笑皆非的是,这位骚扰者并未认出舒淇是明星,反而让舒淇无奈之下更改了平台昵称,直接用上了大名“舒淇”。 四川新闻网成都4月28日讯 4月27日至29日,中国疫苗行业协会细菌感染与疫苗研究专业委员会成立大会http://www.cqcin.com/oppo/iphones/20240820/4216846711.shtml
14.京东商城购物流程指南1 z( H2 g9 N2 A [& o j& P 2)订单留言:订单购物的凭证。在购物时有任何疑问,可以使用此功能,在工作时间24小时内,我们会及时回复。操作方法:首先在京东商城首页的“会员登陆”中登陆用户名和密码,点击“我的京东”,进入后点击左侧的“订单中心”,既可查看到所有的订单,点击订单编号后面的“查看”,打开后http://www.360doc.com/content/15/0214/16/1563128_448579432.shtml
15.京东商城日本进口THERMOS膳魔师保温杯原装配件盖子密封圈水杯杯Created with Highcharts 4.0.3最高59.00元 最低59.00元by 海淘网haitao.com18.10.1559 +选择图片 优惠券 提交发布写长篇笔记 京东商城37%返利 108元 芒果TV 会员年卡+京东PLUS会员年卡 最新值得买 刚刚 8.87万4 京东商城37%返利 12129元(需用券) https://www.haitao.com/faxian/product/3530868.html
16.康佳电视J40E40英寸18GB内存全面屏智能语音网络WIFI全高清卧室编辑:关山明月 发布:轻舟网 产品:康佳电视J40E40英寸18GB内存全面屏 京东店内购买 售价:759 元| 原价:759 备注:直达链接已包含最佳优惠券。 商品描述与属性 来自:京东-康佳电视京东自营旗舰店 评价:5万 99%好评 活动:双11 类目:家用电器 | 分类:平板电视 推荐度:82(对比有效,根据6项数据计算) 品牌:康佳(https://www.mp4cn.com/jd-100118929693-%E5%BA%B7%E4%BD%B3%E7%94%B5%E8%A7%86J40E40%E8%8B%B1%E5%AF%B818GB%E5%86%85%E5%AD%98.html
17.农村电商现状调查报告6篇(全文)这是现在农村司空见惯的场景,而在这些标语和小便利店的背后隐藏的是阿里巴巴、京东等中国互联网公司的农村梦想。 阿里巴巴旗下村淘的终极目标是实现“智慧农村”,解决包括买卖、寻找工作甚至凭借阿里大平台完成医疗、旅游在内的多重功能;而京东则是把“跑步鸡”和“金融、生鲜、商城等部门”一起送到农村,试图在“京东https://www.99xueshu.com/w/filepttnw0ha.html
18.天猫Tmall.com由于该网站的robots.txt文件存在限制指令(限制搜索引擎抓取),系统无法提供该页面的内容描述https://www.tmall.com/
19.以京东为例,百姓论文网首页[9]兰竹. 浅谈大数据环境下电商精准营销策略[J]. 中外企业家, 2019(13): 93-94. [10]李忠霖. 浅谈大数据下电商的精准营销策略[J]. 上海商业, 2021(9): 46-47. [11]李佳原. 大数据在中国B2C电子商务精准营销中的应用研究——以京东商城为例[J]. 商场现代化, 2018(1): 44-45.http://www.baixinglunwen.com/Paper_View.asp?ID=2787&SortID=33
20.登录?站点进入网站专属因此,这两起案件的生效结果与一审判决结果一致,京东无赔偿责任。这两起案件的生效日为2024年10月。 自2019年无辜卷入“承兴系”案件以来,历时5年,京东终于从这场“躺枪”的诈骗案中全身而退。 维持一审判决:京东无责 今年5月8日,界面新闻曾独家报道了两宗案件的一审判决结果。获取的判决书显示,京东均无需承担赔http://m.bdekjgs.cn/UCB/moa/QPLHUMeS.html