从事安卓开发工作,要不要转java后台?
实话说,做后台你所能掌握的信息比搞app时有价值的多,而且后者是直接面向用户的,你的工作成果将第一时间经受用户的考验,换句话说,前端开发者很多时候是替罪羊,不论其他部门给你挖下多大的坑,用户只会认为是你的过失,加班最多的也常是搞前端和app的;后台则不然,虽然这需要你有着很好的功底,但是在做出成品之后,它的维护周期会比较长,一般不会进行较大的变动,并且用户对它的变动也没有那么敏感。另外,做后台的话你需要兼顾很多方面的因素,这样你对项目的整体认识会提升一个档次。
所以说,如果你想拥有更深入的发展,接近项目核心,转后台是一个不错的选择,搞后台是一个难精的工作,由于很多企业对其重要性的认识不足,以为能用就行,使得出色的后端工程师在国内仍然较为稀缺。你已经做过app开发,要是再能在后台上积累一些经验,以后就容易往全栈或是架构师的方向发展,祝你好运。
如果从安卓转后端,这个转变比较大的,等于重新变更技术路径,不亚于从.net平台转到java平台,主要安卓开发基本属于前端,而Java开发的后台技术部分现在深厚的技术栈,不错的技术背景给后来者设置了不少的障碍,我建议与其转向后台,不如深入安卓的体系结构,做些深入的学习,其后在学习js的前端多下些功夫,或在linux上花些功夫,现在linux在商业领域尤其平板一块需求还是很旺盛的,提升一下前端设计的理论和系统体系的深度,更有竞争力,java后台开发热闹的很,但是人也多啊。赤裸裸的红海,高薪技能要求高,工作竞争大,压力大,有后台崩了跳楼的,你看有前端闪退跳楼吗?只要前端永远都有拿出一流的设计开发产品,那就很有竞争力。
即便将来安卓平台失宠,也可以用linux系统开发技能或者js开发技能临时混口饭吃,都是问题不大的。
目前安卓开发可以采用两种开发语言,一个是Java,另一个是kotlin,目前大部分Android开发人员都在采用Java语言,但是从Google的态度来看,也许未来kotlin的发展前景会不错,原因自然离不开与Oracle喋喋不休的官司。
对于安卓程序员来说,相比于转向Java后端开发来说,转向前端开发也许更适合,原因有以下几点:
第一:安卓开发本质上也是前端开发。目前不少团队已经把安卓程序员和iOS程序员并入到前端团队,从反馈的效果来看还是不错的。安卓程序员与前端程序员在工作方式上有很多相同点,学习前端知识能进一步丰富自身的知识结构,同时会明显提升自己的职场竞争力。
第二:安卓开发的知识结构可以向前端开发迁移。前端开发需要学习Html5、CSS和JavaScript,其中JavaScript是学习的重点,而安卓程序员自身的编程经验是可以向JavaScript迁移的,这会明显降低学习的时间成本。目前在安卓开发的过程中也会涉及到一些前端的开发内容,所以这个转换并不会有较大的不适。
第三:前端开发前景不错。目前随着node.js的应用,JavaScript正在从传统的前端走向后端,未来JavaScript程序员完全可以做全栈程序员。另外,JavaScript在嵌入式领域也有广泛的使用,所以前端开发未来的发展空间还是非常广阔的。
其实对于安卓程序员来说,转向后端开发也是一个选择,但是转向后端开发需要具备一定的基础,否则很难在后端开发岗位上有所突破。如果想在后端开发的道路上走的更远,一方面要具备扎实的数学基础,另一方面要系统的学习一下操作系统体系结构,这些都是后端程序员必须掌握的内容。
由于Oracle对于Java语言设置了清晰的商业化路线,所以未来Java的发展现在看来并不十分明朗,毕竟Java语言经过了多次版本迭代,语言自身也比较重,这也是为什么在大数据领域,Python正在边缘化Java的原因。
如果要转后端,也许Go是一个不错的选择。
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。
欢迎关注作者,欢迎咨询计算机相关问题。
安卓开发用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好用很多
还没有评论,来说两句吧...