×

kotlin android

kotlin android(安卓开发用kotlin好,还是java好,以后得趋势是怎么样的)

admin admin 发表于2023-09-20 07:59:17 浏览38 评论0

抢沙发发表评论

本文目录

安卓开发用kotlin好,还是java好,以后得趋势是怎么样的

当然目前来说,Java依然是Android的主流开发语言,但是这两年因为oracle公司各种花样作死,Java的开源协议一直都有很大的问题,这让Google在面对oracle公司的各种“找麻烦”时,非常难受。

Java优势不明显,但是缺陷越来越突出

我一直认为,JVM比Java要牛!当然Java本身也还是很强大的,当年Java出来因为跨平台的原则,逐渐从主流编程语言中杀出重围,几乎完全的面向对象、加上开源社区开发者源源不断的贡献,自然是有很大的优势。

但是随着时间的推移,Java跨平台的优势已经不在明显,但是代码臃肿、运行资源比较大等特点却越来越突出,与此同时Scala/Kotlin等基于JVM的编程语言开始出现。直到Java 8才支持stream操作,关键是语法还非常糟糕,Java已经不再是真正意义上的活跃语言,因为太成熟了,大家已经不想再做过多的改变了。

Kotlin优势很多,但是目前来说还没办法替代Java存在

在扩展函数、空安全、智能类型转换、字符串模板、主构造函数、操作符重载、分离用于只读和可变集合的接口等等这些问题,kotlin有但是Java却没有,没办法很好的解决。

kotlin语言代码可以说变得非常简洁了,并且完全兼容Java,语法糖自然不用多说,更重要的是对于有些想要尝试函数式编程的小伙伴,kotlin的函数式编程体验已经非常好了,虽然跟Lisp,haskell这种以函数式编程为核心的编程语言来说还有很大的差距,但体验已经算是不错的了。

Kotlin是Jetbrains打造,而Android studio正是基于该公司的IntelliJ IDEA,这本质上已经是一个完整开发者生态的雏形,未来假如Google收购Jetbrains,关键是这门语言还确实能够提高Android的开发效率,这是Google真的想要去改变的。Google已经将kotlin作为Android的第一类开发语言,亲爹支持,加上自身的优势,相信kotlin一定会成为一个优秀的工业级开发语言。

新手是否可以跳过Java直接学习Kotlin

一、首先你先明确自己用这门语言开发什么

1.如果你要做后端开发,必选java,大厂都在用,工作好找。java在写后台web方面有非常完善的解决方案,数十年的积累,写商业服务端技术很成熟,大公司都在用,比如淘宝的后端就是java写的,目前有非常多的成熟框架,Spring全家桶是Java开发web的成熟框架,从单体应用到微服务架构,Spring boot,Spring cloud等都有着非常成熟的开发套路

2.如果你做安卓app开发,不考虑以后写后端开发,必选kotlin。kotlin是jetbrains公司设计的语言,这个公司本身就是ide科技公司,Android studio是这个公司开发的,天然完美支持kotlin所有特性,完全支持安卓app开发,虽然android完全支持Java7,但android只支持Java8的部分特性,如果你想要支持编程语言的全部功能,你可以放心选用kotlin,如果计划未来构建多个app,kotlin是一个完美的选择,Java在语法方面非常啰嗦,kotlin简洁,null是非常常见的bug,kotlin处理null值非常简洁灵活,Java就很麻烦

二、总结

Java非常适合开发大型商业后端web服务,微服务架构,spring全家桶,技术生态非常繁荣,如果做后端开发,那就选择Java;如果做安卓app开发就选择kotlin,这是android studio的亲儿子,天然支持所有语言特性。如果您精力旺盛,既也想要涉猎后端开发,也想要涉猎安卓app开发,做全栈工程师,Java和kotlin都学吧

kotlin和flutter哪个更值得深究学习

首先我们讲下它们的区别,kotlin是一种语言,flutter是基于dart的framework,两者不好相提并论。鉴于kotlin是android的官方语言,通常是android开发者关注比较多(现在也有后端在用),所以我觉得题主真正想问的是android和flutter哪个更值得学吧。如果问的是这个,我给的建议是先把android熟练掌握后,再研究flutter。

不过回到题主的问题,虽然kotlin和flutter不好相提并论,但我觉得他俩还是有共同点的。kotlin是在java之上做的加法,而java是跨平台的,flutter就不用说了,跨终端的ui框架,所以,这两者的共同点是解决如何抹平多平台的开发差异,只是一个是语言层面,一个是framework层面。从这个点去看待,可以发现蛮多有意思的话题的。

如果对语言感兴趣,那就深入研究研究kotlin,为何java好好的,还要有kotlin,它比java好在哪,解决了哪些问题,从语言设计的角度,我觉得kotlin有很多地方值得学习和思考。如果对框架感兴趣,可以多花心思在flutter上,切入点也和前面提到的类似,看看现有的跨端框架有哪些,各自的优点和局限性是哪些,flutter推出后引发的这波热度说明flutter解决了跨端的一些痛点,就现状而言,跨端的痛点是什么,flutter如何解决的,它为啥选择这些的方案,这些是值得去学习的。

