[转]Kotlin 语言入门宝典 | Android 开发者 FAQ Vol.5

导语: 官方出的 FAQ ,kotlin是兼容 java 6.0 的 jvm 语言,此篇 FAQ 中,大概需要重点关注的大概是 APK 的影响吧: Kotlin 在运行时可能会在您的 debug APK 中增加 7000 个方法和 1M 的大小,如果您使用 Kotlin 替换如 Guava、RxJava 等其他的库,影响可能会小一些。但是您可以在后期通过 ProGuard 来优化减小包的大小。

随着 Kotlin 的快速崛起,我们注意到越来越多的开发者开始关注这个新兴的语言。本期《Googel Play 开发者 FAQ》,我们特别推出了 Kotlin 语言专题,希望这些内容有助于您更好地了解 Kotlin 语言的特性和发展现状,并尝试使用 Kotlin 语言进行 Android 开发。

为什么我们要使用 Kotlin 作为 Android 的最佳支持语言?

Kotlin 做为 Android 所支持的开发语言,拥有简洁、强大以及类型和空指针安全的特性。它能与 Java 语言完美地融合工作,这样就使得那些热爱 Java 语言的开发者们能继续使用 Java,同时还能额外添加 Kotlin 代码以及使用 Kotlin 语言的代码库。另外,许多 Android 开发者已经发现使用 Kotlin 进行开发更加快捷且乐趣十足,所以我们决定更好地支持这些开发者。您可以在我们的官方文档里阅读到更多关于 Kotlin 和 Android 的说明。

我很久之前就用了 Kotlin,现在有什么变化呢?

我们推出了 Android Studio 3.0 以及更高版本,它包含完整的 Kotlin 支持。这将会为您带来更容易、更稳定的开发体验。

使用 Kotlin 开发具有哪些优势?

表达清晰、简洁、扩展性强 类型安全 空指针安全 和 JAVA、C++ 无缝对接 因此,我们对使用 Kotlin 的开发者做了更好的支持,如果您对 Kotlin 感兴趣,首先需要将 Android Stuido 升级到 3.0 版本,Kotlin 工具直接绑定到了这个版本当中。如果您在使用中遇到了问题请参考以下链接中的 “Kotlin 在 Android Studio 的常见问题”

如何在 Android Studio 中使用 Kotlin?

Android Studio 3.0 上您可以很方便的创建一个 Kotlin 文件项目,转换 Java 语言为 Kotlin 语言,并且继续使用您熟悉的 Andoid Studio 的工具,例如 autocomplete, lint checker, refactoring, debugging 等。 创建一个包含 Kotlin 的项目 在 Android Studio 中, 点击 “File > New > New Project”. 在初始页面,点击 Include Kotlin support 点击下一步继续,直到您的项目创建完成

这样在选择了一个 Activity 模版后,源码会以 Kotlin 代码的形式提供,但目前只是一些手机或者平板的模版代码提供了原生的 Kotlin 代码,其余的只会从 Java 代码转换而成,这些代码可能并没有用到 Kotlin 最好的语言特征。

在 Android Studio 中如何 Debug Kotlin?

在 Debug 方面,您可以像以前 Debug Java 来调试您的应用。

为 Kotlin 提供了什么其他 IDE 支持?(比如 Link,autocomplete,refactoring 等)

在 Android Stuido 3.0 上,Kotlin 提供了全部工具的支持,如果在使用中发现了问题,请参考以下链接中的 “Kotlin 互操作文档”。

Kotlin 在未来的发展方向?

我们使用 Kotlin 的一个原因是因为 JetBrains 公司在设计这门语言时十分周到和有启发性的工作。Google 和 Kotlin 的合作确保了使用Kotlin的过程是一个完整而美妙的故事 —— 从语言、框架到工具。我们非常高兴这样的合作能使 Kotlin 成为一个非盈利的工具来为广大开发者所用。

Kotlin 是开源的吗?

在 Kotlin 上,我们首选的开源协议是 “Apache Software License, Version 2.0” “Apache 2.0”。

并且主要的 Kotlin 软件都使用了 Apache 2.0。虽然 Kotlin 项目都会遵循这个协议,但可能有例外的情况会有特殊的处理。比如,Kolint 使用的某些第三方库可能使用与 Apache 2.0 兼容的其他开源协议。

