写点什么

不仅仅是 Android 开发,谷歌告诉你选用 Kotlin 的五大理由

Christina Cardoza

  • 2019-06-12
  • 本文字数:3735 字

    阅读完需:约 12 分钟

不仅仅是Android开发,谷歌告诉你选用Kotlin的五大理由

在软件开发领域,每年都会涌现新的编程语言,但在过去的几年里,它们很少像 JetBrains 的 Kotlin 那样得到开发人员的重视。


Kotlin 是一种通用的、静态类型的编程语言,专为 JVM、Android、浏览器和本地解决方案而设计。它由 JetBrains 的语言设计师 Andrey Breslav 创建,2011 年由 JetBrains 正式发布。


如今,Kotlin 已经成为 Stack Overflow 上最受欢迎的语言之一,GitHub 上增长最快的编程语言之一,也是 Android 应用程序开发的首选语言。Kotlin 还因其跨平台和工具的崛起,在今年的 Thoughtworks 的技术雷达(Technology Radar)上亮相。


ThoughtWorks 首席技术官 Rebecca Parsons 表示,“那些尚未了解 Kotlin 的开发人员最好看看它能够做些什么。Kotlin 绝对是一种真正优秀的编程语言,具有扎实的特性和不断发展的生态系统。”


但是,在如此短的时间里,Kotlin 为何以及如何吸引开发人员这么多的兴趣呢?据 Thoughworks 技术主管 Fausto de la Torre 称,首先,Kotlin 是开源的,这就在大多数软件开发社区引起了共鸣。其次,Kotlin 还得到了业界顶尖技术巨头之一的支持:Google 在 2017 年的 Google I/O 大会上宣布支持这种编程语言。但是,甚至在 Google 宣布这一决定之前,就已经有许多开发人员将他们的开发工作转移到 Kotlin 了。


据 Google Android 的首席宣讲师 Chet Haase 说,Kotlin 打破了太多传统编程语言已被接受的模式。“任何事物都有可能造成尾大不掉的局面。”他说,“几年后,那些编程语言的提供者不希望完全改变现状,在编程语言中采用新的范式,强加给尚未做好准备的开发人员。”这也是 Google 在考虑采用 Kotlin 时主要关心的问题。“我们(并不)希望让 Android 开发人员感到震惊,让他们通过引入一些新概念来改变一切。”Haase 解释道。


Kotlin 采用了一种不同的方法,因为它完全可与 Java 互操作,允许 Kotlin 开发人员利用 Java 现有的库和框架生态系统。

Kotlin 与其他语言的比较

不过,ThoughtWorks 的 Fausto de la Torre 解释说,这种互操作性,对 Kotlin 来说可能是一种折衷。因为大多数采用 Kotlin 的开发人员都是 Java 开发人员,他们倾向于以 Java 风格编写 Kotlin 代码,但是在使用 Kotlin 时,有一些 Java 的行为、关键字和功能并不能很好地进行转换。“Kotlin 可以使用 Java 的整个生态系统,这是它所拥有的最强大的东西之一,但试图以同样的方式使用它,却是一项挑战。”他说,“你不能像你想象的那样来直截了当地使用它。”


而 Google 的 Android 产品管理总监 Stephanie Cuthbertson 则认为,Java 不再是最先进的编程语言了。大约有一半的 Android 开发社区正在使用 Kotlin,因为它能提供更多的现代特性。当你观察 Android 生态系统中的其他语言时,就会发现,C++ 和 Java 代表了特定时间内的某种技术水平。例如,C++ 代表数据结构和算法,而 Java 代表面向对象的语言,引入了诸如自动内存管理之类的东西;但是,Kotlin 则代表了一种更为现代的工作方式,Cuthbertson 如此解释。“开发人员告诉我们,他们喜欢 Kotlin 的所有现代习语。”她说。其中的一些例子包括:协程(coroutines)和为空性(nullability)。协程引入了一种新的方法来编写异步和非阻塞代码。Kotlin 还支持显式地声明 null,并确保开发人员不会遇到可能导致质量问题的空引用异常。


Cuthbertson 还认为,与其他语言相比,这种语言的发展速度更快,因为 Kotlin 语言并不是由委员会驱动的,而是由 Kotlin 基金会管理的,语言设计本身就是由编程语言设计大师 Breslav 完成的。Breslav 一直负责社区的一个流程,在这个流程中,他从其他开发人员那里获得了大量的意见,但他是唯一负责这一流程的人。Cuthbertson 说:“这意味着语言正在以一种与之相一致的方式迅速发展。Kotlin 语言是特意设计的,因此我们可以快速进化,但进化的方式要保护语言的纯洁性,同时以一种真正健康的方式接受社区的意见。”


