阅读 387

开篇!不以深入研究技术的学习,都是耍流氓

福利活动

Android研习社机械工业出版社联合发起的赠书活动正在进行中,欢迎大家点击链接参与

正文

做Android开发也算是有一些日子了,但是总感觉做的业务和学的东西,都有点不痛不痒的感觉,没有机会(当然也是懒惰使然)去深入了解一些更基础,更底层的知识。

所以Android开发才会被怼:不就是画画界面嘛,有什么难的。很多时候,也确实是这样,常规的业务开发很难有深入学习基础知识的机会。

那么什么才叫深入呢?

我们古代有一句话,叫君子不器,说的是君子不会注重那些奇技淫巧的东西。个人认为,对于技术层面来说,新技术和新语言都层出不穷穷,很多人也都在说,技术发展太快了,学不过来啊。但我们自己思考思考,真的有那么多“新”的技术么?那些“新”的技术真的都有必要去追么?

拿Android开发来说,我记得好几年前就有媒体(或者是技术人自己?)在鼓吹所谓的“大前端”,js也要学,ReactNative也要懂,最近google又出了跨平台开发框架Flutter和对应的Dart语言。

其实这些技术的出现都是有缘由的,就是为了解决跨平台嘛。目前移动端的两大平台Android,IOS,由于IOS的封闭性,所以基本上,移动端都是需要Android开发和IOS开发两种岗位的。那肯能有人就在心里打个小九九,要是能一个岗位能搞定两个平台的开发,不就节省成本了么?包括ReactNative,Flutter都是为了解决这个问题而生的。就像当年的Java,也是为了解决不同CPU架构的设备都能运行一套代码,也就是著名的,「一次编写,到处运行」。

当然Java经过这么多年的发展,已经成为了主流的开发语言,基于JVM也发展出了很多其他的语言,如Groovy,Kotlin等等。Java这个技术栈是可以深挖的,第一是应用场景广,后端,前端,都可以搞定了;第二是Java语言和他的运行托管平台JVM是分离的,JVM是可以直接跟系统层交互的,关于Linux系统我就不用多说了,做Android的肯定都知道,Android就是基于Linux内核的系统。所以在Android技术栈上进行深究,一是离不开JVM(即使是使用kotlin语言进行开发,也是最终编译成Class字节码的),二是离不开Linux。

Linux系统再深入呢?

对Linux系统了解的不深,但是还是想谈一下粗鄙的理解。Linux系统最终还是要跟硬件来交互的,CPU,内存,IO设备,这些又涉及到组成原理相关的知识了。所以你看,如果在Android技术栈上进行深究,那肯定就不是画UI(当然自定义view也是很复杂的)这么简单了。

我们再回到Android开发上来,应用开发依赖的是framework层提供的相关接口和封装,于是我们才能享受到当前Android开发的便利性。但是遇到一些复杂的问题,比如性能优化,UI卡顿优化,等等,还是要深入源码(指framework源码)去研究的。

按照上面说的,所谓的「深入研究」,方向也就有了。Framework源码,Linux系统知识,JVM相关知识,计算机组成原理,当然还有网络相关知识,算法,等等。

我的博客也会以这些方向来展开探讨,希望对自己所学进行总结的同时,也能帮助其他人,在Android的道路上能走的更远。

以上,请感兴趣的朋友持续关注。