Kotlin还是Scala? Scala还是Kotlin? 争夺JVM Kingdoms桂冠的两个竞争者和“ Better Java”的称号都为这场斗争带来了独特的东西。 但是,哪个应该成为代码的下一个标尺?
Java很老了。 并不是说变老有什么问题。 有时这可能是一件好事。 数学是古老的,我们仍然使用它。 俗话说–如果没有破裂,就不要修复它。 但这并不意味着我们不应该找到改善它的方法。 Java的。
这正是Scala和Kotlin都希望成为的一个更好的,更新的Java。 可以肯定地说,两者都已经成功实现了目标,但是每个人都以自己的方式增加和扩展了Java的功能。
在讨论为下一个项目选择Kotlin或Scala的用例和标准之前,让我们熟悉一下历史以及每种方法的主要优点和缺点。
斯卡拉
Scala在15年前于2004年被引入世界,旨在解决Java的缺陷和常见的开发问题。 Scala之所以被命名为是为了努力成为一种随开发人员的需求而发展的更具可移植性的语言。 它本身就是一种通用编程语言,为功能编程和强大的静态类型系统提供支持。
随着它在学术界的发展,Scala不仅充当了JVM上主要静态语言(当时相当流行)的概念证明,而且还提供了一个关于不同范式和思想的游乐场。功能编程。
长处
更大的社区
大约有15年的发展历史使Scala在JVM领域变得很熟悉。 许多开发人员要么在自己的应用程序上使用它,要么在自己的应用程序上使用它。 这意味着有关StackOverflow和Reddit的更多资源,更多教程和更多(有用)答案 。
模式匹配与大数学
Scala的match语句自称为“ Java在类固醇上的开关”,可让您匹配任何类型的数据,包括您自己的类型。 它还为宏和更高种类的类型提供全面支持,使Scala成为大数据处理任务的理想选择 。
弹性语法
Scala旨在成功地结合功能和OOP范例,并且效果相当好。 兑现了JVM“编写一次即可在任何地方运行”的承诺,并将其与一种功能性的编码风格相结合 ,Scala可让您在代码中两全其美。
![](https://i-blog.csdnimg.cn/blog_migrate/732d1a3b0f5cec71eea08a24d6c2f8d8.png)
弱点
编译速度慢
“ Scala具有正确的功能,但最明显的不足是编译速度很慢。” 这些话只不过是Kotlin的首席开发人员而已 。 而且他不是唯一的一个。 当涉及复杂的企业级程序时, Scala可能需要很长时间才能编译Java和Kotlin在短短几秒钟内即可处理的内容 。
Java兼容性较差
如果您打算在旧版Java代码和高级Scala代码之间来回切换,可能会遇到一些麻烦。 虽然Kotlin是为兼容而设计的,但是Scala引入了函数式编程和类,这些类和类可能会从Java调用时使您遇到错误。
空安全管理效率低下
支持JVM语言替代Java的主要论据之一是它们处理讨厌的NPE的方式。 与Kotlin相比,许多人发现Scala的方法效率低下且笨拙。 为了处理NPE,Scala用Option替换了空值,这会增加代码的复杂性,因为需要明确使用它 。
Kotlin
![](https://i-blog.csdnimg.cn/blog_migrate/001189c775866a547961c3812f3d017a.png)
Kotlin由JetBrains开发并于2012年作为开源发布给世界,很快就成为GitHub上增长最快的语言之一 。 Kotlin从Scala大量汲取了经验,并致力于解决实际问题,带来了可观的编译时间和与Java的完美互操作性 。
KotlinSwift吸引了许多将Kotlin纳入其堆栈的技术巨头,包括Google,Square,Pinterest和Atlassian。 当Google宣布将其作为Android开发的正式采用语言时,这种年轻语言的流行程度急剧上升。
长处
企业支持
说说您对学术界协作力量的看法,这无法与企业支持的力量相提并论。 借助支持Kotlin生态系统的Google和JetBrains(为您带来了Intellij IDE ),它们具有不可否认的优势 。
出色的Java互操作性
正如我在引言中提到的那样,Kotlin的主要优势之一是它与Java代码的完美兼容性。 您可以从Java调用Kotlin代码,反之亦然,没有错误或问题 。
简洁编码
Kotlin解决的Java的痛点之一就是样板代码。 在Kotlin中,它所包含的内容很少。 使用更少的代码行,可以减少错误的余地,并使编写的代码更易于阅读 。
弱点
劣势模式匹配
模式匹配在Kotlin中没有得到完全支持,在这方面显然不及Scala 。 尽管巧妙地应用when子句可以实现类似的结果,但Scala的匹配功能和易用性仍遥遥领先。
较小的社区
尽管发展Swift,但Kotlin社区仍在与Scala保持同步。 尽管Google对Kotlin作为Android的官方语言的支持大大提高了它的流行度,但是更新的社区可能意味着更少的教程,工具和专家可以在需要时伸出援手 。
有限的可用性
当谈到Android开发时,Kotlin是王者。 其整个生态系统面向Android应用程序。 但是其他应用程序呢? 没那么好。 在Android世界之外,Kotlin仍然不如Scala有用或适用 。
用例
最终,对您的选择影响最大的是该语言在您要使用的特定项目中的预期用途。 鉴于两者的优点和缺点,在某些情况下,一个案例会比另一个案例更具优势。
大数据和混合编码范例的Scala
如果您希望使用大数据和大数学,Scala是您的明显选择 。 具有Java和Kotlin都不具备的功能(例如模式匹配,宏和更高种类的类型),并且与Apache Spark完美兼容,Scala是用于数据科学和复杂数学建模的语言。
另外,Scala允许您在代码中混合使用OOP和FP范例。 如果您的项目需要这种独特的方法,Scala可能会比Kotlin或Java为您提供更好的服务。
Android版Kotlin
如果您的项目在Android上,那么这里真的没有问题:Kotlin是您的语言 。 不仅因为它得到了Google的正式认可,而且还因为它具有开发和调试Android应用程序所需的所有工具。 此外,Kotlin内置于Android Studio(从3.0版开始)中,因此在开始使用Kotlin进行编码之前,甚至不需要任何其他安装或配置。
![](https://i-blog.csdnimg.cn/blog_migrate/7588d44451e71f7723883bc8c01a3e4e.png)
好的旧Java仍然兼而有之。 每个新成员都会对其进行改进和扩展,以不同的方式处理熟悉的问题和Java开发的痛点。 与往常一样,诀窍是为工作找到合适的工具-一种对您同样舒适并且与项目目标兼容的语言。 哪一个是你的?
翻译自: https://www.javacodegeeks.com/2019/07/kotlin-vs-scala-right.html