Java 已老,Kotlin 或将取而代之!

Kotlin能否取代Java(kotlin的历史以及现状) Kotlin的简介以及与Java的一些比较 阅读详情

Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言的诞生,如Groovy、Scala、Clojure、Kotlin等。

在这里插入图片描述

▌欢迎年纪最小的Kotlin!

Kotlin诞生于2011年,但在去年Google宣布Kotlin成为安卓的官方开发语言之后迅速走红。Kotlin从其他JVM语言中借鉴了大量强大的功能。我们来快速浏览一下Kotlin能为Java开发者带来的好处。

无需再担心NPE
Java程序员都讨厌运行时出现空指针异常(Null Pointer Exception,简称NPE)。Kotlin提供了最好的支持,从而在编译时避免空引用。默认情况下,所有对象都不能为空,如果想定义可空的类型,就必须使用 ? 操作符。访问可空的对象时,编译器会强行要求使用安全调用操作符 ?.。还可以用Elvis操作符 ?: 来赋默认值。

无需提供显式类型声明
Kotlin能够自动推断类型,因此无需显式声明。只需使用val 就可以定义final变量,用var定义普通变量。注意只有声明和赋值出现在同一条语句时才能推断类型。

避免复杂的字符串格式化
Kotlin允许使用字符串模板来简化字符串格式化。$可以用来引用变量,复杂的表达式可以用 ${}。

创建简单的POJO无需使用样板代码
Kotlin提供了data类,用来定义仅仅用来保存数据的对象。Kotlin会为data类自动生成equals、hashCode、toString、copy、getter和getter(针对用var定义的属性)方法。还可以对data类使用对象解构,将对象属性保存到变量中。

可以避免Builder类和冗余的方法重载
Kotlin支持方法的命名参数,因此在大多数情况下无需再创建Builder类。此外,Kotlin还支持默认方法参数,因此无需再为传递默认值而重载方法。

静态初始化集合无需再使用guava库
Kotlin提供了简单直接的方法,利用listOf、mapOf、setOf方法在行内初始化集合。Map的初始化还支持直观的key to value语法。它还支持Map的解构,以方便迭代。

创建Singleton不再复杂
Kotlin的object声明只需一行代码就能创建Singleton。

无需使用不必要的局部变量
在Kotlin中,try、when等结构其实是带有返回值的表达式。例如,可以将try的结果赋给变量,这样就无需再创建局部变量了。类似地,when也可以当做表达式使用。when相当于Java的switch,但要强大得多。

可以避免类强制转换的异常
Kotlin提供了is操作符(相当于Java的instanceOf)以检查对象是否为指定的类型。使用is运算符会自动进行类型转换。这样就能避免由于错误的类型转换导致的异常。

同一个对象内的调用序列中,无需再重复类型名
Kotlin提供了with结构以方便反复调用同一个对象的方法,这样就无需每次都指明变量名。Java通常采用builder模式和方法链来实现这一点。但在Kotlin中更简单,甚至对于非builder类也一样。

Kotlin还提供了apply这个扩展函数,能够实现相同的功能。

Delegation或decorator模式无须再使用样板代码
为了使用组合代替继承,我们通常采用delegation或decorator模式,但wrapper类必须重复被代理的类的每个方法。Kotlin中能够通过by操作符来简化delegation模式。它将自动实现必要的方法来调用被代理的类。当然,必要的时候仍然可以重载特定的方法。

创建静态函数无需再使用类
Kotlin支持类之外的函数,因此创建静态工具函数无需再创建类。

在lambda中修改非final的变量无需再使用hack
Java支持lambda的方式是将其自动替换成匿名类,但这样就无法在lambda中改修非final的变量了。但在Kotlin中你能直接修改lambda中的非final变量。

延迟加载不再困难
Kotlin提供了非常简单的方法,只需指定lazy关键字,就可以推迟属性的初始化。

不需要完全切换到新语言
Kotlin能与Java无缝结合,因此与旧Java代码的集成十分方便。你可以继续使用第三方Java库和框架。与Scala不同,Kotlin没有自己的集合库,它只是扩展了JDK的集合。因此在Java和Kotlin的集合类型之间转换无需使用胶水代码。