如何评价Kotlin语言

谷歌主要是为了摆脱Java,摆脱Orical,才祭出Kotlin。

另一方面是像Apple看齐,Apple推出Swift语言将来替换掉OC。

Kotlin本身是比Java好,但对于开发者意味着学习成本上升。

另外谷歌新系统Fuchsia,未来也会取代Android,Kotlin不一定会是唯一开发语言。

为什么Android开发使用Java而不是C++

文/小伊评科技


结论:如果谷歌用C++作为安卓开发语言,安卓早就挂了。

安卓系统卡顿的根源估计很多人都比较清楚了,最根本最核心的原因就是因为其应用层采用的是Java语言。因为Java是一个跨平台的语言,为了保证跨平台的兼容性,它内置的有Java虚拟机,这个虚拟机的作用就是把应用层的指令解释为机器语言,然后推动硬件去处理,使用者只需要根据平台的不同配置相应的JDK即可,这也就保证了Java的跨平台特性。

但是正所谓有得必有失,也正是由于虚拟机的存在,用户的指令无法直接经过编译后成为机器码,还需要经过虚拟机的解释才可以,这也就导致了其执行效率是比较低的。

而反观C++,作为一个偏底层的开发语言,他的指令经过编译后可以直接转化为机器码和硬件进行交互,执行效率就要高很多了。

举个形象一点的例子,方便大家理解:

使用Java语言,就像是两个语言不互通的人中间隔着一个翻译官在交流,哪怕这个翻译官的水平再高,翻译的速度再快,他也不可能做到实时的翻译,总需要一个处理的过程,交流成本就比较高,效率也比较低。而采用C++语言则就像两个语言相通的人在对话,一个人说的话可以直接被另外一个人听懂,交流效率大大提升。

所以,虽然在安卓5.0时代,谷歌虽然给安卓系统做了一次大手术,更换了一个全新的效率更高的ART虚拟机,但是很可惜,就像上文所举得例子那样,谷歌只是换了一个翻译能力更强的翻译官而已,并没有解决最本质的问题。

看到这,肯定会有人要问了,谷歌为什么要选择Java而不去选择执行效率更高的C++呢?难道谷歌的工程师不知道Java存在执行效率低的问题么?

当然不是,谷歌这么做也是迫不得已。


谷歌的算盘。

在2005年,谷歌将安卓团队一行人收入囊中之后(也就是安卓之父安迪·鲁宾团队),本来实际上也没有打算完全开源,而是闭门造车了很长时间,不过始终没有什么大的进展。

然而在2007年1月,苹果公司率先发布了人类历史上第一款具备象征意义的新一代移动操作系统——iPhone runs OS X(也就是后来的IOS),并且还基于这个系统发布了第一代iPhone。

这个时候,谷歌也嗅到了移动互联网时代即将来临的气息,但是谷歌同时也意识到,单靠自己是不足以和苹果对抗的,因为谷歌本身只是一个互联网企业并不具备像苹果那么强大的硬件基因(苹果本身就是一家硬件公司),他不具备制造硬件设备并且大规模向外推广的能力(没有渠道)。于是,谷歌想了一个方法——“开源共建”,把已经开发的基本可用的安卓系统完全开源,供其他有兴趣进入智能手机市场的企业进行二次开发。

这个操作也吸引了世界上绝大多数除了苹果之外的硬件厂商,毕竟这可是当时第一款完全开源的系统,而且谷歌还邀请了众多业界大拿站台(开放手机联盟)。

系统有了,那么怎么才能吸引开发者去开发安卓应用呢?谷歌的办法很简单——“尽可能地降低开发安卓应用的门槛”,于是,谷歌最终选择了Java作为安卓应用层的开发语言,至于原因主要有两个:

原因一:Java的从业者众多是一片沃土。

Java由于其具备良好的跨平台特性,使得其一直以来都是开发行业最炙手可热的一门语言之一,如下图所示,这是目前开发语言的热度排行榜,Java毫无疑问的排在第一位。

开发人数众多,这也就意味着很多原本做Java的开发者可以几乎毫不费力地转行成为安卓应用的开发者,原本只能开发一些后台程序的Java工程师,突然发现自己也可以利用自己的能力面向C端开发应用程序挣钱了,这确实是一个很好的出路,因为软件工程师本身就是一个对新平台,新事物保持比较高关注度的群体。就这样,安卓的应用体系就在这样的环境下迅速发扬光大。

而反观C++,C++是一门基于C语言构建而来的语言,而C语言是一门非常古老的语言,更偏向于底层,其整体的开发难度较高,从业者相对比较少,不如Java那么具备活力。


原因二:Java的开发效率极高,入手难度低。

Java是一个面向数据结构的语言,能操作的都是设计好的数据结构,每一个都是安全的,在内存和程序员之间,还隔着一个JVM虚拟机,程序员可以肆意地发挥,容错率比较高,对于程序员素质的要求也比较低,所以大家可以看到,很多Java工程师只需要培训两三个月就能自己写东西了,而且就算编程思想再怎么差也无所谓,Java本身就是一个没那么低,上线也没那么高的语言。

