如何看待 Kotlin 成为 Android 官方支持的开发语言?一线开发者这样说

Google IO 2017 宣布了 Kotlin 会成为 Android 官方开发语言。一时间朋友圈和 Android 圈被各种刷屏。当然我也顺势而为发布了一篇的文章《为什么我要改用Kotlin》,着实狠狠地蹭了一波热度(尽管这样会被鄙视)。眼下 Android 圈已经躁动了,甚至严重到如果对 Kotlin 视而不见就显得自己不像一个合格的 Android 程序员。

本文尝试从一个客观全面一点儿的角度来看待这件事情,尽力为大家提供一个比较理性的观点供参考。

  为什么会选用Kotlin

关于 Google 为什么会选择 Kotlin,我认为有两方面的原因。

● 为了逐渐摆脱专利流氓Oracle。从去年的转向OpenJDK,到现在的支持Kotlin作为官方语言,某种意义是为了摆脱藉由9行代码敲诈获取天价赔偿的Oracle。

● 选用Kotlin,实至名归,这个荣誉它值得拥有。Kotlin确实以其实用,高效赢得了海外很多公司和开发者的认可,比如Square的Jake大神一直在推Kotlin。Kotlin在国外至少有将近2年的应用生产环境的实践(非JetBrains内部实践应用)。在移动开发中,相比iOS程序员,Android程序员总是很幸运,因为我们有很多优秀好用的工具(Android Studio等),选用Kotlin,则是Google 为开发者提供高效的开发工具的一贯作风。

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

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

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

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

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

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

  Kotlin的魅力究竟在哪里

雷锋网(公众号:雷锋网)按:关于本节内容的详细介绍,读者可以参考文章开头提到的文章《为什么我要改用Kotlin》,就以下提到的每个 Kotlin 的特点,文中都给出了直观的代码样例解释。

Kotlin的有很多特点,比如简洁,安全实用,开发效率高和提升可读性,更好的函数式编程支持。

1. 简洁,Kotlin的代码确实比Java更加简洁,比如类型推断,省去结尾的分号等等,然而这远不能成为我们改用Kotlin的原因。

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

3. 实用,高效率。Kotlin的实用具体表现在

● 引入Object,便于我们更好的应用单例模式

● 引入data class, 避免了我们手写getter/setter/toString等方法

● 引入参数默认值和具名参数,避免了不必要的方法重载

● 支持扩展方法,让我们可以省去好多必须要的代码

4. Kotlin引入了Lambda,Streams API 和函数式编程支持。

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

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

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

5.可读性 从客观上,Kotlin语法和特性上让代码更加具有描述性而已。但是不得不指出代码可读性主要依赖编写者的编码素质和能力。

对我个人而言,高阶函数和方法扩展这两个特点着实真心受用。方法扩展会让我有一种创造感,这是Java种的Util方法所无法比拟的。

  Kotlin是否会取代Java

这个很难说,因为这个世界上并不是一件事物好,就会必然得到广泛应用的。一件事物的推广开来靠的是一群人,但阻力也往往也来自一群人,只不过和前者不是相同人群。

从个人主观来看这个问题,我更加愿意看到这种现象发生。原因并不是因为我更喜欢Kotlin,而是在于我更愿意看到事物在进步,在变得优秀,所以即便某一天Kotlin被更加优秀的语言取代,我也是很欢迎的。

  哪些人适合率先应用 Kotlin

Kotlin适用于多个平台,并没有对学习者做限制。任何有学习意愿的人都可以习得这门语言。

但是考虑到国内 Kotlin 资源不够丰富,网络不够畅通等问题,所以导致了很多人变成了吃瓜群众进行观望。

然而,对于一个项目和团队来说,总需要有第一个人先来推进。而且这个推进过程并非顺利,这其中包括

● 首先你需要足够了解Kotlin

● 你需要说服团队,这期间你会接收到很多challenges,有时候你会很沮丧和生气

● 你需要提供一系列的资料或分享,比如如何配置,sample code, troubleshooting等等

