其实很多朋友关注我的公众号都已经有挺久了, 一两年以上的应该并不在少数. 跟着我的公众号也阅读了不下百余篇技术文章, Android 技术的方方面面都有涉猎到.
而随着时间的推移, 慢慢地大家都逐渐步入到了中级程序员的等级, 同时也有越来越多的人感觉到了焦虑, 因为不学习就意味着原地踏步, 虽然目前自己的技术水平可能已经挺不错了, 可还是不敢长时间停留, 逆水行舟中, 不进则退.
因此, 几乎每一天都会不断地有朋友反反复复地问我这同一个问题:"基础已经学完了, 想进一步提升, 该如何学习?" 我也基本能理解大家的心情.
对于这个问题, 我真的很想找到一个标准答案, 然后复制粘贴给每一个提问的人, 但是这个问题却永远没有一个标准答案. 因为技术的领域实在是太广阔了, 世界上没有任何一个人能把所有的技术全部都学会, 想进阶首先你要认准一个方向才行, 而不是盲目地焦虑该如何进一步提升自己.
那么进阶的方向有哪些呢? 这个就太多了, 不同的项目侧重的技术点也不一样. 比如 IM 软件就需要即时通讯技术, 视频软件就需要视频编解码技术, 游戏就需要引擎技术. 即使是同一个项目, 每个人负责的工作方向也会不一样, 有些人负责架构搭建, 有些人负责网络通信, 有些人负责 UI 实现. 因此, 这些都是进阶的方向, 学习自定义 View 也叫进阶, 学习设计模式也叫进阶.
所以说对于这个问题我真的无法给出一个标准答案, 但是今天我准备给大家推荐的一个非常好的进阶方向, 就是 Java 虚拟机, 同时这也是我下一阶段的学习目标.
Java 虚拟机重要吗? 重要. 我们平时关注的内容大多是在语言层面上的, 至于底层到底是如何运行的则很少有人关注. 然而, 不管是从事 Java 也好, Android 也好, 工作到一定层次之后遇到的一些问题确实是需要了解 Java 虚拟机才能解决的.
比如说内存泄漏, 这是一个很常见又很让人苦恼的问题. 之所以这个问题难查, 还是因为大多数人对 Java 虚拟机底层的内存管理机制并不熟悉. 而如果我们深入地了解了 Java 虚拟机的垃圾收集器和内存分配策略, 就可以更加得心应手地解决内存泄漏的问题.
再比如说现在 Android 领域中比较火的热修复, 插件化等技术, 都大量使用到了 Java 虚拟机中的类加载机制, 从事这部分技术研发的人, 如果对 Java 虚拟机技术不熟悉的话, 那肯定是寸步难行的.
而且还有很重要的一点, Java 虚拟机技术是不用担心过时的, 因为不管未来 Android 程序是用 Java 开发也好, Kotlin 开发也好, 底层的运行环境都是依赖于 Java 虚拟机的. 当然在 Android 上是叫 ART, 但本质上仍然是 Java 虚拟机.
来源: http://virtual.51cto.com/art/201807/579691.htm