问题

Kotlin语言现在怎么不火了?

回答
说 Kotlin 不火了,我觉得有点太绝对了。但如果要说它不再像刚出来那会儿那样“炸裂式”地吸引所有人目光,或者在某些领域没有达到预期的统治地位,那倒是可以聊聊。

首先,我们得承认 Kotlin 的出现确实是带来了新鲜感。在 Java 统治的 Android 开发圈,它的各种优点简直是为开发者量身定做的:

更简洁的语法: 告别了那些让人抓狂的 Boilerplate Code(样板代码),比如 getter/setter、构造函数,写起来确实舒服多了。
空安全: 这个简直是福音!解决了多少因为 NullPointerException 带来的崩溃和烦恼。
扩展函数: 可以在不继承类的情况下给类添加新功能,非常灵活。
协程: 异步编程一下子变得清晰明了,不像 Java 那样要面对回调地狱或者复杂的 ThreadPool 管理。
Java 生态兼容: 这点至关重要。它能和 Java 代码无缝切换,让开发者迁移成本低,还能直接使用现有的 Java 库,这为 Kotlin 的普及铺平了道路。

尤其是在 Android 领域,Google 在 2017 年宣布 Kotlin 为官方支持的语言,这无疑是给 Kotlin 打了一针强心剂。随后,越来越多的 Android 项目开始拥抱 Kotlin,很多优秀的开源库也纷纷推出了 Kotlin 版本。那种“会 Kotlin 才能跟上时代”的感觉确实存在过一段不短的时间。

但是,随着时间的推移,一些当初让 Kotlin 脱颖而出的优势,在别的领域或者新技术的出现下,显得不那么“独一无二”了。或者说,它的普及速度和影响范围,可能没有当初大家想象的那么“颠覆性”。

为什么会有“不火了”的说法?

我觉得有几个层面的原因可以解释这种感受:

1. 目标领域的“饱和”与新玩家的出现:

Android 开发: 虽然 Kotlin 在 Android 开发中已经成为了主流,但对于很多已经成熟的项目,或者个人开发者来说,Java 依然能够胜任。而且,随着 Jetpack Compose 的出现,它又引入了一套全新的声明式 UI 框架,虽然可以用 Kotlin 编写,但这个新的技术栈本身需要学习成本,一定程度上分散了对语言本身的极致关注。就像人们从最初的惊艳于“ Kotlin 终于解决了 Java 的这些问题”转变为“如何在新的 Jetpack Compose 时代更好地使用 Kotlin”一样。
后端开发: Kotlin 在后端领域也确实有人在用,尤其是一些追求现代化语言特性的团队。Spring Boot 等主流框架也对 Kotlin 提供了不错的支持。但是,和 Java 的生态相比,Kotlin 在后端领域的普及度还是有差距的。Java 在后端领域拥有庞大而成熟的生态系统,大量的框架、库、工具以及经验丰富的开发者,Kotlin 要想完全颠覆 Java 的地位,挑战是巨大的。
多平台开发(KMM): 这是 Kotlin 的一个重要方向,旨在实现跨 iOS 和 Android 的原生代码共享。起初很多人对它寄予厚望,认为它能成为跨平台开发的一大利器。但实际落地过程中,依然面临着不少挑战,比如平台特性的适配、构建工具的复杂性、以及 iOS 生态对 Swift 的深度依赖等等。它还在成长阶段,还没有达到像 React Native 或 Flutter 那样的市场接受度。

2. 新技术的迭代和焦点转移:

Rust 语言的崛起: Rust 以其内存安全、零成本抽象和高性能吸引了大量开发者,尤其是在系统编程、WebAssembly、高性能计算等领域。Rust 解决的痛点(内存安全)和 Kotlin 解决的一部分痛点(空安全)有所重叠,但 Rust 在更底层的安全性和性能上有着更强的优势。
Swift 在 Apple 生态的地位: Swift 在 iOS 和 macOS 开发中的地位无可撼动,而且 Apple 在不断为其注入新的活力。Kotlin 在跨平台方面虽然有所尝试,但 Apple 自己的原生方案 Swift 拥有更深厚的基础和更直接的支持。
Web 前端框架的迭代: 像 React、Vue、Angular 这些前端框架,以及新兴的 Svelte 等,都在不断发展,吸引着大量开发者和社区的关注。

3. 社区和生态的成熟度:

虽然 Kotlin 的社区非常活跃,但与 Java 经过二三十年积累的庞大生态相比,仍然存在差距。尤其是在一些非常细分或者非常成熟的领域,Java 的库和解决方案可能更丰富、更稳定。
人才储备: 尽管学习 Kotlin 的人越来越多,但与 Java 庞大的开发者基数相比,会 Kotlin 的开发者数量仍然是相对较少的。这在一定程度上影响了 Kotlin 在企业级应用中的普及速度。

4. 市场和企业选择的“惯性”与“风险规避”:

很多大型企业在技术选型时,会优先考虑稳定、成熟、有大量成熟案例和人才储备的技术。Java 在这方面有着天然的优势。
采用一种新语言需要投入大量的学习成本、工具链改造、代码重写以及招聘新人才。即使 Kotlin 非常优秀,但对于一些求稳的公司来说,迁移的风险和成本可能让他们犹豫。

5. 营销和“过气”的说法是一种相对概念:

就像很多流行的事物一样,当一个新事物刚刚出现时,它的光芒往往是最耀眼的,会吸引所有人的目光。当它逐渐普及,成为“常态”之后,那种“新鲜感”和“爆炸性”的讨论自然会减少。这不代表它“不火”,而是它已经从“爆款”变成了“主流”或者“常青树”。
很多时候,“不火了”的说法更多的是一种对比。和它刚刚出现时的狂热相比,现在的声量自然会显得“平淡”一些。但如果和绝大多数编程语言相比,Kotlin 依然是非常活跃且有影响力的语言。

总结一下:

Kotlin 并没有“不火”,它在 Android 开发领域已经成为事实上的主流,并且在其他领域也占有一席之地。但是,它没有成为像 Python 那样几乎通杀所有领域的“万金油”,也没有在后端等领域完全取代 Java。这更多是因为它所处的市场环境在不断变化,新的技术和语言层出不穷,同时像 Java 这样老牌技术也一直在进步,再加上企业在技术选型时会考虑的各种因素。

所以,如果你觉得 Kotlin 不火了,那更准确的说法可能是:

它从“新生代偶像”变成了“实力派中坚”。 最初那种万众瞩目、自带光环的吸引力自然会随着时间的推移而减弱,取而代之的是稳定的生态和持续的社区支持。
它的“光芒”被分散了。 技术的焦点总是在不断转移,总有新的技术在吸引着开发者们的目光。
在某些领域的进展不如预期。 特别是在跨平台和后端开发,它虽然有优势,但面临的竞争也更激烈,普及速度需要时间来验证。

总而言之,Kotlin 依然是一门优秀且非常有前景的语言,尤其是在它最擅长的领域。但“火”本身就是一个动态的概念,相比于它刚刚出现的轰动效应,现在的状态更趋于成熟和稳定。

网友意见

user avatar

我以前是做c#的,这几年也写android。

个人还是不推荐kotlin。

kotlin的语法感觉都是抄c#的吧。学习曲线感觉还是很高的,比c#的糖都多。。

java做android够用了,作为一个强类型的面向对象语言 做大型的项目是没问题的。重构什么都还是很方便的,就是写起来稍微啰嗦一点。

java开源,背后一堆厂商支持,生态很完整,国内大厂都是java,我是看不出来用kotlin的好处到底体现在哪。。

user avatar

Kotlin从来也没大火过吧……


其实很简单,就是2000年之后,程序设计语言越来越不能孤立的评价。几乎所有的程序设计语言都是和库绑定的,而Google不把Java基础类库全部重写一次,或者说Java生态不用Kotlin重写一次。那Kotlin在JVM的地位也就只能和Scala什么的一样不温不火。只会在开发android的时候考虑一下……



其实如果真的觉得语言可以提升生产力,那直接用C#就好了……

.NET的BCL就是C#写的,所以才会用起来如丝般顺滑。

就算是用C#,如果一个异步方法不提供XXXAsync版本,而只提供BeginXXX和EndXXX版本,那封装一下也是挺难受的……


之前有很多直接弄个翻译器从Java翻译成C#代码的XXX.NET项目,能跑起来,但是用起来就是说不出的恶心。这就是语言和类库不适配造成的违和感(别东张西望,说的就是你Hibernate.NETLucene.NET)……




说白了,设计个语言,比写个支撑他的基础库简单多了……



顺便说一句,一个优秀的程序设计语言不在于他有多少语法元素和特性,而在于这个语言的语法元素是否符合直觉。更进一步的就是是否符合你的直觉

符合直觉,或者说你的直觉和语言设计者的口味一致的语言,不单用起来爽,学起来也快

你要追求语言简单,直接用脚本最简单,不支持寻址和指针,没有值类型的Java本质上就比一些脚本语言多了个接口和继承的语法。而且非要装模做样的区分继承类和实现接口除了恶心人没有什么太大的意义。

