android开发最好(android开发用什么)

安卓开发用kotlin好,还是java好,以后得趋势是怎么样的当然目前来说,Java依然是Android的主流开发语言,但是这两年因为oracle公司各种花样作死,Java的开源协议一直都有很大的问题,这让Google在面对oracle公司的各种“找麻烦”时,非常难受。Java优势不明显,但是缺陷越来越突出我一直认为,JVM比Java...

安卓开发用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一定会成为一个优秀的工业级开发语言。

Android 开发现在很多语言都能实现,现在谷歌大力推广IDEA的kotlin语言来写Android无疑是最为优越的,我个人觉得使用开发语言,用kotlin更好,原因有以下几点:

1、ktx 加持:

JakeWharton 大神我想大家都熟悉,他就是butterknife作者,Android 远古巨神!他的框架非常牛逼,代码易用性极强。在他的ktx的加持下,写Android的kotlin代码多了很多属于自己的附加方法,而且这些方法都很适用,比如Java中findviewbyid 神烦,kotlin中只需要在activity fragment 甚至是dialog中去直接写xml中的命名的id即可。这样代码量可以减少到4成左右!

2、协程:

rxjava之所以很优秀,是因为整体框架底层优秀,具体我这里不再赘述,但是在kotlin中一个东西可以完败rxjava,那便是协程。什么是协程呢?可以这么理解,微线程,即在使用虚拟机极小的资源甚至是单线程条件下完成异步调度,特别基于kotlin预编译特性,能够发挥其机制的极致,这是java不可匹敌的,java没有协程一说。

3、语法精简度:

比如在写pojo类,java get set 一坨拉下来,但是在kt里面直接一个 data class Pojo(val a:String,val b:Int) 直接附有所有pojo特性。

4、扩展函数:

这是kt最为精髓的地方,kt的扩展函数能让viewholder say goodbye。因为使用它可以重写view的findviewbyID的方法,在viewadapter中,不需要viewholder进行控制,只需要使用扩展的findviewbyid的方法即可,这样又省下很多代码。

以上只是说出我在开发中常见遇到的kt优于java的东西,但是java打的apk包要比kt打的小,这点kt是没办法优化的。选择native开发,还是多学点东西比较好,kt的的确确在Android开发上要比java好用很多

以后趋势是dart+flutter。哪个语言简单,易上手,成本低,速度快,跨平台,节约开发时间,同样功能代码量少,速度流畅,就是未来的趋势,生态会慢慢完善的,需要时间的积累。

首先旗帜鲜明的表明观点:

真心没必要学Kotlin,直接Java大法好

而我觉得,要把这个问题讲清楚,可以从以下几个方面来看。

Kotlin出来多久了?

如果从2011年7月,JetBrains推出Kotlin项目来看,好像Kotlin也有些年头了,但实际上,直到2017的Google I/O 大会,Kotlin才得以 “转正”,即开始被视为安卓开发阵营的一级编程语言。

因此,就类库的丰富性和完整性而言,到目前为止,其和Java根本还不再一个量级上。但我们在生产开发中,有时候追求的,其实根本不是技术,而是快捷,能不造轮子,就不造轮子。

当然,事实上,从一开始,Kotlin就可以无缝的调用Java的相关类库,所以,可能有人会觉得,这一点不是问题,但你得反过来想,我们有多少人,真正愿意在开发中,维护那种包含不同语言和风格的项目代码?实际上,那是非常痛苦的。

大厂支持的情况

在讲了历史后,我们可以来看下大厂支持的情况,从2017年已降,除了JetBrains依然在勤力的推动着Kotlin的发展外,其实,我们很少看到一些处于开发顶部的大厂,在这方面有什么特别的动作。

特别是,作为Android顶部当仁不让的公司:Google,考虑到可能的Java版权之争,这两年在这方面的主要着力点,基本上可以看到,是放在了一种新的语言:Dart上(并对应的Flutter框架)。

这实际上是非常重要的一种态度。想想当年桌面开发时代,Delphi的兴起和衰落,靠IDE起步的公司,最终败于平台之下,基本上是一个大概率会发生的事件。

虽然,现在Google和JetBrains也仍然处于蜜月期,连官方的开发IDE:Android Studio也是基于JetBrains的IntelliJ IDEA。

但这样的关系到底有多牢靠,或者说这样的牢靠能不能足以让Google不遗余力的推广Kotlin,以取代Java,我个人并不相信

语言的特性

最后来谈谈语言的特性。Kotlin当年为什么突然的被Google等重视起来?我觉得无他,而是因为Kotlin,用他的“轻”,比对了当年Java开发之“重”,确实的,当Java开发人员第一次看到:扩展函数、模式匹配、Lamda表达式等一系列号称下一代编程语言的特性时,的确是非常之感到惊艳的。

但经过这几年的发展,可以看到,从Java7到Java8,Kotlin的大部分“轻”的特性,也已经为Java吸收,因此,当初为切换而营造的原因,现在也基本上立不住脚了。

不知道这样的回答能不能给你一定的启发。