Java与Kotlin:您应该使用Kotlin进行Android开发吗?

在考虑Android开发时,很可能会立即想到一种编程语言:Java。

的确,大多数Android应用程序都是用Java编写的,但在进行Android开发时,Java并不是您唯一的选择。

您可以使用可以在Java虚拟机(JVM)上编译和运行的任何语言来编写Android应用程序,而最终用户则不是明智之举。 Kotlin是一种真正引起Android社区关注的JVM兼容编程语言,它是JetBrains的静态类型编程语言。

如果您听说过Kotlin的好消息并有兴趣亲自尝试,那么您来对地方了。 在这个由三部分组成的系列文章中,我将分享您需要了解的一切,以便开始使用Kotlin进行Android开发。

在第一部分中,我将探讨为什么您作为Android开发人员可能首先考虑从Java进行转换,然后研究选择Kotlin作为Java替代品的利弊。 到本文末尾,您将对Kotlin所提供的功能有一个扎实的了解,并知道它是否适合您。

在第二部分中,我们将研究如何设置Android Studio安装以支持Kotlin并创建一个完全用Kotlin编写的简单Android应用。 有了这些基础之后,在第三部分中,我们将研究如何使用Kotlin语言的一些更高级的功能来增强您的Android开发。

为什么要从Java进行切换?

尽管Java是世界上使用最广泛的编程语言之一,并且几乎是Android开发的官方语言,但是有很多原因导致Java不一定总是成为您的Android项目的最佳选择的原因。

最大的问题是Java不是现代语言,尽管Java 8是该平台的一大进步,但它引入了开发人员一直在等待的许多功能(包括lambda函数),而在编写Android时仅支持Java 8功能子集 。 Android开发人员似乎不太可能很快获得Java 8的全部好处,因此在可预见的将来,如果您想在Android项目中使用Java,那么Java 7将会使您陷于困境。

Java整体上也存在一些文档齐全的语言问题,包括无休止的try - catch块,缺乏可扩展性,null-unsafety(以及臭名昭著的 NullPointerException ),更不用说缺乏对功能编程功能的支持。 尽管Java开始增加一些功能性的编程元素,例如lambda表达式和功能性接口,但Java仍然是一种程序语言。 Java的语法也很冗长,特别是与许多现代编程语言相比。

Kotlin的优势

因此,您可能需要考虑切换到旨在在JVM上运行的许多现代编程语言之一。 尽管不乏可编译为Java字节码的语言,但有一些因素使Kotlin脱颖而出:

与Java的互换性

作为Java的潜在替代品,Kotlin的最大优势之一就是Java和Kotlin之间的互操作性极高的水平—您甚至可以在同一项目中同时存在Java和Kotlin代码,并且所有内容仍然可以完美地编译。 在下面,您可以看到一个由Java Activity和Kotlin活动组成的项目示例。

由Kotlin活动和Java活动组成的项目

实际上,一旦编译了混合的Kotlin和Java项目,用户将无法分辨项目的哪些部分用Java编写,哪些部分用Kotlin编写。

由于Kotlin和Java类可以在同一个项目中并存,因此您可以开始使用Kotlin,而不必做任何大刀阔斧的操作,例如将整个项目转换为Kotlin或专门启动一个新项目,以便可以在Kotlin上尝试一下。

由于具有这种互操作性,因此如果您确实有一个已经在从事的项目,则可以在该项目的一小部分中试用Kotlin,而不会影响其余的代码库。 而且,如果您确定要继续使用Kotlin,则可以一次将项目的现有Java代码迁移到Kotlin一个文件,或者不更改项目的旧Java代码,而仅将Kotlin用于新的类和功能。

由于Kotlin可以与Java完全互操作,因此您还可以在Kotlin项目中使用大多数Java库和框架,甚至可以使用依赖注释处理的高级框架。

易学曲线

Kotlin的目标是对Java进行增强,而不是完全重写,因此您在Java整个职业生涯中获得并磨练的许多技能仍应适用于Kotlin项目。

Kotlin的设计还旨在使Java开发人员拥有轻松的学习曲线。 Java开发人员应该发现大多数Kotlin语法让人感觉很熟悉。 例如,用于在Kotlin中创建新类的代码与Java 非常相似:

