Kotlin 系列 - 基本介绍(一)

前言

开始接触Kotlin是在今年年初的时候,发现 Android 业内开源大神 Jake Wharton 在推荐使用它。当时想着,事情绝对没有那么简单。果然,Google IO 2017 大会上宣布了 Kotlin 会成为 Android First class开发语言。最近一两个月时间里 ,Android 圈被Kotlin各种刷屏。既然形势已经那么明朗,咱们是时候开始深入了解Kotlin了。对kotlin语法不太了解的朋友,可以通过以下网站学习:
  Kotlin 语言中文站: https://www.kotlincn.net/
  Kotlin 语言官方网站:http://kotlinlang.org/
  GitHub 中文翻译开源项目:https://github.com/huanglizhuo/kotlin-in-chinese

本篇文章主要讲解Kotlin被Google官方推荐为Frist Class Language 的原因以及其特性。

Google 为何选用Kotlin?

关于 Google 为什么会选择 Kotlin,大致有以下几方面的原因:

  1. 为了逐渐摆脱专利流氓Oracle。
    从去年的转向OpenJDK,到现在的支持Kotlin作为官方语言,某种意义是为了摆脱藉由9行代码敲诈获取天价赔偿的Oracle。这是去年的一则新闻:Oracle起诉Google在Android中使用Java,索赔93亿美金。

  2. Kotlin它的高效实用赢得了很多公司和开发者的认可。
    Kotlin在国外至少有将近两年的应用生产环境的实践(非JetBrains内部实践应用)。在移动开发中,相比iOS程序员,Android程序员总是很幸运,因为我们有很多优秀好用的工具(Android Studio等),选用Kotlin,则是Google 为开发者提供高效的开发工具的一贯作风。

  3. Kotlin 是由 JetBrains 公司开发。
    JetBrains是一家捷克的软件开发公司,耳熟能详的 IntelliJ IDEA 工具就是他们开发出来的, 而 Android Studio 就是基于IntelliJ IDEA 进行拓展而来的。所以可想而知,Google会选用Kotlin也并非一时兴起。

说了这么多,我们关心的重点来了~

Kotlin成为 Android官方开发语言意味着什么?

  • 官方支持(Android Studio 3.0附带Kotlin),官方的宣传(教学视频,主题演讲等)

  • 对于开源社区来说,Kotlin版本的库和框架如雨后春笋般涌现。

  • 对于Java,曾经借助Android这场春风,着实让迟暮的它再度辉煌,现在和将来在Android领域可谓是棋逢敌手,Java的在Android开发语言市场份额会降。但是这也并不一定是坏事,有竞争才能更好进步。

  • 对于开发者来说,我们多了一种开发Android的语言选择,那些对于之前由于前景不明朗却对Kotlin跃跃欲试的人可以放心使用了。有了Kotlin意味着开发效率应该会有所提升。

  • 对于公司和团队,这往往带来了一个选择的问题, 团队中总有人想要尝试Kotlin,而另一些人则兴致不那么高。由于历史遗留问题,以及团队成员兴趣,对于已有项目采用Kotlin和Java长期并存是实际可行的方案。而新项目则应该鼓励使用Kotlin,但具体还需要结合团队的能力和其他因素。

Kotlin的特点

1. 简洁

Kotlin的代码确实比Java更加简洁,比如类型推断,省去结尾的分号等等。

2 . 空指针安全

这是Kotlin的一个很重要的特性。Kotlin是空指针安全的,JetBrains做了一件很聪明的事情,它们将运行时才能空指针的检测提前到了编译时,主要方式是增加了Any?这种可为空的类型,使用Kotlin之后,我们程序的空指针会得到明显的改善。

3 . 实用

Kotlin的实用具体表现在:
  ● 引入Object,便于我们更好的应用单例模式。
  ● 引入data class。
  ● 引入参数默认值和具名参数,避免了不必要的方法重载。
  ● 支持扩展方法,让我们可以省去好多必须要的代码。

4. 引入了Lambda,Streams API 和函数式。

  • Lambda表达式可以省去了我们创建很多匿名内部类的代码(注由于目前Kotlin基于JVM6,Lambda表达式在字节码阶段依然会翻译成内部类形式)

  • Streams API 结合Lambda表达式和方法引用,让我们的代码处理一件事情以描述的形式,而不是命令实现的方式。

  • Kotlin支持OOP(面向对象编程)和FP(函数式编程),语言本身并没有限制,给了我们选择的自由,Kotlin对FP的友好支持,便于我们写出更加稳定,易于测试,无副作用的方法和代码