此外,Android 的 Haase 解释说,Kotlin 的优势在于,它是由 IDE 公司 JetBrains 设计和开发的。“语言的核心特性以及新特性紧密集成到开发人员使用的开发环境中。虽然其他语言的 IDE 都很擅长使用这种特定语言进行开发,但语言本身是独立于 IDE 的。”他解释说,IntelliJ IDEA 是 Google 的 IDEAndroid Studio 的底层平台。


Thoughtworks 的 Fausto de la Torre 发现他的团队被 Kotlin 所吸引,因为它提高了开发人员的工作效率,并提供了比其他语言更好的开发体验。他解释说,Kotlin 有能力实现与其他语言相同的功能,但采用的是更为现代的方式,以更少的代码行来实现。


Cuthbertson 说:“一旦你掌握了编写 Kotlin 代码的窍门,你就可以编写更少的代码。代码越少,就越容易维护。由于诸如为空性之类的原因,你可以拥有更高质量的代码。而且因为有了现代习语,它变得有趣多了。”


Fausto de la Torre 补充说,Kotlin 社区目前还没有其他语言那般强大。“虽然它还在继续增长,但还不够成熟,仍然有一些差距需要填补。”他希望看到更多的测试框架和持续交付框架的工作。Google 目前正致力于投资和发展社区,并提供培训,帮助开发人员了解如何将 Kotlin 集成到他们的代码和解决方案中。“我们不仅认为这样做对我们的开发人员来说更好,而且我们还认为,这种做法对我们来说,也更好。”Haase 解释说。Google 目前正在其 Android Jetpack 和其他库中使用 Kotlin 编写。

Kotlin 不仅仅用于 Android 开发

目前,Kotlin 因其在 Android 应用程序开发领域的崛起而闻名,尽管 Google 仍在大力投资其他语言,但它也在推动 Kotlin 的发展。“如果你正在进行一个新项目,我们建议你从 Kotlin 开始。我们在 Android 操作系统开始采用了‘Kotlin 优先’的方法。”Android 的 Cuthbertson 说道。


但 ThoughtWorks 的 Fausto de la Torre 认为,这种语言显示出了其超越移动开发的价值。


ThoughtWorks 目前看到的情况是,团队使用 Ktor 构建微服务并将软件部署到生产环境中,Ktor 是一个使用 Kotlin 构建一步服务器和客户端的框架。MockK 是另一个用于模拟和测试 Kotlin 应用程序的 Kotlin 解决方案。“作为一个本地库,它帮助我们的团队编写干净简洁的代码来测试 Kotlin 应用程序,而不是使用像 Mockito 或 PowerMock 等不方便的包装器。”ThoughtWorks 在他们的技术雷达中写道。此外,ThoughtWorks 在 Kotlin 使用 Detekt 进行静态代码分析,在 Kotlin 中使用 http4k 来服务和使用 HTTP 服务。


Kotlin 团队还致力于通过 Kotlin/Native 将 Kotlin 语言带到移动应用程序开发之外的领域,这是一种无需运行虚拟机即可将 Kotlin 代码编译到本地库的解决方案。“Kotlin/Native 主要是为那些不需要或不可能使用虚拟机的平台(如嵌入式设备或 iOS)设计的。它解决了开发人员需要开发一个无需额外运行时或虚拟机的独立程序的问题。”JetBrains 在网站上如此写道。Kotlin/Native 目前支持 iOS、MacOS、Android、Windows、Linux 和 WebAssembly。


Google 还试图通过采用 Kotlin 进行云开发,将 Kotlin 引入 Android 开发之外的领域。


JetBrains 最近发布的一份 Kotlin Consensus 报告中,该公司发现,39% 的受访者使用 Kotlin 作为他们的主要语言,46% 的受访者将 Kotlin 用于服务器端生产代码,10% 的受访者将其用于数据科学。该报告是基于 Kotlin 用户的 4000 多份回复生成的。“如今,逾 200 万人在各种平台上使用 Kotlin,用于开发所有可能类型的软件。有超过 250 名的贡献者帮助推动发展,也在帮助生态系统向前发展。我们对社区的奉献精神和辛勤工作感到非常高兴。他们为 Kotlin 学习资料做出了巨大的贡献并传播了 Kotlin 的知识。”Kotlin 团队在一篇博文如此写道。

Google 采用 Kotlin 的五大理由

对开发人员来说,在现有的和已建立的平台上采用一种新的编程语言可能会让他们感到吃惊,因为它会在现有的应用程序、库、代码、新语言和新 API 之间形成一个脱节的环境。


Android 首席宣讲师 Chet Haase 说:“平台是否应采用另一种语言,一直是一个考虑因素,由于震动效应,答案总是否定的。然而,当我们想开发人员提出 Kotlin 的想法时,他们非常感兴趣。”


Google 的 Android 产品管理总监 Stephanie Cuthbertson 表示,促使 Google 在 2017 年宣布支持 Kotlin 的主要驱动因素有五个。