● 有时候甚至你经常兼职做mentor指导工作,这也就意味着你的手头上的其他工作需要被打断

上述推进 Kotlin 观点部分参考自Life is Great and Everything Will Be Ok, Kotlin is Here (Google I/O ‘17) 中 Christina Lee(Pinterest Software Engineer,国外 Kotlin 美女布道师之一)的分享内容。

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

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

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

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

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

  关于Kotlin 项目应用中 的一些顾虑

目前想到了一些关于 Kotlin 应用在项目中的一些顾虑。这些顾虑目前并非全面,但是提出来,希望大家可以规避和改善。

1. 写出来的代码并不是 Kotlin style。解决这个问题,还是需要多学习和思考

2. 扩展方法的滥用,Kotlin 的扩展方法很好,我们可以扩展很多方法,弥补Framework的一些不完善,但是扩展时我们需要谨慎,一定要把合适的方法放到合适的类型上,不可为了简单增加不符合某些类不应该具备的职责。 具体需要最好以下两点

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

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

  Android 程序员的核心竞争力在哪里

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

● 太好了,终于可以有理由改用Kotlin了,写代码更加高效了。可以逐渐开始放弃Java了。

● WTF,又要学新的语言,感觉好累,会不会以后面试不会Kotlin就被pass掉呢。

出现以上两种不同的声音,不得不引起我们对于 Android 程序员的核心竞争力的思考。那么到底什么才是 Android 程序员的核心竞争力呢?

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

编程语言本质上还是工具,好的工具能带来更好的效果,但是如何运用好,将效率和质量提升到最高,则还是更主要的依赖于开发者的能力。

选用好的工具,更侧重夯实基础和加强对事物本质认识的能力,我想这样才能让我们的竞争力更强。

总结而言,Kotlin是一个更好的工具,没有它,并不影响我们日常的 Android 开发工作。但是我还是建议开发者和团队去尝试这种语言,抓住这个近在咫尺的小确幸。

  额外的话

事情的发展越来越显得不可控了,推介Kotlin和不看好Kotlin的人逐渐分化出来,更准确的说,甚至这件事已经快要演变成了从对事变成了对人。

Kotlin 成为 Android 官方语言的消息一出来,一下子出来了很多被当做投机蹭热点的Kotlin推介者,当然还出现了一些看不惯这些做法的人,他们认为前者刻意拔高了Kotlin。因而讨论越来越偏向从事情到人的方面。我想要说的是,就像商人追求利润,资本家攫取剩余价值那样,投机者蹭热点,以及招致他人批评,这都是正常的事情,但是我们不能让讨论脱离问题的本质,我们需要回归。

很多人说Kotlin无非就是很多语法糖,没什么突破