class MainActivity : AppCompatActivity() {

Kotlin也被设计得直观,易于阅读,所以即使你确实遇到了一些代码,这是截然不同的,你还是应该能够得到一个什么样的代码是干什么的要点。

结合最佳的功能和过程编程

当前有许多编程范例被广泛使用,但是当涉及到“哪种方法是最好的”问题时,没有简单的答案。 每个编程范例都有其自身的优缺点,因此尽管不乏功能编程具有优势的场景,但程序方法更有效也存在许多问题。

那么,为什么要在功能和程序之间进行选择呢? 与许多现代编程语言一样,Kotlin的目标是通过结合过程式和函数式编程中的概念和元素,为您带来两全其美的体验。

一流的Android Studio支持

Kotlin由IntelliJ(基于Android Studio的IDE)背后的公司JetBrains开发。 因此,Android Studio对Kotlin的出色支持也就不足为奇了。 安装Kotlin插件后,Android Studio可以像打开几个菜单一样简单地在项目中配置Kotlin。

您只需单击几下鼠标,即可配置项目以使用Kotlin

在为Android Studio设置Kotlin插件后,您的IDE将不会理解,编译和运行Kotlin代码。 Android Studio还为Kotlin提供调试,自动完成,代码导航,单元测试和完全重构支持。

一旦将Android Studio项目配置为支持Kotlin,您甚至只需单击几下鼠标,就可以将整个Java源文件转换为Kotlin文件。

更简洁的代码

如果将产生相同结果的Java类和Kotlin类进行比较,则用Kotlin编写的类通常比用Java编写的简洁和紧凑得多。 每个开发人员都知道,更少的代码意味着更少的错误!

例如,以下Java代码创建了一个由浮动操作按钮(FAB)组成的活动,该活动按钮在被点击时显示一个包含有帮助消息“ 这是一个快餐栏”的快餐栏

public class MainActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
       setSupportActionBar(toolbar);

       FloatingActionButton myfab = (FloatingActionButton) findViewById(R.id.myfab);
       myfab.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Snackbar.make(view, "This is a snackbar", Snackbar.LENGTH_LONG)
                       .setAction("Action", null).show();
           }
       });
   }

}

Kotlin等效项可以用更少的代码实现相同的工作,尤其是在创建FAB和设置onClickListener

class MainActivity : AppCompatActivity() {

   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)
       val toolbar = findViewById(R.id.toolbar) as Toolbar
       setSupportActionBar(toolbar)

       val myfab = findViewById(R.id.myfab) as FloatingActionButton
       myfab.setOnClickListener { view ->
           Snackbar.make(view, "This is a snackbar", Snackbar.LENGTH_LONG)
                   .setAction("Action", null).show()
       }
   }

}

这两个代码段具有完全相同的输出:

可以用Java或Kotlin编写的简单Android应用程序的示例

Kotlin尤其擅长减少所需编写的样板代码量,与使用更冗长的语言(例如Java)进行编码相比,这使Kotlin的编码体验更加令人愉悦。

特别是,Kotlin Android扩展(我们将在第二部分中进行探讨)使您可以将对View的引用导入到Activity文件中,这样就可以将View视为该Activity的一部分来使用。 这意味着您不再需要使用findViewById标识每个视图,这可以转换如下代码:

TextView text = (TextView) findViewById(R.id.myTextView); text.setText("Hello World");

简而言之:

myTextView.setText("Hello World")

什么是渔获?

没有一种编程语言是完美的,因此尽管Kotlin有很多可以为Android开发人员提供的功能,但您仍需要记住一些缺点:

额外的运行时大小

Kotlin标准库和运行时将增加.apk的大小。 虽然这仅相当于800KB左右,但如果您的应用程序已经很大,那么那额外的800KB可能会使它变得多余,并让用户在下载您的应用程序之前三思而后行。

代码的初始可读性

尽管Kotlin的简洁语法是该语言的最大优势之一,但是您可能最初会发现某些Kotlin难以解读,这仅仅是因为在如此少量的代码中发生了太多事情。 Java可能更冗长,但是好处是所有内容都清楚地说明了,这意味着不熟悉的Java代码比不熟悉的Kotlin易于解密。

另外,如果使用不当,Kotlin的运算符重载可能会导致难以阅读的代码。

缺乏官方支持

Kotlin在Android Studio中可能有出色的支持,但值得记住的是Kotlin并未得到Google的正式认可。

而且,与纯Java项目相比,当您使用Kotlin时,Android Studio的自动完成和编译功能往往会稍微慢一些。

社区较小,可用帮助较少

由于Kotlin是一种相对较新的语言,因此Kotlin社区仍然很小,尤其是与围绕更成熟的语言(如Java)的社区相比。 如果您确实切换到Kotlin,则您可能无法访问相同数量的教程,博客文章和用户文档,并且在论坛和Stack Overflow之类的社区获得的社区支持较少。 在撰写本文时,正在寻找 堆栈溢出上的Kotlin返回刚用Kotlin标记的4,600多个帖子—相比之下,包含Java标记的多达1,000,000多个帖子。

结论

在这个由三部分组成的系列的第一篇文章中,我们探讨了为什么您可能要考虑将Android开发的Java部分切换为一种更现代的,与JVM兼容的语言。 我们还仔细研究了Kotlin作为潜在的Java替代品的独特优缺点。

如果您权衡了利弊并决定尝试Kotlin,那么在本系列的第二部分中,我将向您展示如何使用Android Studio创建一个完全用Kotlin编写的简单Android应用程序。 我们还将研究如何使用Kotlin来确保您不必再编写另一个findViewById

翻译自: https://code.tutsplus.com/articles/java-vs-kotlin-should-you-be-using-kotlin-for-android-development--cms-27846

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值