v1.4发布在即,诞生近10年的Kotlin取代Java了吗?

2023-10-08 18:10

本文主要是介绍v1.4发布在即,诞生近10年的Kotlin取代Java了吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

来源丨安卓开发

来自公众号丨开源中国

Kotlin 诞生于 2010 年,出自 JetBrains,并于2012年正式开源。Kotlin 最初的设计目的是为了创建一种兼容 Java 的编程语言,并让它比 Java 更好。

作为一门相对比较新的 JVM 语言,Kotlin 与其他曾经“叫嚣”取代 Java 的语言有着截然不同的命运。2017年,Google 在 I/O 开发者大会上官宣 Kotlin 正式成为 Android 官方开发语言 。两年后的 I/O 大会上,Google 再次加码 Kotlin,宣布其成为 Andoid 开发官方首选语言。

多年来,在 Google 的大力推广下,Kotlin 在 Android 社区受到的关注度越来越高,也有不少国内开发者开始转移到 Kotlin 进行 Android 开发。尽管如此,许多 Android 开发人员仍然在犹豫,“迁移到 Kotlin 是否是一条正确的道路?”

为进一步了解 Kotlin 目前在国内 Android 开发领域的现状与发展趋势,我们邀请到爱回收终端技术部负责人、Android 开发专家沈哲,就相关问题对其进行了采访,希望能够给想要接触和了解 Kotlin 的 Android 开发者带来启发。 

以下为采访内容:

Kotlin 相对来说是一个比较新的语言,它在哪些方面打动了您,让您选择使用 Kotlin 来进行移动端开发呢?

沈哲:

Kotlin 的语法融合了 Scala、Groovy、Python、Swift 等众多语言的特性,如果使用过其中任意一门语言,上手 Kotlin 是非常容易的。花几天熟悉过语法之后,就可以直接进行开发。

Kotlin 是一门务实的语言,函数式思想、各种语法糖、协程等等特性都是打动我的地方。

特别是,Kotlin 函数式编程方式相比于 Java 是思想上的变化。Kotlin 的各种语法糖简化了代码量。Kotlin 的协程吸收了各家语言协程的特性,同时让异步编程变得简单。

据我们了解,Kotlin 是为了弥补 Java 的部分缺点而诞生的,那么与传统的安卓开发语言 (Java)相比,Kotlin 的优势体现在哪些方面,或者说它弥补了 Java 的哪些缺点呢?

沈哲:

我整理了 Kotlin 几个方面的优势:

1. Kotlin 的语法糖多,能够减少代码量。

2. 从编码层面上能够减少空指针的产生,因为需要对变量在 null 上的检查,以及支持"?."、"?:"来处理 null。

3. 兼容 Java 的语法,不像 Scala 那样另起炉灶。因此,绝大多数第三方 Java 库可以直接使用。

4. IDE 层面支持直接将 Java 代码转换成 Kotlin。

5. 相比于 Java 8,更好地支持 lambda 表达式。

近年来 Kotlin 发展势头很猛,Google 也将 Kotlin 列为安卓开发推荐语言,网上也有很多朋友在讨论 Kotlin 是否会取代 Java 在安卓开发中的地位,那么当前使用 Kotlin 开发 Android 应用的现状是怎样的?有很多人已经转到 Kotlin 上了吗?

沈哲:

当前越来越多的开发者,会选择 Kotlin 作为原生 App 的首选开发语言。去年这个时候,已有调查报告显示大约有40%的开发者使用了 Kotlin。Kotlin 已经超越 Scala 和 Clojure,成为 JVM 上第二大受欢迎的语言。

就我所在的部门而言,Android 新的项目、包括 sdk 的项目都是采用 Kotlin 进行开发的。爱回收其他部门的 Android 项目也大都会使用到 Kotlin。我在上一家公司时,也要求 Android 团队开始使用 Kotlin 开发 Android App。 

Java 诞生了这么多年,用户人群也相当庞大,对于这部分开发者转到学习 Kotlin 会有哪些难点?以及怎样克服呢?

沈哲:

我们创新部门使用的后端语言主要是 Kotlin、Python。Kotlin 用于提供 API 服务,Python 用于深度学习。Kotlin 的使用者大都是 Java 开发者,他们使用 Kotlin 之后,普遍觉得 Kotlin 容易上手、简化代码。当然,如果想要使用好这门语言,而不是只是当 Java 来使用,那还是需要一些编程思想上的转变。建议开发者可以去补充一些函数式编程的知识。

如果接下来使用 Kotlin 开发安卓想要发展得更好,Kotlin 本身的生态还有哪些需要优化的地方?

沈哲: 

Kotlin 本身需要完善 Multiplatform 的功能、提升性能,这也是 Kotlin 1.4 值得期待的地方。

随着 React Native、Flutter 等跨平台技术的兴起,越来越多的公司采用这些技术进行混合开发。使用这些跨平台技术比较适合开发 UI 层,但是对操作系统底层 API 的调用、多线程的使用并不适用。

很多 App 的业务逻辑相对复杂,需要针对不同的移动平台单独去实现。如果能够借助 Kotlin Multiplatform 技术开发通用的业务逻辑,则大大提高开发效率。

既然您提到了即将更新的 Kotlin 1.4 版本,能否谈谈对于新版本除了 Multiplatform 相关功能以外还有哪些特性是您比较关注的呢?

沈哲:

我个人比较期待的新特性还有以下几个:

1. 之前,Kotlin 的 SAM 转换用于提高 Kotlin 调用 Java 的便利性。并且只适用于 Kotlin 对 Java 的调用,而且必须是 Java 接口。在 Kotlin 1.4 之后,也可以将其与 Kotlin 函数和接口一起使用。 

2. Kotlin 1.4 将使用新的,功能更强大的类型推断算法。

3. Kotlin/Native 性能的提升。

请您对比一下 Android 与 iOS 当前的开发状况,Android 还有优势吗?

沈哲:

相比 iOS,Android 有一个天然的优势是可以应用于物联网(IoT)。例如 Google 的 Android Things 操作系统,它可以直接复用现有的 Android 知识。

If you can build an app, you can build a device. 只要你会开发APP,你就能开发智能设备。而物联网是未来一段时间的发展趋势,对于新人开发者来说是个很好的发展方向。

大前端时代,移动端开发者应该具备哪些新的能力?又如何提升自己呢?

沈哲:

其实无论身处什么时代,程序员都需要拥有扎实的计算机基础和快速的学习能力。

具备上述两点,Kotlin、Flutter、Vue 等这些语言和框架都可以快速掌握。

表现层的技术总是日新月异,而亘古不变的技术才是最重要的。

移动端的开发者想要具备更好的竞争力,可以考虑深挖一些领域。例如音视频、图像处理、终端侧的 AI 等等。

关于提升自己,本质是一个不断学习、不断复盘总结,从而不断迭代的过程。

就拿我们自己做的手机自助回收项目来说,由于它涉及了各种通信协议、图像识别等技术,比较复杂,在项目初期我存在着很强的挫败感。但随着项目的推进、产品的迭代,以及自身的不断学习,我在此过程中加深了对项目的认知以及对整个系统架构的理解,也提升了自己从整体出发解决问题的能力。

采访嘉宾介绍

沈哲,计算机软件与理论硕士,拥有10年移动开发经验,曾负责魔窗深度链接 SDK 的设计和研发(该产品已于2019年初卖给极光);曾负责京东到家上海的移动团队,全程参与今夜酒店特价App的开发,Decarta Map SDK的开发;拥有多年的服务端开发经验,曾负责京东旅行邮轮业务部门的后端团队,著有《RxJava 2.x 实战》。目前在爱回收创新中心,担任终端技术部负责人,负责隐私清除产品线以及手机自助回收机(MTA) 相关的研发。

程序员专栏 扫码关注填加客服 长按识别下方二维码进群近期精彩内容推荐:   裁员1100人:华为,还是对中年人下手了 程序员转行卖煎饼送外卖,称找回了自己 新手必会的 9 个 Python 技巧! 面对Redis持久化连环Call,你顶得住吗?在看点这里好文分享给更多人↓↓

这篇关于v1.4发布在即,诞生近10年的Kotlin取代Java了吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167111

相关文章

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll