Kotlin会取代java吗?
的有关信息介绍如下:比较难,可能性非常低。
swift能够取代objc,是因为objc除了搞苹果开发以外,几乎不用于别的场合,而且并没有跟苹果一个量级的公司为了保障objc的份额而跟苹果对着干。那么,有了swift这样的全面替代之后,就基本能够全面替代,无法逆转。
Kotlin的问题有两个,一方面,只有Google绝对希望让它替代Java,但能替代的只有Android开发这一个场合。其他场合的Java依然顽强生存。二方面,Kotlin替代Java明显违背了Oracle的利益,所以Oracle一定会尽力阻止这件事情的发生。
所以最终,Kotlin是否能够替代掉,还是看Google跟Oracle的较量角逐。除非Google把Oracle收购,否则大概还是很难让Java被替代。
Java不断升级,不断增加新特性,本质上就是Oracle面对Kotlin的竞争做出的回应,而只要Oracle还在,那么Java就很难被Kotlin替代。
不会的
不要忘了,Kotlin 也是基于Java生态的
Java 其实已经不简单是一个语言了,它是JVM、字节码规范、Java语言规范等等一些列公开的“规范”,同时围绕着这一系列的规范组成的强大的生态圈,这个生态圈里面处处都是Java的影子,它不是一个编程语言可以取代的。
取代不了,大量的开源jar都是java的,你学了kotlin还要学java,学两种更难了。
不用这些jar包,开始相当于重头再来,成本非常高。用这些jar包要看他们的源码,实例什么的,还是要学java。
除非kotlin重新开发一个虚拟机并超过java的jre,否则难,大量的历史代码都是建立在Java上,有大量的历史代码需要维护,java几十年的积累不是白积累的。
java刚出来时说要取代c++,结果现在2020年了,c++还是活得好好的,c++累积的大量代码同样不是java能解决的。
现在每出一种新语言,新语言越来越多,历史问题越来越多,以后每个程序员都需要学习好几种开发语言,才能胜任工作,否则一碰了历史代码就不认识了。
搞n多新语言不见得是好事,很多只是语法糖,编译糖,并无实质性创新,未来还是前几种语言垄断。
除非那天硅基芯片计算机淘汰了,新的语言才会有很大发展,否则再过10年,语言排行榜上还是那么些语言,或只是新增了些语言,而旧的语言很难被淘汰,因为有大量的历史软件需要维护。
不,Java不会被取代的,因为它是许多应用程序的主要开源语言。有庞大的用户群和代码库。
Kotlin编译为在JVM上运行的字节码;它取决于Java类库。它们的互操作性意味着Java不会被取代。此外,Google I / O的公告表明Kotlin正在被添加到Android生态系统中,而不是取代Java。
我更想有体系的来审视这个问题。
自Kotlin发行以来,Java社区的人们一直担心Java将来会过时。但是,这种新的编程语言到底是什么?
Kotlin是在Java虚拟机(JVM)上运行的静态类型编程语言。它的开发始于2010年的JetBrains,但是直到2016年,才发布了第一个稳定版本(Kotlin v1.0)。
到Kotlin v1.0发行时,Kotlin在Android开发人员社区中迅速发展起来,其使用的插件已用于大多数IDE。
Google宣布Kotlin是Android开发的官方支持语言之前,Java是开发Android应用程序的流行语言。
当JetBrains决定开发Kotlin时,他们认为大多数编程语言都没有他们想要的功能。但是,JetBrains的负责人Dmitry Jemerov表示Scala接近但编译速度较慢。
Kotlin旨在像Java一样快地进行编译,但是比Java具有更简洁,更实用的语法。就像Java以印度尼西亚的岛屿命名一样,Kotlin也以圣彼得堡附近的Kotlin岛命名。JetBrains的团队希望Kotlin将推动其IntelliJ IDEA的销售和增长。
在2016年首次稳定发布Kotlin v1.0之后,在2017年11月推出了Kotlin v1.2。添加了诸如在JVM和JavaScript之间共享代码等功能。Kotlin旨在成为一种工业级的面向对象的语言,其语法比Java更好,同时仍可与Java代码完全互操作。这意味着您可以在Java代码中编写Kotlin代码-允许应用程序逐渐从Java迁移到Kotlin。
确实,由于受到Google的支持,Kotlin的发展速度很快。并且具有Java简洁的语法。但是,Java已经存在了20多年了,它经得起时间的考验。
Java是一种通用编程语言,它不仅限于机器应用程序。作为一种平台无关的语言,它可以在任何硬件平台或操作系统上运行。Java的多功能性使其可用于开发服务器端应用程序,桌面应用程序,使用Java applet的浏览器应用程序以及嵌入式移动应用程序。
根据编程语言的受欢迎程度排名的TIOBE指数,Java自2011年以来一直位居榜首。
Java已经存在了很长时间,它已经在编程的所有领域中得到了应用。有众多的代码库和框架针对后端,前端,移动和桌面应用程序的任何编码方案。此外,与Kotlin相比,大量的开发人员社区将帮助你在编码或学习Java时进行导航。Java可以在所有设备上运行:手机,Windows,Mac,Linux和电视。
Java的Hello World
Kotlin的Hello World
在Java中创建Android对象(Android应用的一个场景)
在Kotlin中创建Android对象(Android应用的一个场景)
Java是学习面向对象编程概念的一种语言。Kotlin具有类似的OOP概念,但有所改进。初学者应该学哪种语言,存在争议,因此我将提出一些意见:
Google正在推动Kotlin进行Android开发。由于Kotlin语法简短,已经熟悉Java的开发人员爱上了Kotlin,实际上鼓励了初学者从Kotlin开始。但是,我宁愿鼓励初学者从Java开始。
由于目前为止Kotlin的学习材料不足,因此对于尝试学习Kotlin的初学者来说,这确实令人沮丧。即使像Android Developer网站上的那些教程一样,仍然会将Kotlin示例与Java进行了比较,以帮助阐明这一点。因此,如果没有Java知识,那将会造成混乱。
Kotlin开发人员的工作岗位不如Java开发人员多,因为它仍然是一种不断增长的语言。最后,一旦您了解了Java,将Kotlin添加到您的技能中将非常容易。
Kotlin会取代java吗?目前看来还不会。
关于Kotlin正在取代Java的观点,我认为不会成为现实。Kotlin编译是在JVM之上执行的字节码,因此Java是运行Kotlin所必需的。
的确,得益于Google和JetBrains的支持,将Kotlin用于Android开发已获得了极大的普及。它与Java的互操作性使其成为现有Java开发人员的最佳选择。
像任何编程语言一样,它都有一个学习曲线,而Kotlin还不够完美。好处是,可以在一个项目中轻松使用Java或Kotlin的代码库。
其简洁的语法避免了Java之类的样板代码,因此减少了将要编写的代码量,这只能使其成为任何Android开发人员都值得学习的语言。
服务端开发语言从Java改成Kotlin快3年了,基本不写Java了,框架还是Spring那一套。能感觉到Spring对Kotlin支持越来越好了。从我公司这个个例来说,算取代了吧
多吃点花生别尽吃菜啊。
既然可以共存,何苦非要谁代替谁。
代替java?
不急flile -> new -> project -> java level ->8
在2020的今天依旧顺手
现在看起来,可能性非常之小,接近不可能了
为什么呢
因为最早kotlin出来,算是弥补了java的一些空白和空缺,在当时
比如coroutine,java当时没有loom
比如data class,java当时没有record
比如when,java当时的switch没有增强
诸如此类,还挺多的,还有比如"""
但是呢,java最近的版本,基本上这些都给加上去了,不仅加上去了,而且还充分考虑了kotlin的使用场景,做了一定程度上的改良,java也并非全盘吸收kotlin的做法,认真看,还是能看出不少差异的
只是随着java版本的升级,大部分特性都出现在了java上,java就这点特别凶残,就它更新得很慢,以前更夸张,几年才一个版本,现在快一点,一年两个版本,但是真正的lts,也只保持三年一个
所以当java做完之后,这事就结束了,就你能做又怎样嘛?过几年java也有了,那我找会java的人来做不就好了?你会什么关我屁事,资本家和顾客只关心我们做了什么出来,至于怎么做,没有人在乎,资本家关心的是钱,成本是多少,顾客关心的是,我能用什么东西,至于怎么实现,那是工具人的事
那还有剩下的特性呢?
其实剩下的不重要,无所谓,如果真的重要的话,java肯定有项目在做
比如aot,java用了八年时间,纠集了全球十几所大学,搞出了graal
比如gui,你要aot之后才能发布到app store上去嘛,java用了两年时间,把javafx给aot掉了,awt和swing现在还不行,swing依赖awt,awt做不了native image,swing也不行
所以当你把这些特性,尤其是java还没有的特性,都给罗列出来之后,你就能看到
哪些是已经有人在解决的,还有哪些是已经被解决的,最后还有哪些是还没解决的
最后来说一下还没有被解决的
比如顶层函数,java可能永远都不会加上这个东西
比如扩展函数,java估计也不太可能加上这个东西
还有空安全,null safety
那这几个,其实都是客户端相关的,如果你真的那么在乎,那你可以考虑dart/flutter,swift(ui),这两个语言这些都有,而且谷歌和苹果的主力在做这两个东西
这些东西看多了就知道了,都是互相抄
所以为什么kt不会取代java,因为java过一段时间也有了,那这个时候,kt的重要性就会变得弱起来,对于多数现有代码而言,升级java,比换成kt去写,是要简单很多的
当然如果你实在是等不及,那你可以考虑用kt,一般这种时候我们也会选择跟java兼容的方式,不管是graal还是vert.x,我们都会保留有将来迁移回java的选项,而非全盘kt化
最后说个笑话,女装裙里前一段看那些公众号,他们就说,又在说那几个东西,kotlin三大吹,都多少年了,还在说这些东西?烦不烦啊?
三大吹是:coroutine,extension和data class
其中两个java正在做,data class应该16就会正式下发record,coroutine这个自己去用的概率并不大,不管是安卓还是vert.x,都是用包装好的await,而非直接coroutine scope开始实现,那安卓你可以选择flutter/dart,dart连extension都有,vert.x等java实现的工具将来可以等loom
这年头,可以选的东西太多了,做一个简单的软件,并不是什么非常困难的事
我现在看的一般都是,诶,这个东西用java怎么做,如果java能做,我就用java做
因为随便找一所大学,我都能招到学java和教java的人,kt就不一定了,教的人都不太多,培训机构又不靠谱,都是面向安卓的,所以最终还是java吧,虽然有些时候我们还是会用kt,但是效果相比之下,比较有限,java正在逐步优化和改进,而其他语言能做的,已经不太多
甚至有些东西,连去做的人都没有
就像很多脚本,用脚本写app,是一个很有意思的需求对吧?但是有什么人在做?
没有
基本上都是一堆培训机构在说,只是在说,而不是在做,研究机构压根没人搭理,所以这种事再过十年,也还是那样
并不是有需求就一定会被满足的
不信走着瞧
java现在就很合理,商业机构用java来赚钱,然后出钱给研究机构,说,因为java这个会的人多,所以我们需要你们,解决java的一些问题,这样我们好更方便滴赚钱,然后研究机构就吭哧吭哧搞
搞出来然后全民受益
所以我们看java的时候,基本上都在看java的增强点,有谁在做,因为靠一般人去投入,那个不靠谱的,别说一般人,就是一般企业去做,我都不看好,缺乏动机,也就是国家的力量,然后动用高校等研究机构,才有点可能性,其他的都扯蛋,就是美国也一样,谷歌也是动用了斯坦福大学的力量,才搞了很多东西出来,硅谷本身的成功,跟美国政府以及高校的推动作用有很大关系
C++也没取代C啊←_←
Kotlin虽然处处针对Java
但他还是要兼容Java
Java15一个Record这不是屁颠屁颠就去支持了嘛
同时Java的语言特性不多,虽然代码量相比Kotlin更多,但是学习起来很方便
我Kotlin用了几年了,他几个用于遍历的lambda方法都记不完全…用的时候基本还得看看源码或者文档
所以我认为Kotlin目前虽然好用,但是取代Java还是不太实际
比较难,除非Kotlin有非常大的突破,至于Kotlin 和java的对比如下:
工程项目都是需要指定开发规范的。比如变量命名等。在java中,方法重载的时候会生成@Override注解,但是这并不是强制约束的。kotlin的方法采用override关键字进行了强制约束。
再比如TODO。java中的TODO是以注释的形式存在,即使没有实现TODO处的代码,也没什么运行时问题。kotlin的TODO形式如下:
kotlin TODO的实现
可以看到运行时会抛出异常。
思考:这里为什么不在编译期抛出异常呢?
java中虽然有@Nullable @NotNull等注解。但是不会在编译期起作用,而是在运行期抛出异常。kotlin在声明变量的时候,可以指定变量是否为空,调用可为空对象时,需要进行空判断。
java在jvm的协助下虽然也是跨平台语言,但是不能像kotlin一样可以既可以编译成class字节码,又可以编译成js。
只有全量编译下,kotlin比java慢。增量编译下,两者几乎没有差距。
懒加载、高阶函数、协程、inline操作符、运算符重载、默认参数等。
额,短期内应该是不会!
Kotlin的大火,来源于Google的官方支持!也就是这Android应用的开发者们,响应Google的号召,来使用Kotlin开发!
就目前用Kotlin开发Android来说,是真香,空安全设计,便捷的语法,强大的语法糖,协程,Flow等,反正用了之后就不想用Java了!
对于Java后端来说,基本不会用Kotlin ,因为Java的生态太好了,虽然说Kotlin和Java可以无缝切换,但是总归是有区别的!而且后端的Java工程师,估计对学Kotlin 也没什么想法!
所以应该不会取代Java!
不可能,不说其他其他语言了,java11都没几个升级,连自己都没更新版本,还取代?怎么可能