写点什么

不仅仅是 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:3211317
用户头像

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

关注

评论

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

基于P4的SCION -- 构建太比特的未来互联网

俞凡

网络

面试算法之螺旋数组查找问题

泽睿

面试 二分查找

MVP on Board 没用小技巧 👌

newbe36524

.net MVP ASP.NET Core

2.4如何提高架构设计的质量

Lemon

架构实战营模块二作业

老猎人

架构实战营

Presto原理&调优&面试&实战全面升级版

王知无

央视曝光APP弹窗广告三大陷阱:如何监管应用软件弹窗广告

石头IT视角

【数据结构】Java 同步工具 AQS

Alex🐒

Java 源码 数据结构

架构训练营模块二作业

老实人Honey

「架构师训练营第 1 期」

大数据训练营-第一次作业

西伯利亚鼯鼠

[架构实战营一期] 模块二作业

trymorewang

架构实战营

性能测试误差分析文字版-上

FunTester

性能测试 自动化测试 接口测试 测试框架 测试开发

清晰了!一文彻底理解Java事件处理

Jackpop

Java

区块链的宿命,数字经济的局

CECBC

Selenium4 Alpha-7升级体验

FunTester

maven 自动化测试 Gradle 测试开发 selenium

性能测试误差统计实践

FunTester

软件测试 测试 性能测试 测试开发

性能测试误差分析文字版-下

FunTester

软件测试 性能测试 接口测试 测试框架 测试开发

编程的本质是什么?

白色蜗牛

Java 编程 程序员 软件 计算机

健康讲座:如何提升人体免疫能力

石云升

学习 健康 7月日更

【架构设计模块二】:微信朋友圈的高性能复杂度

Ryoma

架构实战营

2.3如何设计高可用架构

Lemon

存储高可用

架构训练营 1 期 - 模块二作业

蔸蔸

【Java特性专题】JDK(8-11)特性分布变化简介

洛神灬殇

Java Java新特性 7月日更 Java11

微信朋友圈架构设计

summer

极客时间 极客时间架构师一期

《面试补习》--来聊聊削峰填谷!

九灵

Java 分布式 消息队列 异步削峰

微信朋友圈高性能架构分析

面向对象的猫

知乎热文 | 如何高效学习Spring Boot?

Jackpop

Java Spring Boot

[架构实战营][模块二作业]

KK_TTN

架构实战营

智能运维系列之五:总结

micklongen

AIOPS 智能运维

进阶指南!深入理解Java注解

Jackpop

Java

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