没错,Kotlin是有很多很多的语法糖。有必要简单普及一下语法糖的概念(如下摘自维基百科

In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language “sweeter” for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.

由定义可知,语法糖的目的就是让代码更简单,更可读。

决定Kotlin使用这么多语法糖的除了简洁,高效可读之外,还有一个原因,是因为kotlin编译生成的class文件是目标到JVM 6(基于JVM 6 是一种权衡后的结果),比如我们在Kotlin中使用了Lambda,它是不可能编译成invokedynamic指令的,因为那样会导致在JVM6上根本无法识别,所以经常通过翻译成内部类的形式来实现。

使用语法糖又能怎样,它的目的是好的,毕竟它真真实实介绍了开发人员的代码量。

Kotlin是一门实用语言,这是它的基因,它不是学术语言,它的目标是减轻开发者的负担。它很适合 Android,因为大多数的 Android 的程序员是做工程。

  基于JVM没有什么不好

Kotlin,是基于JVM的编程语言,但是基于JVM的编程语言并没有什么不好。(J)VM的出现无非也是一种平衡的结果。在牺牲部分执行效率的前提下,提供了一定的抽象,加快了开发者的效率。这种tradeoff其实更加有利于人的一侧,这也是编程语言发展的趋势和目标

Kotlin 在国内推广应用的道路可谓是 漫漫而修远兮。因此更需要真正实践,去踩坑的人开始on board,去出产更多的真正能推动 Kotlin 应用的文章,分享等这些有实质性意义的行动。

====================================分割线================================

本文作者:AI研习社

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-10-26 06:20:20

如何看待 Kotlin 成为 Android 官方支持的开发语言?一线开发者这样说的相关文章

如何看待 Kotlin 成为 Android 官方支持开发语言?

在刚刚结束的谷歌 I/O 2017 开发者大会上,官方宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言.一石激起千层浪,消息一出,立即引发了国内外相关从业者对此事件的广泛关注和热烈讨论.本文作者段建华,作为 Flipboard 中国区 Android 资深研发工程师,我们来不妨看看他对此事的看法. Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<

17位谷歌Android开发专家是如何看待Kotlin的?

注:此英文原文发布于 Kotlin 得到 Google 官方支持的前几天,供参考. Google 已经多次表达过他们不反对 Kotlin 的使用,只要 Kotlin 编译器依然生成有效的字节码,那么 Google 就不会阻止任何人使用它.但我想如果能够知道 Google 的 Android 开发专家是如何看待 Kotlin 的,那就更好了. 我联系了一些这样的 Android 专家,我得到了来自 17 位的答复.我只是要求他们告诉我们关于 Kotlin 的一点想法,答案显然是未经过修改的,所以你

Kotlin for Android

在Google IO 2017 大会上,Google将 Kotlin列为 Android官方开发语言,Android Studio 3.0 也默认集成了Kotlin插件. Android Studio 3.0目前是预览版,下载地址: https://developer.android.google.cn/studio/preview/index.html 如果您是更早的版本,点击Android Studio File->Settings->Plugins,搜索Kotlin,然后重启Androi

如何使用Kotlin进行Android开发

Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者.Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并没有像预期那样及时跟进. Kotlin是由JetBrains创建的基于JVM的编程语言,IntelliJ正是JetBrains的杰作,而Android Studio是基于IntelliJ修改而来的.Kotlin是一门包含很多函数式编程思想的面向对象编程语言. Kotlin生来就是为了弥补Java缺失的

Android官方入门文档[9]支持不同的语言

Android官方入门文档[9]支持不同的语言 Supporting Different Languages支持不同的语言   This class teaches you to1.Create Locale Directories and String Files2.Use the String Resources You should also read•Localization Checklist•Localization with Resources 该课程教你1.创建区域设置目录和文件

Android官方入门文档[10]支持不同的屏幕

Android官方入门文档[10]支持不同的屏幕   Supporting Different Screens支持不同的屏幕   This lesson teaches you to1.Create Different Layouts2.Create Different Bitmaps You should also read•Designing for Multiple Screens•Providing Resources•Iconography design guide 这节课教你1.创建

Android官方入门文档[11]支持不同平台版本

Android官方入门文档[11]支持不同平台版本 Supporting Different Platform Versions支持不同平台版本   This lesson teaches you to1.Specify Minimum and Target API Levels2.Check System Version at Runtime3.Use Platform Styles and Themes You should also read•Android API Levels•Andr

用Kotlin写Android程序

1.1 Kotlin的身世 写了许久 Java,有没有发现其实你写了太多冗余的代码? 后来你体验了一下 Python,有没有觉得不写分号的感觉真是超级爽? 你虽然勤勤恳恳,可到头来却被 NullPointerException 折磨的死去活来,难道就没有受够这种日子么? 直到有一天你发现自己已经写了好几十万行代码,发现居然全是 getter 和 setter! 哈哈,实际上你完全可以不用这么痛苦,用 Kotlin 替代 Java 开发你的程序,无论是 Android 还是 Server,你都能像

Getting started with Kotlin on Android

2017年3月26日,ThoughtWorks高级咨询师张帅.王智勇在"Mobile Open Day-小步构建移动开发知识网络"进行<Getting started with Kotlin on Android>演讲分享.IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布. 嘉宾分享视频地址:http://t.cn/RKwZwbZ Java VS Kotlin 在Java的使用中会遇到很多问题.它的语法繁琐,API低级:随时可能出现null pointer问题:有各