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

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

如何看待 Kotlin 成为 Android 官方支持开发语言? - Thinkblog
- 博客频道 - CSDN.NET

Thinkblog

爱编程,爱分享,不仅限于技术。

【活动】2017 CSDN博客专栏评选

&nbsp

【5月书讯】流畅的Python,终于等到你!
   &nbsp

CSDN日报20170519 ——《思维的局限》

   &nbsp

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

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

标签:
androidkotlin谷歌程序员开发语言

2017-05-21 21:34
201人阅读
评论(0)
收藏
举报

本文章已收录于:

.embody{
padding:10px 10px 10px;
margin:0 -20px;
border-bottom:solid 1px #ededed;
}
.embody_b{
margin:0 ;
padding:10px 0;
}
.embody .embody_t,.embody .embody_c{
display: inline-block;
margin-right:10px;
}
.embody_t{
font-size: 12px;
color:#999;
}
.embody_c{
font-size: 12px;
}
.embody_c img,.embody_c em{
display: inline-block;
vertical-align: middle;
}
.embody_c img{
width:30px;
height:30px;
}
.embody_c em{
margin: 0 20px 0 10px;
color:#333;
font-style: normal;
}


分类:

Android(17)

作者同类文章X

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

为什么会选用Kotlin

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

  1. 为了逐渐摆脱专利流氓Oracle。从去年的转向OpenJDK,到现在的支持Kotlin作为官方语言,某种意义是为了摆脱藉由9行代码敲诈获取天价赔偿的Oracle。
  2. 选用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的有很多特点,比如简洁,安全实用,开发效率高和提升可读性,更好的函数式编程支持。

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 应用的文章,分享等这些有实质性意义的行动。

更多关于Kotlin 和 Android 内容,请访问我的独立博客 技术小黑屋

时间: 2024-04-20 14:10:31

如何看待 Kotlin 成为 Android 官方支持开发语言?的相关文章

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

Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin>,着实狠狠地蹭了一波热度(尽管这样会被鄙视).眼下Android圈已经躁动了,甚至严重到如果对Kotlin视而不见就显得自己不像一个合格的Android程序员. 本文尝试从一个客观全面一点儿的角度来看待这件事情,尽力为大家提供一个比较理性的观点供参考. 为什么会选用Kotlin 关于 Google 为什么

kotlin, 一种新的android平台一级开发语言

最近看到一则科技新闻, 大致内容是google将kotlin语言作为android应用开发的一级语言, 与java并驾齐驱, 这是一个开发界的大事件大新闻, 连google的亲儿子go语言也没有这种待遇, 而kotlin貌似名不见经传,之前根本连听都没听说过. 这让我对kotlin产生了极大的好奇心,这种能让得到google如此宠幸的语言到底是何方神圣? 在网上查了相关资源后, 对kotlin有了粗略的了解. kotlin是一种jvm平台语言, kotlin编译器会将kotlin代码转换成jvm

Java vs Kotlin,Android开发人员应该选择哪种语言?

自 Google 于 2017 年宣布 Kotlin 成为 Google IO 的 Android 开发官方语言以来,想要成为Android开发人员的程序员正陷入两难境地. 在讨论这个问题前,我首先要明确一点, 不要陷入编程语言战争,不要进行语言鄙视,只要能赚钱的编程语言就是好语言. 欢迎加入Android开发技术交流QQ群:862625886,本群可免费获取Gradle.RxJava.小程序.Hybrid.移动架构.NDK.React Native.性能优化等技术教程! 最近看到这样一篇文章:

Android 原生应用开发得到Go语言支持

今天的主要内容为Android 原生应用开发得到Go 语言支持,那么我们首先简单看下GO是什么呢? Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言. Google工程师和独立开发人员提出了几份不同的提案,旨在让Go语言支持开发原生的Android应用.这项工作无法让Go语言编写的应用使用Android NDK的全部接口,但有可能使用其中的一个子集. David Crawshaw是Google的工程师,他写了一份提案,旨在让Go语言部分支持编写Android应用.根据他的

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.创建区域设置目录和文件的字

Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言

今年 5 月,谷歌在 I/O 大会上宣布,Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言. Kotlin 是一种面向现代多平台应用程序的编程语言,成为谷歌开发 Android 应用程序的首选语言后,许多开发人员逐渐地从 Java 转向 Kotlin.根据最新的一项调查显示,有 62% 的开发人员使用 Kotlin 来构建移动应用程序,另有 41% 的开发人员使用 Kotlin 来构建 Web 后端项目. 而随着 Kotlin 的出现,越来越多的知名组织愈加重视移动应用程

Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!

导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断去了解和掌握,在提高自身开发水平的同时,我们需要付出更多学习精力和时间.俗话说,打铁还需自身硬,为了在这个日新月异的技术时代为了生存不被淘汰,必须要求自身掌握的技术不断跟进时代脚步,所以我们必须付出才能得到回报,说没有时间去学习的人永远都会有找不完的借口.好了,闲话不多说了,下面一起来看看流行的技术

Java vs Kotlin 应该使用Kotlin进行Android开发吗

当您考虑Android开发时,有可能立即出现一种编程语言:Java. 尽管大多数Android应用程序都是用Java编写的,但在Android开发方面,Java并不是您唯一的选择. 您可以使用任何可以在Java虚拟机(JVM)上编译和运行的语言编写Android应用程序,而最终用户也不会更明智.而一个真正引起Android社区关注的JVM兼容编程语言是Kotlin,它是JetBrains的静态类型编程语言. 如果您听说过有关Kotlin的好消息,并且有兴趣为自己尝试,那么你是在正确的地方.在这三

Android &amp;Swift iOS开发:语言与框架对比

转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 从Android到Swift iOS开发:语言与框架对比 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还