Java vs. Kotlin:是时候用 Kotlin 来开发 Android 了?

说到 Android 开发,我大胆猜测你会下意识想到一种编程语言:Java。

不可否认大部分的 Android app 都是基于 Java 编写的,但是对于Android 开发,Java 并不是唯一选择。

其实,任何一种能在 Java 虚拟机(JVM)上运行的语言来编写 Android app。这段时间,有一种兼容 JVM 的编程语言在 Android 社区十分抢眼,它就是 JetBrains 出品的静态编程语言——Kotlin。

如果你已经对听到许多人对 Kotlin 赞不绝口并且跃跃欲试,那么时机正好。下面我将分为三个部分,循序渐进地介绍和分享如何使用 Kotlin 开发 Android app。

首先,我建议你先想一想,为什么想要从 Java 换到 Kotlin,然后我会对你的选择给出意见。

怎么就要换了?

Java 是使用最广泛的编程语言之一,而且也算是 Android 开发的官方语言(译者:其实 Google 好像没有明确表示过吧)。但是,Java 并不是最佳选择,原因有很多。

最大的原因是,Java 已经不是一种现代化语言了。尽管 Java8 加入了许多开发者翘首以盼的新特性(包括 lambda 表达式),但是在 Android 平台上只能使用一部分 Java8 的新特性,而且短时间内这种情况并不会改善。所以如果你还是用 Java 来开发 Android 的话,那估计只能跟 Java7 慢慢玩了。

并且,Java 还有许多“记录在案”的语法黑点,比如多层 try-catch,扩展性极差,危险的空变量(还有饱受诟病的 NullPointerException),就跟别说不支持函数式编程什么的了。虽然 Java 已经很积极地在添加一些函数式编程的功能,比如 lambda 表达式和函数式接口,但无济于事,因为 Java 的本来就是过程化语言。

Kotlin 的优势

说到这里,可能有人就想换一种更加年轻的 JVM 编程语言了。刚好,Kotlin 可以无缝编译成 Java 字节码,而且自身还带有几种特质在众多 JVM 语言中脱颖而出。

与 Java 可互操

Kotlin 其中一项牛批的技能就是与 Java 100% 可互操(cào)。意思就是说,你可以在一个项目中一遍撸 Java,一遍撸 Kotlin,毫不违和。下面一张图,可以看到有分别用 Java 和 Kotlin 写的 Activity,而且用户察觉不了哪个是 Java 写的,哪个是 Kotlin 写的。

A project consisting of a Kotlin Activity and a Java Activity

既然 Kotlin 和 Java 在同一项目中可以互存,那么就不用大动手脚去把整个项目迁移到 Kotlin 上或者重开一个 Kotlin 项目,你可以直接在现有的 Java 项目上操作。

正是有了这种互操性,我们可以直接在手头的项目中用 Kotlin 尝试开发一部分的代码,而不需要担心会影响到项目的其他部分。我们可以在保有已有 Java 代码的情况下使用 Kotlin 来开发现有项目中新的模块,或者直接一次性把整个项目迁移到 Kotlin 上。

更加爽的是,Kotlin 可以使用几乎所有的 Java 库,甚至是基于注解处理的高级框架。

平缓的学习曲线

更大程度上,Kotlin 是来增强改善 Java 的,而非把其推倒。所以,很多在 Java 中学习到的知识其实都可以应用到 Kotlin 上。

同时,Kotlin 的设计初衷是为 Java 开发者提供平缓的学习曲线。Java 开发者其实会发现很多 Kotlin 的语法是跟 Java 很相像的,比如 Kotlin 对于一个类的声明:

class MainActivity : AppCompatActivity() {

Kotlin 也设计得比较灵性和易读,所以即使碰到一些差异很大的代码,我们还是能揣摩出代码的意思。

各取所长

目前有许多编程范式,但是对于哪种是最好的,没有人能下定论。每种编程范式有利有弊,有人说函数式编程爽炸了,但也有人说过程式编程效率更高。

所以何必孤注一掷呢?Kotlin 结合了函数式编程和过程式编程的优点,带给你丝滑般柔顺体验。

绝佳支持

Kotlin 是 JetBrains 开发的,对,Android Studio 就是基于他家的 IntelliJ 开发出来的,所以,Android Studio 平台对于 Koltin 也是有着绝佳的支持。安装完 Kotlin 插件后,点一下按钮什么的就能在项目中配置 Kotlin 了。

You can configure your project to use Kotlin with just a few mouse clicks

在此之后,Android Studio 就绝逼会识别出 Kotlin 代码,然后编译运行。Android Studio 还为 Kotlin 提供调试,自动补全,代码搜寻,单元测试和全方位的重构支持呢。

然后,鼠标点点点,就能把 Java 文件转成 Kotlin 文件了。

写到这里,下面的写太多简书就一直显示在保存中,全文请跳转到 Github

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

推荐阅读更多精彩内容