自谷歌宣布Kotlin成为 Android 开发官方支持的语言后,Kotlin的 这门 JVM 语言火速成为众多开发者关注的焦点,“养码场”社群内的养码人对此也聊意甚多。
html
两个多月过去了,Kotlin这门开源语言的人气不断攀升,甚至出现了“Kotlin:征服硅谷的编码语言”的言论。据场主了解到,此言论的原因是,近日,Google的核心Android开发团队已经在生产代码中使用Kotlin。html5
虽养码人对此讨论甚多,但大多数也是持观望态度:不敢轻易使用,虽然背后站着JetBrains 和 Google 这两个巨头。java
场主特地找到了一篇针对“Kotlin答疑解惑”的文章,答疑者是资深Kotlin 开发者刘自鹏。他,现就任于美团点评企业平台研发部,独立开发了 Twobbble(已开源)。这是一个 Android 平台的第三方 Dribbble 客户端,它彻底基于 Material Design 设计,不过值得一提的是,Twobbble 彻底使用 Kotlin 进行开发。web
做为一个较早使用 Kotlin 的开发者,刘自鹏踩过的坑可谓是是数不胜数,加上独立开发这样一款精致的 App 的经验,如下针对Kotiln、独立开发以及如何开发出精致的 App 等问题作出的解答,可能会对你深刻了解Kotlin有所帮助。编程
提问1: 安全
在你看来,除了生态,Kotlin在语言方面还有哪些设计不足?或者说在实际使用中还有哪些须要workaround的方式或者比较丑陋的方法才能实现你所想要的东西?微信
刘自鹏:app
目前个人使用过程都仍是比较顺利的,没有遇到这些点。设计得好很差,我可能没办法去评论,但缺点:语言不可能完美,总归可能藏着,但依托于java的生态,咱们总能找到workaround。框架
提问2:函数
若是Kotlin来开发app,从开发周期,效率来考虑,原生开发,html5混,当下哪一种模式相对好一些,当下流行什么样的模式?
刘自鹏:
使用Kotlin来开发app,效率上已是较于原来有一个很大的提高了。 而hybrid主要优点是跨平台,下降多平台的开发成本。纯原生开发最大的优点是更好的体验,更强的交互。没有办法去说哪一种方案更好,由于这都是根据你的业务需求来的。
若是你的业务中有某个页面,它须要和iOS保持一致,而且内容能够快速随着业务需求去变化,hybrid很适合,若是没有相似的需求,而且你的应用很注重交互体验,那原生显然更好。
提问3:
Kotlin的忽然出现,感受有点始料未及。我从事Java也有多年,也一直在想找本身的第二语言,最近在学习Python。前一段时间看了go,scala,Erlang语言,感受学习起来都不是很容易。
我大概有4个问题:
一、Kotlin会是让人比较容易上手的语言吗?
二、对于有Java经验的人,学习起来还有哪些瓶颈要克服?
三、对于Kotlin这门语言,会不会热过一阵以后,就消声匿迹了呢,它将来的发展,你感受怎么样?
四、还有App使用kotlin开发,会比Java有什么优点吗?
刘自鹏:
针对1、二问题:按Kotlin开发团队的话来讲,Kotlin是一门以java开发者的思惟来开发的语言,Java 到 Kotlin的过渡是至关平滑的,只要熟悉基本语法,你几乎能够直接用你原来开发Java的思想去开发写Kotlin代码,而你学习更多Kotlin的特性就可以让你代码写起来更加轻松简洁,因此真的没有什么要克服的,多学习一些它的特性吧。
第三个问题:Android开发一直处于低糖的状态,其实很多Android开发者对现代语言早就如饥似渴了。Kotlin与Java完美的互操做这一点 为Kotlin的社区支持提供了很好的基础, 加上kotlin团队一直以来对开发者需求的快速反应迭代,因此对于Kotlin,至少在Android这个细分领域,我很看好它的将来。
第四个问题:对比Java的优点有不少,好比语法更加简洁、不啰嗦,更多的语法糖扩展函数,空安全,协程,经过扩展函数与lambda实现各类酷炫的高阶函数,默认参数,智能类型转换,以及更多的java所不具有的特性,总之它可以用更少的代码完成更多的事,也就可以让咱们后续的维护成本更低。
提问4:
没有Java开发的经验,直接用Kotlin做为入门学习Android开发合适吗?
刘自鹏:
能够,可是不建议。为何?
一、在你没有编程基础的状况下去学Kotlin,由于语法特性多而灵活,并不会比别的语言容易。
二、如今Android开发的基础教程,进阶教程清一色是Java的。你若是不会,那么你的学习过程会很吃力。
三、就如今的大环境来看,只会Kotlin的Android开发者可能找不到Android开发的工做。
提问5:
开发出精致的 App,介绍一下都用那些技术框架,怎么选择?
刘自鹏:
这里所说的精致,主要是UI与交互层面的。 至于我的开发时,技术如何选型,首先多关注行业动态能够看出哪些第三方项目是主流,这时你能够去看这个项目的star数量,数量大证实使用者多,接着瞄一眼issues,看看问题解决得及不及时。
固然技术服务于业务,技术选型也要照顾到和你的业务是否契合。
提问6:
请问app界面怎么作到交互性好,体验好,不知道从哪一方面学习这些,模仿别人的界面会属于侵权吧?
刘自鹏:
若是你只是练手,彻底照搬知名应用的设计没有问题,可是若是你要发布,建议原创。 我一直认为做为一个客户端开发者,是有必要具有必定的ui设计能力与交互意识的。关于这点,若是你是Android开发者,能够学习Mater...
另外,建议多观察他人开发的设计优秀的App,吸收优势。可常浏览Dribbble。
提问7:
我准备“入坑”使用 Kotlin ,你有什么建议吗?
刘自鹏:
我认为 Kotlin 转正是 Android 开发者的福音。建议其实没什么,Android 开发者转用 Kotlin 过渡是很平滑的。总之,生命苦短,我用 Kotlin 。
Android 开发者:刘自鹏
就任于美团点评企业平台研发部,较早使用 Kotlin 的开发者之一,Kotlin 项目 Twobbble 的做者,对 Material Design 有多年实践,热爱交互,专一应用层开发。
· END ·
长期关注“养码场”的你
现邀请你进入“养码场”技术交流社群!
得到技术大牛分享的一线公司情报
技术问题管理问题薪资公积金问题
社群里都有技术过来人帮你解答!
本周“养码场”一周职位更新啦!~
后台回复“000”
得到更多技术职位信息哦
本文分享自微信公众号 - 养码场(yangmachang0)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。