NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

发布了 370 篇内容, 共 171.4 次阅读, 收获喜欢 940 次。

关注

评论

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

无服务器开发实例|微服务向无服务器架构演进的探索

亚马逊云科技 (Amazon Web Services)

Serverless 微服务 API Amazon Lambda Amazon API Gateway

Parallels Desktop 18 虚拟机 支持M1

彩云

虚拟机 Parallels Desktop 18

Redis常用的八种场景

高端章鱼哥

redis

如何构建更简洁的前端架构?

互联网工科生

前端 前端架构

纯CSS实现炫酷文本阴影效果

南城FE

CSS 前端 动画 阴影

【2023云栖】陈守元:阿里云开源大数据产品年度发布

阿里云大数据AI技术

Mac电脑屏幕录像推荐:Iris激活最新版

mac大玩家j

屏幕录制 录屏软件 Mac软件

BetterDisplay Pro for Mac v2.0.11激活版

加油,小妞!

BetterDisplay Pro 显示器校准工具

Microsoft Remote Desktop for Mac 远程桌面连接工具

彩云

远程桌面连接 microsoft remote desktop

软件测试/测试开发丨人工智能在软件测试领域的崭新前景

测试人

人工智能 软件测试

BetterDisplay Pro Mac版:提升显示屏效能,打造卓越视觉体验

晴雯哥

Redis 的集群模式实现高可用

树上有只程序猿

redis

科兴未来|全球伯乐计划启动!

科兴未来News

AWS云服务器EC2实例实现ByConity快速部署

乌龟哥哥

AWS

一点资讯“一号市集”广州开市 赋能车企营销新市景

科技热闻

Flask新手教程。

百度搜索:蓝易云

Python sql Linux Web 云服务器

九章云极DataCanvas大模型系列成果发布会重磅来袭,诚邀见证!

九章云极DataCanvas

OpenHarmony Meetup北京站招募令

OpenHarmony开发者

「智造」第8期:浅谈国内外对智能制造体系的定义和标准

用友BIP

智能制造

十个令人惊叹的Go语言技巧,让你的代码更加优雅

这我可不懂

Go 语言

sublime text for Mac(代码编辑器)v4.0(4166)注册汉化版

影影绰绰一往直前

.NET8.0 AOT 经验分享 - 专项测试各大 ORM 是否支持

EquatorCoco

.net ORM AOT

Navicat Premium for Mac(多协议数据库管理工具) 16.2.9永久激活版

mac

数据库管理工具 苹果mac Windows软件 Navicat Premium 16

Mirror for LG TV for Mac:简单快捷,实现屏幕镜像投屏

晴雯哥

SQL高级之慢查询日志?

百度搜索:蓝易云

MySQL sql 云计算 Linux 运维

外贸网站被谷歌收录的方法

九凌网络

HandBrake Mac版:强大且易用的视频转换工具

晴雯哥

如何建设一个高效的中英文外贸网站?

九凌网络

Xmind for Mac(思维导图软件) 24.01中文版

加油,小妞!

思维导图 mac软件下载

🔥🔥Java开发者的Python快速进修指南:控制之if-else和循环技巧

EquatorCoco

Java 编程语言 项目开发

中台架构下的性能测试实践方法

老张

性能测试 中台战略 全链路压测 稳定性保障

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