代码更紧凑,更易读
Kotlin采用方法名惯例重载了许多操作符,以增加代码的可读性。例如,方法plus用来重载 + 运算符,minus重载 - 运算符,times重载 * 运算符,div 重载 / 运算符,等等。它还支持更多的运算符重载,如%、+=、±、++、-- 等。

Kotlin使用 … 运算符定义范围,使代码更紧凑。它还提供了until关键字以去除边界,step操作符以跳过项目。in操作符用来检查范围。还可以通过实现rangeTo和contains方法来重载 … 和 in 运算符。

扩展现有的JDK类很容易
Kotlin可以通过非常简单的方式给现有的类增加扩展函数。这是个很强大的功能,利用它可以轻松扩展语言的核心API。

▌为什么应该使用Kotlin?

可以将生产力提高许多倍:

它是静态类型语言,因此编译时就能捕获许多bug;
工具支持完善,毕竟是写IDE的公司出品的语言;
由JetBrains这个IDE公司创建,他们很关心开发者的生产力;
能避免Java开发者的许多日常的烦恼。
可以获得许多最佳实践:

所有类都是final;
集合是immutable的;
通过必须的关键字实现重载,而不是可选的注解;
没有必须处理的异常(checked exception);
没有原始(Raw)类型;
对泛型的支持更简洁。
非JVM的支持:

Kotlin还可以编译成JavaScript用于前端开发;
Kotlin还可以在其他原生运行时上执行,因此无需JVM即可运行。
▌开发者应该转换到Kotlin吗?

Kotlin很不错,但还不完美,距离完美的语言还需要一些实践。它背后是JetBrains和Google,因此可以相信它只会越来越好。

如果你是安卓开发者,那么应该立刻使用Kotlin。

如果是Java开发者,那么还应该考虑下其他因素,如团队成员、公司的接受程度等。但即使不能立即使用,也应该看看Kotlin这个现代语言的美。

而且,根据ThoughtWorks的技术报告解读,公司可以在风险可控的项目中尝试使用Kotlin。

喜欢小编轻轻点个关注吧!

刚入职,软件测试岗,有点迷茫不知道下一步怎么提升自己 软件测试前景和发展都是不错,已经入了软件测试这行业就坚挺下去 阅读详情

相关推荐

浙大数值分析lab2

最可怕的一道题,题目是这样的 Root of a Polynomial A polynomial of degree nnn has the common form as p(x)=cnxn+cn−1xn−1+⋯+c1x+c0p(x)=c_n x^n + c_{n-1} x^{n-1} + \cdots + c_1 x + c_0p(x)=c​n​​x​n​​+c​n−1​​x​

yao_zou的博客 4797

Kotlin只是一个“网红”而已

fun inc(num : Int) { val num = 2 if (num > 0) { val num = 3 } println ("num: " + num) } 当你调用 inc(1) 会输出什么呢?在 Kotlin 中, 方法的参数无法修改,因此在本例中你不能改变 num。这个设计很好,因为你不应该改变方法的输入参数。但是你可以用相同的名称定义另一个变量并对其进行初始化。这样一来,这个方法作用域中就有两个名为 num 的变量。当然,你一次只能访问其中一个 num,但是 num 值会被改

m0_63174475的博客 2338

ECMWF等大气数据批量下载(Python API)详细步骤

ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间上与其相差尽可能接近的大气数据,用于消除大气的影响,如果数据量较少我们可以查看影像的时间和空间范围进行下载,但是如果处理某个较大区域时可能涉及到大量的影像,如果一景一景对应查找去下载会很麻烦,因此针对大量数据的自动批量下载很有必要。本文根据 https://cds.climate.copernicus.eu/#

liuxiaojiangtobeno1的博客 1万+

Kotlin 能取代 Java 吗?

作者 |Paresh Sagar译者 |安翔责编 | 伍杏玲出品 |优快云(ID:优快云News)当谈到 Android 应用程序开发时,哪种编程语言会首先出现...

优快云资讯 5282