5.可读性

从客观上,Kotlin语法和特性上让代码更加具有描述性而已。但是不得不指出代码可读性主要依赖编写者的编码素质和能力。个人而言,高阶函数和方法扩展这两个特点着实真心受用。方法扩展会让我有一种创造感,这是Java种的Util方法所无法比拟的。

Kotlin是否会取代Java

这个暂时还很难说,因为这个世界上并不是一件事物好,就会必然得到广泛应用的。一件事物的推广开来靠的是一群人,但阻力也往往也来自一群人,只不过和前者不是相同人群。不过我们可以参考Eclipse 转向 Android Studio 的情形。就目前情势来说,Android Studio 3.0如今还在测试版,等正式版上线的时候则会开始逐步尝试引入Kotlin。特别是Android Studio 还支持一键转化Java代码变成Kotlin。个人认为可以花20%左右的精力抽空了解一下它,毕竟入门并不难。

虽然 Kotlin 很优秀,但是推动在项目中推动 Kotlin 应用并非易事,因为这对于新事物来说在正常不过了,就像明治维新一样看起来很光鲜,成功,但是它的变革进程并非顺利,先是血雨腥风的倒幕运动,再到明治六年爆发的标志武士时代结束的西南战争,经过数十年的努力才算取得成功。

因此关于哪些人适合率先应用 Kotlin,我认为需要具备以下几点

● Java 技术和基础要好,这一点很重要。

● 英语要好,因为目前 Kotlin 的资料几乎都是英文的,当然也推荐看英文的。

● 愿意承担在项目团队推进工作,有耐心,敢挑战,负责任。

Kotlin 在项目应用中的一些顾虑:

新的事物出现往往会有各种疑问和茫然,想到了一些关于 Kotlin 应用在项目中的一些顾虑。Use Kotlin or not, That's a question. ,希望大家有疑问和顾虑可以提出来,以规避和改善。

1. 写出来的代码并不是 Kotlin style。解决这个问题,还是需要多学习和思考。
  
  2. 扩展方法的滥用,Kotlin 的扩展方法很好,我们可以扩展很多方法,弥补Framework的一些不完善,但是扩展时我们需要谨慎,一定要把合适的方法放到合适的类型上,不可为了简单增加不符合某些类不应该具备的职责。 具体需要最好以下两点:

3.选择在合理范围内的最抽象类增加方法,比如我们想为Activity增加一个longToast,应该想一想是不是放在更加抽象的Context会更好一些

4. 同时也不能为了便利,增加和当前类不相关的方法,比如我们想为每个Context增加显示一个简单dialog的扩展方法,这显然不是很合理,因为对于非UI的Context这是有问题。

核心竞争力在哪里?

Kotlin出来之后,听到了两种不同的声音:

● 太好了,终于可以有理由可以替换成Kotlin了,写代码更加高效了。
  ● WTF,又要学新的语言,感觉好累,会不会以后工作或面试时不会Kotlin就被淘汰掉呢?

出现以上两种不同的声音,不得不引起我们对于 程序员的核心竞争力的思考:

Android程序员和其他程序员甚至其他职业并无二致,我认为这种竞争力表现在解决问题的能力和创造能力。不单单只会copy别人的代码。想要具备这种能力,极其依赖我们对问题和技术的准确认识和扎实的基础。

编程语言本质上还是工具,好的工具能带来更好的效果,但是如何运用好,将效率和质量提升到最高,则还是更主要的依赖于开发者的能力。选用好的工具,更侧重夯实基础和加强对事物本质认识的能力,我想这样才能让我们的竞争力更强。

总结

总而言之,Kotlin是一个更好的工具,没有它,并不影响我们日常的 Android 开发工作。个人而言还是建议开发者和团队去尝试这种语言,毕竟Google已经明确支持了Kotlin,技多不压身。

Kotlin是基于JVM的编程语言,但是基于JVM的编程语言并没有什么不好。JVM的出现无非也是一种平衡的结果。在牺牲部分执行效率的前提下,提供了一定的抽象,加快了开发者的效率。Kotlin是一门实用语言,这是它的基因,它不是学术语言。它很适合 Android,因为大多数的 Android 的程序员是做工程。它的目标是减轻开发者的负担
  关于Kotlin的语法和代码详情就不多在此说了,文章开头已经给了地址,有兴趣可以自行学习。后续文章会写一些kotlin的代码注意事项和深入篇。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容