要追求极致简单直接Brainfuck就好了,哪有什么语法元素少就学起来快的理论……

C语言语法元素更少,除了比Java多个union、宏和指针还有啥?



有人反复强调无缝,而事实就是,无缝调用是最廉价的玩意儿。对于JVM和CLR这种平台,语言无缝调用非常廉价,.NET和Java都支持Python甚至JS无缝调用,.NET甚至给出了CLS规范来降低语言互操作性的障碍。我都不说这些拓展,就说亲儿子F#又如何呢

如果你想知道这些语言为什么火不起来,那很简单:语言是和库绑定的。但是如果你们只是想证明我自己能把两种语言能混用的很好,这说明这个答案你们一个字都没看进去



最后说个残酷的真相吧,因为99%的程序员写的代码压根儿就不会被别人调用,所以也没人关心他们用什么语言写的,而他们只会找实现这个功能最广泛能抄到的代码……哦,这就是Java火的秘密,还有PHP……



最后总结一下吧:

1、基于JVM的所有语言都能互相所谓的无缝调用,这其实是非常廉价的特性。

2、如果对于程序员来说,语言真的那么重要,能够大幅的提升生产力,直接用C#就好了,何必用Kotlin呢?毕竟大部分特性就是从C#抄的,别说什么糖太多,什么取舍。隔壁的Java不用Kotlin的时候一个说法。

3、所以,Kotlin火不起来的原因很大程度上和语言一毛钱关系没有,而在于社群和库。这也是为什么基于JVM除Java外的其他语言和基于CLR的除C#外的其他语言火不起来一回事儿。因为库没有针对性的优化。当年C#为了支持LINQ,硬生生的搞出扩展方法是为何?就是因为库上面不支持Where、Select方法,你支持lambda,支持LINQ Expression又如何?Java作为学生也不得不抄接口默认实现来玩,套路都一样。说白了如果List不提供stream方法,你非要写成 new Stream( list )看起来就难受多了……

所以语言和库是个相辅相成的事情,这一点上C#尤为突出,你库不升级,语言是无法升级的。比如说C#2依赖于System.Collection.Generics,C#3依赖于Enumerable扩展方法,C#4依赖于DLR,C#5依赖于Task的扩展,C#6依赖于FormattableString,C#7依赖于ValueTuple……

4、最后绝大多数程序员就是个CP的手艺活儿,语言优雅与否其实压根儿不重要,有得抄,有得用才是最重要的。Python在机器学习大火是因为Python适合写机器学习的算法么?显然不是,是因为大部分机器学习的库提供了Python接入,网上大把的Python代码可以去抄……恶意的揣度一下,如果当年阴差阳错用的是Lua或者JavaScript做胶合语言……

类似的话题

  • 回答
    说 Kotlin 不火了,我觉得有点太绝对了。但如果要说它不再像刚出来那会儿那样“炸裂式”地吸引所有人目光,或者在某些领域没有达到预期的统治地位,那倒是可以聊聊。首先,我们得承认 Kotlin 的出现确实是带来了新鲜感。在 Java 统治的 Android 开发圈,它的各种优点简直是为开发者量身定做.............
  • 回答
    好的,我们来聊聊 Kotlin 相较于 Java 在 Android 开发上的那些“真香”之处。告别那些冰冷的“AI味”,咱们就用老百姓都能听懂的大白话,一条一条地剖析。1. 更简洁的代码,更少的“废话”这是 Kotlin 最直观也最让人爱不释手的优点。Java 程序员心里都清楚,写一段简单的逻辑,.............
  • 回答
    .......
  • 回答
    王垠关于Kotlin和Checked Exception的文章,读下来还是挺有意思的。他在这篇文章里,与其说是分析Kotlin如何处理Checked Exception,不如说是借这个话题,表达了他自己对于编程语言设计哲学的一些看法,特别是他对Java在Checked Exception上的那一套颇.............
  • 回答
    没问题,咱们就来聊聊这些语言里的“协程”这玩意儿,它们听起来都挺炫酷,但骨子里还是有点小差别的。我尽量讲得深入点,把那些AI味儿的东西都去掉,让你一看就明白。 协程这玩意儿,为啥大家都爱?先别急着说区别,咱们先得明白为啥协程这么受欢迎。你想象一下,以前多线程编程那叫一个热闹,创建线程、切换上下文、同.............
  • 回答
    Robert C. Martin(Uncle Bob)眼中的 Swift 和 Kotlin:一场基于“清洁代码”理念的审视Robert C. Martin,这位被业界尊称为“Uncle Bob”的软件工程大师,以其著作《Clean Code: A Handbook of Agile Software.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有