Java vs Kotlin 应该使用Kotlin进行Android开发吗

Posted kwincaq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java vs Kotlin 应该使用Kotlin进行Android开发吗相关的知识,希望对你有一定的参考价值。

 

当您考虑android开发时,有可能立即出现一种编程语言:Java。

尽管大多数Android应用程序都是用Java编写的,但在Android开发方面,Java并不是您唯一的选择。

您可以使用任何可以在Java虚拟机(JVM)上编译和运行的语言编写Android应用程序,而最终用户也不会更明智。而一个真正引起Android社区关注的JVM兼容编程语言是Kotlin,它是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块,缺乏可扩展性,空不安全(以及臭名昭着的NullPointerException),更不用说缺乏对功能编程功能的支持。尽管Java开始添加一些功能性编程元素,例如lambda表达式和功能接口,但它的核心Java仍然是一种程序语言。 Java的语法也很冗长,特别是与许多现代编程语言相比。

Kotlin的优势

 

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

与Java的互换性

 

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

技术图片

事实上,一旦你的混合的Kotlin和Java项目被编译,用户将无法知道您的项目的哪些部分是用Java编写的,哪些部分是用Kotlin编写的。

由于Kotlin和Java类可以并行存在于同一个项目中,所以您可以开始使用Kotlin,而无需像Kotlin一样将整个项目转换为Kotlin,或者专门开始一个新项目,以便您可以在Kotlin尝试您的手。

由于这种互操作性水平,如果您有一个您已经开始工作的项目,您可以在该项目的一小部分中试用Kotlin,而不会影响其余的代码库。而且,如果您确定要继续使用Kotlin,则可以将项目现有的Java代码一次迁移到Kotlin一个文件,也可以将项目的旧Java代码保持原样,并且只能使用Kotlin来实现新的类和功能。

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

简单学习曲线

 

Kotlin旨在加强Java,而不是完全重写,所以您在Java职业生涯中获得和磨练的许多技能仍然适用于您的Kotlin项目。

Kotlin也被设计为Java开发人员有一个温和的学习曲线。 Java开发人员应该发现,Kotlin的大部分语法都很熟悉;例如,用于在Kotlin中创建一个新类的代码与Java非常相似:

1
class MainActivity : AppCompatActivity() {

Kotlin也被设计为直观易读,所以即使你遇到一些截然不同的代码,你仍然可以得到这个代码的作用。

结合最好的功能和程序编程

 

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

那么为什么要在功能和程序之间选择呢?像许多现代编程语言一样,Kotlin旨在通过结合程序和功能编程的概念和元素,为您带来最好的两个世界。

一流的Android Studio支持

 

Kotlin是由JetBrains开发的,该公司是Android Studio所基于的IntelliJ-IDE的公司。那么,Android Studio对Kotlin有很好的支持并不奇怪。一旦您安装了Kotlin插件,Android Studio就可以在您的项目中配置Kotlin,就像打开几个菜单一样简单。

技术图片

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

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

更简洁的代码

 

如果比较产生相同结果的Java类和Kotlin类,则写入Kotlin的类通常比使用Java编写的一样简洁和紧凑。 而且每个开发者都知道,代码减少意味着更少的错误!

例如,以下Java代码创建一个由浮动操作按钮(FAB)组成的活动,当点击时,显示一个包含有用消息的小吃店这是一个小吃店。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
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时:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
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()
       }
   }
 
}

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

技术图片

Kotlin特别善于减少您需要编写的样板代码的数量,这应该使Kotlin的编码更加愉快,与Java中更详细的语言编码相比。

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

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

进入更简洁:

1
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://blog.csdn.net/jiangjunshow

以上是关于Java vs Kotlin 应该使用Kotlin进行Android开发吗的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin初识Kotlin

Java vs Kotlin,Android开发人员应该选择哪种语言?

Android为什么要从Java改用Kotlin

Android为什么要从Java改用Kotlin

Java vs Kotlin,Android开发人员应该选择哪种语言?

SimpleDateFormat vs DateFormat vs Joda-Time:Kotlin 应该首选哪一个?