而C++不一样,C++是一个面向内存的编程,它就要求开发者拥有比较扎实的计算机基础,并且还需要拥有比较强大的逻辑设计能力,需要考虑到方方面面的细节,如果一个C++工程师的能力太差,他所编出的程序的执行效率还不一定比用Java开发出得更好,这也就在一定程度上限制了C++这门语言的发展,毕竟想要学好C++,上两三个月培训班可是不行的,所以C++实际上是一个下线非常低,上线非常高的开发语言,上手难度更低。

另外,Java由于编译器的存在,其开发效率更高,开发者无需关注内存布局,对齐,字节序等细节,只需要写好自己的逻辑代码即可,其他的都可以交给虚拟机来执行,在开发速度上也要更快,而C++的开发效率则比较慢。

而互联网时代,最重要的就是速度。


end 希望可以帮到你

做安卓两年了,现在想学kotlin或flutter,两种语言哪个才是未来趋势

个人,感觉安卓还是要继续精进下,因为本人不是相关专业人士,无法进行评论,到时建议可以先从一种语言入手做好工作,然后在尝试下其他语言,了解其与现在的有什么差别,是否更有优势,是否越来越流行,代表一种趋势!

Android开发会被kotlin取代吗

可以肯定地说,未来Android开发的主要语言是Kotlin。因为谷歌在19年5月份举行的I/O大会上宣布,Kotlin编程语言现在是Android应用程序开发人员的首选语言。虽然目前主流Android开发语言仍然是Java,不过新版Android系统源码中已大量使用了Kotlin语言编写,著名的网络框架OkHttp也已经用Kotlin重写了一遍,发布了OkHttp4.0版本。而且Kotlin的使用范围并不局限在Android开发领域,还包括服务器编程和前端开发等方面。作为Android开发者,现在是时候使用Kotlin了。仅仅掌握Java是不够的,应该赶上技术发展的趋势,相信Kotlin的未来会越来越好!

Android开发的饭碗保住了!谷歌胜,甲骨文败,Kotlin还用学吗

當然要學。Kaitlin可以跟 Java 相容、混編。Kotlin 的語法優雅多了。很多事,用 Kotlin 寫更為簡潔。

有基础入门安卓,kotlin还是java

作为一名至今仍处于编码阶段的一线开发者,下面提出自己的见解,抛砖引玉,欢迎大家留言讨论。


先说说结论,当然首选Java。

首先从友好型来说,Java我们可以在网上找到大量的优秀文档、源码等学习资料。

其次,再来看看招聘需求,基本招聘上Android开发的,100%你得懂点Java吧;可是Kotlin并不是必须的,只能作为你得加分项。下面是在某勾招聘网站的一项Android开发职位描述。

Kotlin 是什么?是“更好的 Java”。只有用惯了Java而又想继续改进工作效率的人,才会真正去“用”Kotlin。在你真正掌握Java、掌握面向对象思想后,再去学习Kotlin,将会是手到擒来。

学是为了用,如果只是为了写“Hello World”那就无所谓了,随便哪个都可。

Android App开发现在学Kotlin好还是Flutter好

巧合的是,两者都跟Google有关系,挺有意思的。

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的 Swift。2017年 Google 宣布Kotlin 成为 Android 官方开发语言。这样一来,Kotlin 就成了开发Android的主流语言,当然作为运行在Java虚拟机上的语言,Kotlin 也可以像 Java 一样作为后台开发语言。Kotlin 相比 Java ,是属于更现代化的语言,语法简洁,开发效率高,且同样是强类型语言。

再来说 Flutter,正常来说,Flutter 不能算是一门语言,而是 Goolge 推出的开源移动UI框架,其开发语言是 Dart,核心优势是:一端开发,多端运行,且程序性能接近原生应用体验。即开发一套代码可以在iOS和Android端运行。可以想象,一名程序员,开发一套程序可以运行在多端,也就是说一个人同时干了几个人的活!优势当然是不言而喻。

如果题主的开发工作主要集中在开发 Android 的话,我个人还是建议先把官方推荐的 Kotlint 用起来,因为单纯针对 Android 这一个方向,使用官方语言是具备绝对的优势的。为什么这么说?如果是大公司开发应用,更倾向于程序的稳定、可靠和执行效率,以及程序本身尽可能不会限制到需求的规划。所以大公司基本不会为了节省预算,而去考虑以及其节省成本的方式,使用不足够成熟,且周边生态不够全的框架(Flutter)。

但是,也不是说 Flutter 就不行,它的优势在小公司也是明显的,因为一个人可以同时开发多端应用程序,这对小公司的老板是很渴望的一件事。首先,可以少招一点人,节省成本,也可以更快速的将产品推到市场上验证。

最后,还是要看题主的选择,我比较建议的方式是, Kotlin作为日常主要开发语言,抽时间玩玩 Flutter,有需求的时候可以自由切换。