1.“这是一种漂亮的编程语言,” Cuthbertson 称。因为它是一种现代编程语言,所以,他利用了开发人员已经熟悉的许多新的最佳实践。


2.Kotlin 完全可以与 Java 互操作,允许开发人员在不同语言之间来回调用。


3.成熟。当 Google 决定采用 Kotlin 时,它已经诞生五年,并且已经达到了 1.0 的稳定性。


4.IDE 支持。Kotlin 是由 JetBrains 的 IntelliJ IDEA(Android Studio 的底层平台)的创建者创建,因此,它为 IDE 和语言提供了增强的支持。


5.社区。Cuthbertson 说,“我们将 Kotlin 应用到了 Android 上,是因为社区真的非常需要它。”事实上,Cuthbertson 解释道,就在 Google 宣布采用 Kotlin 之前不久,社区就曾给 Android 写了一封公开信,要求团队采用 Kotlin。


Cuthbertson 说:“Kotlin 并不仅仅是在发展,人们真的很喜欢它,正是因为出了这一系列的事情,让我们不得不打破平衡,并说:‘是时候向前迈进了。’”


原文链接:


https://sdtimes.com/softwaredev/the-rise-of-kotlin/


2019-06-12 14:3211263
用户头像

发布了 375 篇内容, 共 185.2 次阅读, 收获喜欢 944 次。

关注

评论

发布
暂无评论
发现更多内容

腾讯高工强烈推荐的“Netty速成手册”原理+应用+调优,带你将知识点一网打尽

比伯

Java 编程 程序员 架构 Netty

一文带你彻底了解大数据处理引擎Flink内存管理

华为云开发者联盟

大数据 数据 处理

为了SpringBoot提交Tomcat执行,我总结了这么多

小Q

tomcat 学习 面试 微服务 springboot

盘点2020 | 疫情下的思考和学习

soolaugust

盘点2020

答了Mybatis这个问题后,面试官叫我回去等通知……

田维常

mybatis

Prometheus TSDB(Part 2):预写日志(WAL)和检查点

Grafana 爱好者

云原生 Prometheus tsdb 可观察性

硬肝到秃头!Alibaba强推并发编程笔记我跪了,真的学到好多东西!

Java架构追梦

Java 学习 架构 面试 并发编程

解析字节算法面试真题,深入探究ArrayList应用原理

小Q

Java 学习 编程 架构 面试

智慧警务可视化平台开发,重点人员管控系统搭建

t13823115967

智慧公安 智慧警务系统开发

产品策略闭环是个什么环?

万事ONES

项目管理 团队协作 需求管理 需求分析 产品策略

什么是全场景AI计算框架MindSpore?

华为云开发者联盟

人工智能 AI mindspore

将原则纳入到架构的生命中

soolaugust

架构 思考 设计

DolphinDB与MongoDB在时序数据上的对比测试

DolphinDB

mongodb 分布式系统 时序数据库 DolphinDB 数据库开发

盘点2020 | 30岁了,我终于入门编程了

盘点2020

通过Postman和coding.net发布API

太极程序员

Postman API

《大数据算法》.pdf

田维常

算法

智慧城市建设,社区智能化系统搭建解决方案

t13823115967

智慧城市 平安小区

面试被问高并发一脸懵?那是你没看过我整理得高并发回答模板

小Q

Java 学习 面试 高并发 性能调优

如何快速打造一款钉钉 Go sdk

Ceelog

钉钉 企业微信 Go 语言

硬核编程:30天=一个网站+一份周刊

老魚

程序员 建站 web全栈

【经验分享】RTC技术系列之音频编解码

Hanson

LeetCode题解:127. 单词接龙,BFS+统计单词变化次数,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

dubbogo 3.0:牵手 gRPC 走向云原生时代

阿里巴巴云原生

gRPC 云原生 中间件 dubbo-go Go 语言

IDEA 文档插件 DocView 版本更新:修改 UI 并支持 IDEA 2020.3 !

程序员小航

idea插件 IntelliJ IDEA 文档生成

从 JMM 透析 volatile 与 synchronized 原理

码哥字节

volatile JVM JMM Java 25 周年 synchronized

从源码的角度搞懂 Java 动态代理!

Java架构师迁哥

DeFi(去)中心化DAPP系统软件开发

系统开发

Canvas入门实战之用javascript面向对象实现一个图形验证码

徐小夕

Java 大前端 canvas

SPI 在 Dubbo中 的应用

vivo互联网技术

Java jdk dubbo spi

码了2000多行代码就是为了讲清楚TLS握手流程(续)

Gopher指北

https Go 语言

EZYTRX波场智能合约APP系统软件开发

系统开发

不仅仅是Android开发,谷歌告诉你选用Kotlin的五大理由_编程语言_InfoQ精选文章