如何运用好DeepSeek为自己服务:智能增强的范式革命 || 目录

1.1 认知增强的三次浪潮1.2 DeepSeek认知增强模型1.3 人机认知耦合协议1.4 认知增强的数学基础。

𝓓𝓸𝓶𝓲𝓷𝓪𝓽𝓲𝓷𝓰 𝓐𝓵𝓵 𝓣𝓱𝓲𝓷𝓰𝓼 1226

别再手动盘点了!教你给微信小程序仓库系统加个‘扫码枪’:完整扫码入库与查询功能实现

本文详细介绍了如何为微信小程序仓库系统添加扫码入库与查询功能,实现零硬件成本的智能仓储管理。通过优化摄像头参数、增强动态识别算法和深度整合业务逻辑,提升扫码精度和效率,同时提供混合查询方案应对复杂场景。这套方案显著提升入库效率,降低错误率,适用于各类仓储管理需求。

weixin_30844577的博客 304

Kotlin真的会取代JAVA吗?

原文链接 自从Kotlin 成为 Android 开发一级语言,Kotlin确实以其实用,高效赢得了海外很多公司和开发者的认可,比如Square的Jake大神一直在推Kotlin。Kotlin在国外至少有将近2年的应用生产环境的实践(非JetBrains内部实践应用)。在移动开发中,相比iOS程序员,Android程序员总是很幸运,因为我们有很多优秀好用的工具(Android Studi

bystarlight的博客 3849

「UG/NX」BlockUI 控件集合目录大纲

Block UI Styler 模块设计对话框是官方推荐使用的对话框制作方法,它能够与NX自身风格相统一,在实际开发中经常使用。文字内容包含:NX所有控件介绍的链接、内部控件调用的基础介绍、官方案例查看路径、控件的特殊用法篇链接、番外篇链接。

何曾参静谧的博客 2676

Java 已老,Kotlin 或将取而代之?

把你们的想法在在下面评论席上发表出来 小编会一个一个看的 Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言的诞生,如Groovy、Scala、Clojure、Kotlin等。 ▌欢迎年纪最小的Kotlin! Kotlin诞生于2011年,但在去年Google宣布Kotlin成为安卓的官方开发语言之后迅速走红。Kot...

大老二的Python路 417

【实验】ENSP 实战:酒店有线 + 无线三层组网全配置(VLAN 规划 + AC/AP+SSID 绑定)

三层架构:出口路由器 → 核心交换机 → 汇聚交换机 → 接入交换机 / AP / 终端。

jundao1997的专栏 431

1000Base-T1协议解读(基于802.3bq-2016 和Test Suite)

1000Base-T1是由一对双绞线实现全双工传输的以太网标准,采用PAM3编码方式(-1,0,1),编码后的实际传输符号速率为750Mbps。该标准的车载最大传输距离可达15米,主要应用于汽车产品开发过程。测试过程示波器要求带宽≥2G,采样率≥7.5Gbps,网分带宽≥1G。

qflook的博客 5336

Java 会走向晦暗吗? Kotlin 会取而代之吗!

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 8:55 更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2020 超神之路,很肝~...

芋艿V 281

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 151

Java 会走向晦暗吗? Kotlin 会取而代之吗

点击上方 "程序员小乐"关注,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文Be yourself and stay unique. Your im...

程序员小乐 283

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java会走向晦暗吗?Kotlin会取而代之吗

翻译:jdon.com/51453 原文:DEV社区Stackoverflows上的趋势图显示Java从2015年以后走下坡路,而Kotlin开始上升。该图形中的Java趋势不断下...

公众号-老炮说Java 254

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java 会走向晦暗吗? Kotlin 会取而代之吗?

点击上方 "程序员小乐"关注,星标或置顶一起成长 每天凌晨00点00分,第一时间与你相约 每日英文 Be yourself and stay unique. Your imperfections make you beautiful, lovable, and valuable. 做最特别的自己,正因为你的不完美,你才如此美丽、可爱、珍贵。 每日掏心话 人生在世会受许多...

吧主 232

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

eclipse老的java项目如何加入kotlin编译环境

eclipse下老的java项目如何加入kotlin编译环境

Musiccn的专栏 1242

【送书第三期】强势挑战Java,Kotlin杀回TIOBE榜单Top 20!学Kotlin看哪些书?

与Java一样,Kotlin也是用于Android应用程序开发的编程语言,是Android官方支持的第二种编程语言。2016年Kotlin正式发布,在Android“官宣”后曾在2017年进入TIOBE编程语言排行榜前20,这次回归用了5年多时间。如果说第一次上榜是靠“蹭热点”,那么这次上榜完全是“凭实力”。Kotlin几乎在所有方面都胜过Java。反对Kotlin的主要论点是Java是一种更成熟的语言,因此有更多的程序员、书籍、培训课程、库等。让我们看看Kotlin能否在未来几个月保持前20名的位置。

7584

Java 已老,Kotlin 或将取而代之?存在吗?

近期小编看到这样一篇文章 小编个人觉得Java不会衰落的 你们觉得呢? 把你们的想法在在下面评论席上发表出来 小编会一个一个看的 Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言的诞生,如Groovy...

weixin_34195546的博客 110

2. Kotlin语言环境安装与配置——《跟老吕学Kotlin》

无论是在 Windows、Linux 还是 Mac 上安装和配置 Kotlin,都需要先安装 JDK。然后,从 Kotlin 官网下载对应操作系统的安装包,并按照提示进行安装。安装完成后,将 Kotlin 的 bin 目录添加到系统的 PATH 环境变量中(对于 Linux 和 Mac),以便在命令行中直接运行 Kotlin 编译器。最后,通过输入命令来验证 Kotlin 是否安装成功。

Python老吕的博客 2539

秒懂Kotlin之Java程序员如何快速掌握Kotlin

Kotlin/JVM 可以看做是对改进Java的一种积极的尝试,其试图改进Java的已知的被广泛讨论的缺点。 关于Kotlin与Java的爱恨情仇此处按下不表,等有机会单独写一篇相关文章。此文仅从Java惯用者的角度给出使用Kotlin的一些建议,这往往是Java惯用者迅速掌握Kotlin至关重要的方面。 本文主要着眼于Kotlin与Java在语法上差异,便于Java惯用者快速上手Kotlin。 基于Kotlin 1.4.0 版本 通用差异 Kotlin中的方法和属性可以不存在于类中 我们知道,Jav

ShuSheng007的程序人生 4419

【Kotlin】Kotlin 与 Java 互操作 ① ( 变量可空性 | Kotlin 类型映射 | Kotlin 访问私有属性 | Java 调用 Kotlin 函数 )

一、Kotlin 变量可空性 1、Java 与 Kotlin 空值处理区别 2、Java 函数返回非空值和控制 3、Kotlin 函数调用 Java 函数 4、平台类型 5、@NotNull 和 @Nullable 注解 二、Kotlin 的 Java 类型映射 三、Kotlin 访问 Java 私有属性 四、Java 调用 Kotlin 函数 1、函数调用 2、分析 Kotlin 代码生成的字节码数据 3、使用 @JvmName 注解修改 Kotlin 生成的 Java 类名

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

1. 什么是Kotlin语言?——《跟老吕学Kotlin》

Kotlin是一种静态类型的编程语言,由JetBrains公司开发,旨在成为更好的Android开发语言。它提供了强大的功能、清晰的结构以及简洁的语法,使得开发者能够更高效地编写代码,并减少出错的可能性。Kotlin以其独特的魅力和优势,在全球开发者中赢得了广泛的认可和支持。它具备简洁明了的语法、强大的跨平台能力、丰富的社区支持和与Java的互操作性等特点,使得它成为了一个值得尝试的编程语言。无论你是Android开发者还是其他领域的开发者,Kotlin都能为你带来全新的编程体验和惊喜。

Python老吕的博客 1279
上一篇: Java 10 发布,是时候关注 Kotlin 了
下一篇: 从传统外企到阿里 P9,这位 Java 工程师经历了什么?
java1856905
博客等级 码龄8年 100粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值