将 Kotlin 用于生产环境:你在犹豫什么?

在 Android 的世界,Kotlin 看起来无处不在。现在很难找到一个关于Android的会议或者一篇博客不提及 Kotlin。我记得在去年的柏林 Droid 会议,我所了解的大多数人都才开始在生产环境中使用 Kotlin (我也在两个月后发布了第一个更新)。确实,Kotlin 对 Android 开发社区的影响远远大于对 Java 开发社区的影响。我敢肯定 JetBrains 也一定未曾意料到这样的情况。

但是这是有道理的:从一开始,Android 的开发者就使用着过期的语言的过期版本,同时其他平台和语言在不断的演变。Kotlin 使得我们再次具有竞争力。

停步的信号

但是有时开发者的热情会被相关利益者控制。尽管 Kotlin 会为你的代码库和开发速度带来各种好处,但是很有可能没有机会使用 Kotlin。他们的很多理由可以很容易的驳回,但是有的则有一定道理。

我们一起来看看:

团队中的每一个人都需要学习一门新的语言

这个是一个明显有关的理由。但是好消息是:Kotlin 的学习曲线真的很低

一开始你会用 Kotlin 的关键字写下 Java 风格的代码,这样就可以了,如果有问题,IDE 内置类复制粘贴转换功能。

举个栗子,相比之下,RxJava 的学期曲线则比 Kotlin 陡峭的多。

顺便说一下:你的团队在学习一门新的语言是一件好事情

当然你需要找到一种方式让每一个成员都能够熟悉新的语言。这意味着时间,而对于利益相关者来说时间就意味着金钱。有一个很好且没有任何风险的开始点就是测试。测试是一个尝试新工具的安全环境。通过迁移测试环境开始或者用 Kotlin 来写一些新的测试。事实上,Kotlin 有一个很好的特性甚至会提高你的测试代码。过一段时间每一位成员都会了解 Kotlin 怎么工作,你也就可以进行下一步了。

很难找到有经验的 Kotlin 开发者

事实上,大多数开发者都渴望尝试新的事物,而那些不愿意尝试的也不是你想雇佣的。所以给候选者提供使用 Kotlin 的机会会增加录用他们的几率

在 Swift 中我们可以验证这一点,现在已经很难找到喜欢使用 Objective C 的开发者,而 Swift 仅仅才发布3年。这个问题确实存在。请记住我们所处的世界:一个需要hr从现有项目中找出最佳人选的世界。我们所需要的职位远远多于开发者所适应的职位。用一种新的技术去筛选候选人是很好的寻找满意人选的方法,并将驱动你的产品前进。。。

Kotlin 没有 Google 的背书

这是事实,但是 Android 依赖于字节码。而来自 Kotlin 和 Java 的字节码最终是同一样东西。我们仅仅是在讨论我们写代码所使用的语言。Google 刚刚放弃了 Jack 工具链并且确认为了支持 Java8 提供 javac 编译器。所以前途是光明的。

在这里你真正需要关心的问题是,JetBrains 是否会为 Android 的 Kotlin背书。好消息,他们是坚定的。这是一个成功的故事并且需要耗费很大的精力才能走到现在。上一次 Android Studio 的一个 canary(!) 版本在 Kotlin 支持的方面出现了一些问题,第二天在 Kotlin 插件中就提供了修复。

将 Kotlin 应用到生产中的应用太冒险了

用 Kotlin 开发的应用在运行时没有任何风险。前面已经讲到,语言最终会转换成字节码。也许你正在使用的第三方库的更新风险都比添加Kotlin的风险要大,更何况像 Null Safety 这样的特性会使你的代码库更安全。

此外 Kotlin 已经不再是一门新的语言。从它的第一个功能发布到现在已经有一段时间了,现在已经稳定。

很多拥有大量用户的公司已经部分或者全部切换到 Kotlin。

这仅仅是另一门 JVM 语言而已

以前你可以用任意一种 JVM 语言来开发 Android 应用,但是没有人这么做,为什么我们现在就可以?

我记得以前有人尝试用 Scala 来开发 Android 应用,但是确实非常头疼,因为你需要发布运行库。

Kotlin 在设计时就有考虑 Android,运行库非常小。你所使用的大多数库都要比它大得多。这就是最大的不同!

我们没有时间重写应用

你不需要重写!Kotlin 和 Java 可以完美的在一起工作。你可以在 Kotlin 中很自然的调用 Java,反之亦然。 就如 Objective C 和 Swift 之间不需要 interop 或者类似中间者。所以你可以在每一个类中决定哪一种语言你工作起来更好。

一门新的语言会拖慢我们

Uncle Bob 前段时间这样写道:每一种新的语言都将我们甩在时间后面,因为我们的工具链需要从0开发。看看 Swift,即使到今天,XCode中对 Swift 的支持还达不到之前对 Objective C 的友好程度。Kotlin 的伟大之处在于它来自工具厂商。它来自给我们开发 IntelliJ(Android Studio 的基础) 的那群家伙。IntelliJ 中对 Kotlin 的支持和对 Java 的支持友好度是一样的。原因就是工具支持。Groovy,一门现代语言,尽管已经出现了很多年,从未获得过 Kotlin 现在所获得的支持。

此外你所有的处理字节码的检查工具也是开箱即用。剩下的可能就是处理源码的静态检查工具。这是一小步的后退,但是很快就会解决。与此同时我们有 Klint作为备选保证我们发布高质量的代码。

所以为什么我们的权益相关者会犹豫?

因为大多数公司移动端已经成为核心业务。不管你在哪一个领域,你的大多数客户都是通过 app 找到你。但是在你的核心业务上,你需要谨慎对待变化,这是完全合乎逻辑的。

变化,移动应用的本质

但是,也请我们记住:移动应用开发时通过持续变化定义的。与后端开发世界不同,事物在持续不断快速变化。

在 Android 出现的这些年里,我们至少经历了3种完全不同的用户交互体系:Pre Holo, Holo 和 Material Design。我们有3种不同的推送通知的 API:XXX,GCM 和 Firebase。 仅仅在几年前广受传播的应用架构还是使用 Content Provider 来封装 HTTP 请求。你的 REST 客户端(也许是基于 Apache)需要将结果写入到 SQLite 数据库。仅仅在几年前依赖注入还因为性能原因作为反模式对待。没有 ReactiveX,函数式编程仅仅停留在后端开发或者大学校园里。

我们移动开发者如果学会了一件事情:变化是持续的。你写下他们的这一刻他们可能已经过时了。一个3年内都没有去碰的应用可以扔掉了。这在 Android 上是有效的,未来也是这样。尝试去寻找一位愿意开发还支持 Android 2 的应用的开发者,或者愿意使用前面提到的 Content Provider 模式的开发者!祝你好运。

不要落后

Kotlin 仅仅只这些变化中的另外一个。不要错过这个机会。谁知道你现在保护的 Java 代码库会不会成为我们所说的遗产系统。

图片来源:https://www.flickr.com/photos/dandydanny/10032614756

本文译自 Kotlin in Production: Should you stay or should you go?
获得原文作者授权

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容