当您考虑Android时,Java可能是第一个让您想到的编程语言,但您不必使用Java进行Android开发。 您可以使用多种不同的编程语言编写Android应用程序,包括C#,Lua,C / C ++,Java,Scala和Clojure,但是有一种替代编程语言,特别是自今年的Google I /O以来一直受到大量关注。
Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它也可以被编译成为Java源代码。它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。
从3.0预览版开始,Android Studio内置了Kotlin支持,因此创建一个了解Kotlin代码的Android项目就像在Android Studio的项目创建向导中选择一个复选框一样简单。
这条消息引起了很多关注,并引发了一场Kotlin与Java的争论。 你最近有机会读到很多关于Kotlin的积极的事情,但是如果你确实从Java切换到Kotlin,那么你到底获得了什么? Kotlin有什么功能,Java没有,反之亦然?
在本文中,我们将讨论Kotlin与Java之间的所有主要差异,包括一些如果你转移到Kotlin就会牺牲的功能。
Kotlin vs Java,后者提供了更简洁的代码 - 没有findViewByIds
如果你比较一个Kotlin类和一个执行相同工作的Java类,那么Kotlin类通常会更加简洁,但是特别是Kotlin可以严重减少你需要编写的样板代码量的一个领域:findViewByIds。
Kotlin Android Extensions允许您将对View的引用导入Activity文件,此时您将能够使用该View,就像它是Activity的一部分一样。 结果? 您永远不必再次编写另一个findViewById方法!
在使用这些扩展之前,您需要在模块级build.gradle文件中添加一个额外的插件(apply plugin:'kotlin-android-extensions'),但之后您就可以开始导入视图。
默认情况下,Kotlin是null安全的
NullPointerExceptions是Java开发人员沮丧的巨大根源。 Java允许您为任何变量赋值null,但是如果您尝试使用具有空值的对象引用,那么请自行尝试遇到NullPointerException!
在Kotlin中,默认情况下所有类型都是非可空的(无法保存空值)。 如果您尝试在Kotlin代码中分配或返回null,那么它将在编译时失败。这使得几乎不可能在Kotlin中遇到NullPointerExceptions - 事实上,如果你遇到这个异常,那么很可能是因为你明确要求Kotlin抛出一个,或者NullPointerException来自外部Java代码。
扩展功能
Kotlin为开发人员提供了扩展具有新功能的类的能力,如果有一个你总觉得缺少一个重要方法的课程,这是理想的!
这些“扩展函数”在Java中不可用,尽管它们可用于其他可用于Android开发的编程语言,例如C#。没有经过检查的例外情况
Kotlin没有检查异常,因此您不需要捕获或声明任何异常。
这是否会吸引您使用Kotlin,或者您希望坚持使用Java将取决于您对已检查异常的看法,因为这是一个划分开发人员社区的功能。 如果您厌倦了尝试/捕获块使Java代码混乱的问题,那么您会对这一遗漏感到满意,但是如果您发现经过检查的异常会鼓励您考虑错误恢复并最终推动您创建更强大的功能 代码,那么你更有可能将这看作是Java比Kotlin更具优势的领域。
可与Java互换
在讨论是否使用Kotlin或Java进行Android开发时,您应该意识到还有第三种选择:同时使用两者。尽管两种语言之间存在差异,但Java和Kotlin是100%可互操作的。您可以从Java调用Kotlin代码,并且可以从Kotlin调用Java代码,因此可以在同一个项目中并行使用Kotlin和Java类,并且所有内容仍然可以编译。
当您开始使用Kotlin时,这种在两种语言之间移动的灵活性非常有用,因为它允许您逐步将Kotlin引入现有项目,但您可能也希望永久使用这两种语言。例如,您可能希望在Kotlin中编写某些功能,并且您发现某些功能更容易用Java编写。由于Kotlin和Java都编译为字节码,你的最终用户将无法知道你的Java代码在哪里结束,并且Kotlin代码开始了,所以没有理由你不能发布一个由Java和Kotlin组成的应用程序码。
如果您想自己尝试Kotlin,那么只要您安装了Android Studio 3.0预览版或更高版本,就可以通过以下几种方式开始使用。
正如你所看到的,有很多很好的理由喜欢Kotlin和Java,但是Java有几个领域占优势。 可能Kotlin与Java辩论不会很快解决,两者都有其自身的优点。 那么,你是要转向Kotlin,还是觉得Java仍然是Android开发的最佳选择?
Google Coral也颇受开发者关注。在今年的5月份Google I/O大会上,Google用了一个专门的session向所有的开发者再次详细地介绍了Coral。除了介绍Coral的性能以及其硬件开发产品,Google还在大会上介绍了基于Coral硬件(Coral Dev Board),由国内团队开发出的移动端App——Model Play。据悉,Model Play 是面向全球 AI 开发者的 AI 模型共享市场。
Model Play 不仅为全球开发者提供了 AI 模型展示交流的平台,更能搭配含 Edge TPU 的 Coral Dev Board 进行使用,加速 ML 推理,通过手机实时预览模型运行效果,助力 AI 由原型向产品拓展。