在 Kotlin 和 Java 之间我应该如何选择?

您不必担心这个问题,您可以两个一起使用,如果您想知道 Kotlin 是否适用您,您可以在 Android 上试一试或者学习更多有关于 Kotlin 语言资料。 文档: “Kotlinlang.org” Kotlin 的官方网站,包含了所有的 “基本语法”“标准库参考” “Kotlin Koans Online” 在线 IDE 中的一系列练习,可帮助您学习 Kotlin 语法

视频:

△ “Introduction to Kotlin” Google I/O 2017大会上介绍 Kotlin 成为官方支持语言 “O’Reilly course” (http://shop.oreilly.com/product/0636920052982.do) 一个 8 小时的 Kotlin 课程,视频的讲师是 JetBrains 公司的开发者 Hadi Hariri,介绍 Kotlin 编程设计。需要购买订阅,7 天免费试用。 “Treehouse course” (<https://teamtreehouse.com/library/kotlin-for-java- developers>) “Udemy course” (https://www.udemy.com/kotlin-course/) “Kotlin 初学者”,从头教起,需要购买订阅,初学者有折扣优惠。

书籍:

“Kotlin in Action” (https://www.manning.com/books/kotlin-in-action) : 由 JetBrains 公司 Kotlin 的开发者 Dmitry Jemerov 和 Svetlana Isakova 编写 “Kotlin for Android Developers” (<https://leanpub.com/kotlin-for-android- developers>) 最早的 Kotlin 书籍之一,由 Antonio Leiva 编写

社交渠道: “Kotlin Community” (https://kotlinlang.org/community/) kotlinlang.org 的线下社区项目与小组 “Kotlin Slack” (http://slack.kotlinlang.org/) Kotlin 使用者讨论社区 “Talking Kotlin” (http://talkingkotlin.com/) Kotlin 的半月刊博客

我可以在 Kotlin 中调用 Android 或者其他 Java 语言的库吗?

Kotlin 提供了Java 语言的互通性,这表示 Kotlin 文件中您可以不用 annotation 或 Kotlin 指定语意义,就可以在直接在 Kotlin 里面调用 Java 的方法,这意味着您的项目中可以并存 Java 和 Kotlin 的代码。

我可以在用 Kotlin 中使用 C++ 吗?

当然可以,JNI 是完全支持 Kotlin 的。 要调用 native 的 C 或 C ++代码,只需提前使用 external modifier 来标记一下即可:

external fun foo(x: Int): Double

我怎么在现有的项目中增加 Kotlin 文件?

如果想将 Kotlin 增加到已经存在的项目中,点击 “File > New” 选择一个模版。如果您没有看到这个菜单,需要首先打开 Project 窗口并选择您的 app 组件。

当配置向导出现,选择 “Source Language” 选择 “Kotlin”

至于其他的方式,您可以通过 “File > New > Kotlin File/Class” 去创建一个基本的文件,“New Kotlin File/Class” 窗口提供了一些文件的选择,因为在您更改了类型之后,Kotlin 会自动转换文件类型,所以您选择什么都不重要。

Kotlin 文件保存在 “src/main/java/”, 您会发现 Kotlin 文件和 Java 文件在一个文件夹里面,但是如果您想让您的 Kotlin 文件和 Java 文件分开,您可以用 “src/main/kotlin/” 代替,如果您需要这样做,只需要在您的配置中添加下面的语句就可以了。

Android {
  sourceSets {
      main.java.srcDirs += 'src/main/kotlin'
  }
}

我怎么将 Java 代码转换成 Kotlin 代码?

在 Android Studio 3.0, 打开一个 Java 文件然后选择 “Code > Convert Java File to Kotlin File”.

或者创建一个 Kotlin 文件 “(File > New > Kotlin File/Class)”, 然后复制您的 Java 代码到 Kotlin 文件中。当有提示出现的时候,点击 “Yes” 将 Java 代码转换为 Kotlin 代码,并且可以勾选 “Don’t show this dialog next time” 来方便您下一次转换。

针对 Kotlin 也会提供(与 Java 相同)完整的对应文档、代码和模版吗?

我们正在努力的将我们的文档、代码、模版尽可能的同时覆盖于 Java 和 Kotlin。与此同时,开发者可以依赖 Java 和 Kotlin 的互操作性,将 Java 代码转换为 Android Studio 中的 Kotlin 代码。

Kotlin 在 Android 上的协程使用怎么样?异步、等待等操作如何?

Kotlin 的协程目前应该是可以使用,但由于 Kotlin 的这套机制尚在实验设计阶段,因此 Kotlin 对未来的状态不会有任何的保证,同样的 Android 也不会。

Kotlin 会影响 APK 大小吗?会影响方法数吗?

Kotlin 在运行时可能会在您的 debug APK 中增加 7000 个方法和 1M 的大小,如果您使用 Kotlin 替换如 Guava、RxJava 等其他的库,影响可能会小一些。但是您可以在后期通过 ProGuard 来优化减小包的大小。

使用 Kotlin 会不会有什么性能影响?

Kotlin 没有直接的性能影响。但是它和 Java 一样,性能方面的表现和您的使用息息相关。 比如说:在多个 collection 实例中,重复的复制操作会影响 GC 性能,调用一个接受非空类型的方法,会增加一个空检查的方法调用(但是您可以通过设置 -Xno-param-assertions 来禁用编译时运行空指针检查)

哪一个版本支持 Kotlin?

Kotlin 是兼容 Java 6.0 的,所以您可以在所有的 Android 版本上安全的使用 Kotlin。

以上就是本期有关入门 Kotlin 语言的开发者 FAQ 了,如果您有其他问题,欢迎您通过留言的方式反馈给我们。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

《Kotlin 程序设计》第二章 快速开始:HelloWorld

程序的本质就是映射(函数)。比如说kotlinc这个程序,我们知道,Kotlin基于Java虚拟机(JVM),通过Kotlinc编译器生成的JVM字节码与Jav...

8610
来自专栏吉浦迅科技

DAY9:阅读CUDA异步并发执行中的Streams

53220
来自专栏我杨某人的青春满是悔恨

RxSwift 与 BLE 实战——VisualBlue

最近发生了挺多事,也没什么时间更新博客,心中颇有点负疚感。今天就介绍一下前段时间写的一个 demo,主要功能是扫描附近的蓝牙设备,显示相关信息,点击后可以连接设...

11520
来自专栏云资讯小编的专栏

Kotlin 1.1.2 发布

4月25日,JetBrains 公司通过 Kotlin 的官方博客宣布正式发布 Kotlin 1.1.2 版本。这是 1.1 版的第二个 Bug 修复版,这次更...

18300
来自专栏霍丙乾的专栏

Kotlin Native 详细体验,你想要的都在这儿

本文通过 gradle 以及 makefile 两种方式对 Kotlin Native 项目进行构建,提供了详细的从 C 源码编译、到 Kotlin Nativ...

8.3K30
来自专栏安富莱嵌入式技术分享

【二代示波器教程】第14章 uCOS-III操作系统版本二代示波器实现

本章教程为大家讲解uCOS-III操作系统版本的二代示波器实现。主要讲解RTOS设计框架,即各个任务实现的功能,任务间的通信方案选择,任务栈,系统栈以及全局变量...

18150
来自专栏每日一篇技术文章

Swift3.0 - 遇到的坑

麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Privacy - C...

15310
来自专栏视频咖

如何写出一手好的小程序代码,从架构说起

? 作为微信小程序底层 API 维护者之一,经历了风风雨雨、各种各样的吐槽。为了让大家能更好的写一手小程序,特地梳理一篇文章介绍。如果有什么吐槽的地方,欢迎去...

61520
来自专栏青青天空树

node.js+vue.js搭建程序设计类课程教学辅助系统

  毕业才刚刚两个多月而已,现在想想大学生活是那么的遥不可及,感觉已经过了好久好久,社会了两个月才明白学校的好啊。。。额,扯远了,自从毕业开始就想找个时间写下毕...

62220
来自专栏Cloud Native - 产品级敏捷

微服务架构 (五): 获取微服务数据, 生成报表

2016.8.17, 深圳, Ken Fang 架构师在设计从多个微服务取数据, 而生成报表的架构设计方案时, 往往面临著需在边界上下文 (Bounded Co...

234100

扫码关注云+社区

领取腾讯云代金券