朋友,大家好。 Dmitry Kozhevin是OTUS基础课程“ Android Developer”的老师。 特别是对于我们博客的读者,我准备了这篇颇有争议的文章的翻译。 您的意见非常有趣,因此,阅读后,我邀请所有人对此出版物发表评论。
一旦Kotlin获得了Google的支持,Kotlin粉丝的兴奋就不是唯一的反应。 那些不熟悉Kotlin的人非常担心它与Java的兼容性水平,学习它的平均时间以及总体
上使用Kotlin的
好处 。
为了以最短,最清晰的方式解释和展示该语言,许多Kotlin开发人员提到了Kotlin与第二种正式的iOS语言Swift的三年并行。 一切都称Kotlin为“ Android的迅捷”,一切都简化了任务并帮助创建了该语言的图像。 但是,此图像也引起了iOS社区的
争议 ,因为一些iOS开发人员并未发现这种比较讨人喜欢,而把Kotlin视为模仿者。
至少应该指出的是,尽管Swift出现在2013年,但Kotlin出现在2011年。 因此,即使由于Swift较早接触更广泛的受众而比较Kotlin和Swift(按确切顺序)可能很方便,但Kotlin模仿的任何主张都是没有道理的。
但是,值得比较吗? 如果是这样,相似性扩展了多少? 它的存在是否暗示着iOS和Android应用程序的发布在将来可能会变得更简单,更快的事实? 目前,ScienceSoft在
移动应用程序开发服务方面的丰富经验使人们可以进行猜测。 让我们来看一下。
句法
Swift语法不仅使人联想起Kotlin语法-在小的代码段中,
行相似度可能高达
77% 。
下表总结了主要区别:
基本原理,类和功能具有非常相似的表达方式。 与Objective-C不同,Swift方法调用类似于Java和Kotlin调用,它们具有名称空间系统和点表示法样式。 例如,以下是两种语言中的函数调用:
这是在两个类中声明类的方式:
您可以在
本文中找到许多其他示例,如果它们告诉我们一些信息,则是这两种语言都有一个共同的目标-尽可能简洁和透明,这使开发人员的工作更加轻松。 在这方面,Kotlin和Swift的语法系统非常有效,因为开发团队非常重视它们的优雅。
安全性
尽管Swift和Kotlin在键入方面既强大又静态,但是它们也允许您使用动态类型。 这样,语言将保持简洁和灵活,从而可以尽早消除错误和不一致。 因此,对于大型项目,它们被认为非常安全,尤其可靠。
此外,这两种语言结合使用安全导航运算符“?”来处理可选值和null / nil安全性的方法。 或选项类型。 标有“?”的注意事项 在Kotlin和Swift中表达几乎相同:
特色功能
除了null(nil)安全性,函数和类之外,Kotlin和Swift还具有许多类似的函数,包括
constants, variables, generics, protocols/traits
(
用接口 ,翻译者的注释
代替特征 ),
enumerated types, any (anyobject)
,错误处理和其他。 以两种语言实现的某些功能共享该方法,但是由于这些功能返回的原始语言而被不同地调用。
例如,在Kotlin中,您可以找到Java lambda表达式。 在Swift中,这些是块或闭包(Objective-C的术语)。 将两个表达式都调用到代码中的方式与它们的工作方式相似。
Swift中还包含一个称为
计算属性的函数,该函数是带有get调用的特定属性声明,还包含在Kotlin中:
名称参数 (或命名参数)在两种语言中也都使用:
实际上,与其列出这两种语言中存在的功能,不如列出它们中不存在的功能。 即,只有Kotlin支持:
同时,与Kotlin不同,Swift具有:
相似值
两种语言显然将意识形态分开,因为它们解决了其祖先的语言所产生的相同问题:它们不那么冗长,功能有限,更易读且易于使用。 同时,Kotlin和Swift仍然分别与Java和Objective-C兼容,这使得它们既可以用于新项目,也可以用于旧项目。
此外,两种语言之间的强相似性可以帮助开发iOS和Android的本机应用程序。 当然,不能说两个平台上的应用程序可以共享相同的代码,因为特定操作系统的语言和库是不相同的。 但是,由于Swift和Kotlin在语法和功能上的相似性,因此应用程序逻辑和功能的方法可能非常相似。 这样可以使开发,测试和维护更快,更轻松。
iOS和Android的通用语言?
从理论上讲,谷歌已经可以接受Swift作为官方语言而不是Kotlin。 即使在2016年,也有关于这种可能性的传言。 这样的步骤可能不会造成任何跨平台开发工具都不相关的情况,但是两个平台之间的差异无疑会变得模糊。
但是,这不仅是因为企业的竞争力,也是不合理的。 尽管Swift和Kotlin是相似的,但它们大多数都与其前任相似。 换句话说,Swift和Kotlin弥补了Objective-C和Java之间的鸿沟。 但是,从Java切换到Kotlin仍然比从Java切换到Swift更加自然和顺畅。
总的来说,并不是每个人都喜欢适应新事物的想法。 一些开发人员花时间开始使用一种新语言,就像
Swift的采用一样 。 确保向新语言的过渡不会是一项困难的测试,这意味着该语言最终会流行,对于新语言而言,这首先很重要。
告别思想
随着移动开发的不断发展,技术也在不断发展。 这就是为什么在5-10年内,科特林和斯威夫特都可以变得完全不同。 尚不知道语言是否会继续弥合它们之间的鸿沟。 但是,由于iOS和Android正在寻找最方便,安全和最快的移动开发工具,因此最终有一天他们会说相同的语言。