Android 开发者的下半场

简介: 2018年,整个移动互联网进入了下半场。为什么说已经进入了下半场,谈未来,先讲历史,我们来重头开始捋一捋吧。 2005 年,Google 收购了成立不到两年的 Android 公司,经过三年多的研发,于 2008年推出了 Android 1.0 ,此时还是搭载塞班系统的诺基亚的天下,业界并不看好 Google 的 Android ,很多人认为最多一年 Google 就会放弃 Android。

2018年,整个移动互联网进入了下半场。为什么说已经进入了下半场,谈未来,先讲历史,我们来重头开始捋一捋吧。

2005 年,Google 收购了成立不到两年的 Android 公司,经过三年多的研发,于 2008年推出了 Android 1.0 ,此时还是搭载塞班系统的诺基亚的天下,业界并不看好 Google 的 Android ,很多人认为最多一年 Google 就会放弃 Android。

2009 年, Android 1.5 出世,HTC G1 和 HTC G2 大卖,此时,国内已经有一批人开始写 Android 应用开发的入门教材了,尽管现在看来是多么没含量、官方文档一字不漏翻译甚至有翻译不当的教材,但是人家的确是抓住了时机赚了一把,也感谢这些人,让英文不佳的开发者快速入门。

2010 年,Android 2.3 面市,本人也是从这个版本开始拥有了第一台 Android 手机,开始接触 Android 开发,也就是这时开始 Android 手机的市场占有开始快速提升,在美国的市场占有率达到了 30%。而这时,有一个巨头开始在崩塌,它就是那个铃声都能让人幻听的诺基亚,一代手机帝国,轰然倒下了。

2011 年中,乔布斯生前的最后一部金典的产品 iPhone 4S 面市,把业界智能手机品质推到了一个新高度,当时的 Android 手机和 iPhone 比起来,无论是在工业设计还是运行速度、无论是稳定性还是安全性,Android 都是初生的婴儿。可惜 iPhone 太贵了,在当时看来 ,手持 iPhone 是一种身份的象征,也就是这个时候,小米横空出世,让 Android 市场开启了千元机的时代,我们应该感谢小米、华为让我们大多数人快速上手智能手机。这一年,国内一大批 JavaEE 开发者开始转 Android 开发了,我就是其中的一员,此时开发手段也是比较原始的,比如网络框架,基本都是在 HttpClient 或 HttpUrlConnection 上手动封装, 大家都在干重复的活,程序员最不愿意干重复的活,后来才有了 AndroidAsyhcHttp、Volley、Ritrofit…

2012 年,Android 相序推出了 Android 3.x 和 Android 4.x ;3.x 主要用于平板设备,这个时候 Android 程序员开始认识 Fragments,一种为大屏而生的视图,如今被你我他用得很频繁;4.x 在流程度和易用性上做了几次优化,例如动画绘制二级缓冲升到三级缓冲。

到这个时候国内 Android 开发已经是火得一塌糊涂,学过 Java ,不管你有没有 Android 经验,只要你愿意从事 Android 开发就能找到待遇不错的工作;整个行业一片欣欣向荣,随便一家互联网公司,不做两个 App 都不好意思说自己是互联网公司,那些做渠道、市场的也是豪赚了一把,比如 91、豌豆荚。也酝酿出了第一批 APP ,比如当时我们手机装得最多的就是 QQ 、微信、360助手、搜狗输入法、百度地图、UC浏览器、天天动听、优化大师、墨迹天气。看到没有,大多数都是工具属性,还谈不上改变生活,还没有滴滴打车、还没有各种 O2O 应用、微信也只是单纯的聊天工具。但是大家都看到了移动互联网即将进入生活的方方面面的趋势了, 还有好多 APP 要开发,从零到一的开发一款 APP 的机会一大把, 还需要好多 Android 开发者入局干事情。

2013 年到 2014 年这两年 google 相序发布了 4.4 和 5.0,前面讲过,早期的 Android 就是初生的婴孩,安全、性能都存在问题,比如 2012 年,有人让我写程序监听别人的电话、短信,居然轻而易举地就能实现这个功能,可见安全漏洞是多么明显,然而在4.4、5.0 上就难了,在后面的 6.x、7.x 就更难了。在性能方面,我觉得 4.4 和 5.0 具有划时代的意义,4.4 开始 google 开始引入 ART 虚拟机准备代替 Davik 虚拟机, 5.0 以后,在摩尔定律的作用下, 手机硬件性能、内存也上来了, 彻底废弃了 Davik, 完全使用 ART ; 为啥 ART 之后为速度就快了?这里我简单解释一点, 了解 JVM 的应该比较好理解, Java 字节码需要通过 JVM 解释成目标 CPU 可执行的指令集, 这也是 Java 运行速度慢的原因, 后来出现了 JIT 编译, 对经常执行的热区代码做一次解释,解释成对应目标 CPU 指令集, 放到内存中, 下一次执行的时候就直接从内存中取出这部分 CUP 指令直接执行, 省去了每次都解释执行的耗时; Davik 也是有 JIT 特性的, 不过还不够好;能不能再安装的时候就提前把要解释的字节码翻译好? 内存允许的话,答案是肯定的, ART 上面就这么干的, 这种方式叫做 AOT,即提前编译。所以我们会发现 5.0 以后安装程序会比较慢, 但运行速度快了太多, 5.0 以后 Android 和 iOS 的差距越来越小了。

2013 年到 2014 这两年,移动互联网进入了新一轮的爆发式增长,真正把草莽丛生、野蛮生长演绎到了极致,记得我在《一个程序员的运气》这篇文章中讲过一个故事:一个在 2010 年底还在白石洲和我同学一起住农民房、挤公交的师兄,2014 年的时候已经是身价千万的副总了; 同一年,另一个公司的年终时候在楼下摆满了奥迪作为年终奖,它就是 UC。经过两三年的疯狂发展,生活的方方面面都可以在手机上进行了,各种 o2o 应用打得不可开交,打的不用再去马路边等着、超市到路边摊都不再需要掏现金、外卖随叫随到,移动互联网真正改变了人民的生活方式…

这个时候整个行业需要从零到一开发 APP 机会少了很多了,到 2015 年的时候很多创业公司第一步想到的不是要开发一个 APP ,而是先开一个微信公众号。而这个时候 APP 端的开发模式也慢慢在发生变化,各种动画开源库、网络开源库不说,原生开发已经相当成熟了,热更新插件化开发也初出锋芒,摩尔定律的作用下,硬件性能上来了,H5 也越来越多的分担了页面任务,Android 开发进入混合开发时代。

提高效率、解放双手是人类永恒的追求,程序员的理想就是要干到自己“没活干”。2015 年底 facebook 推出 React Native,跨平台、动态性和性能达到双平衡,我也第一时间研究并写了 demo,发现上手也快,这种 web 化的开发方式、原生化的体验一定是趋势,js 再次发光发热。2016 年插件化框架彻底成熟,没过多久,阿里的 Weex 发布,和 RN 如出一辙,Android 开发彻底进入混合时代,这个时后对端的架构能力是有要求的,你要考虑你的应用是不真的需要组件化,如果需要,又怎么把组件、业务插件、Web 容器、统跳协议等有效结合。

2007 微信小程序面市,跟着文档这个 Demo 轻而易举,站在创业者的角度,你还会花这么多成本去开发一个原生的 App 吗?而且这个时候各个领域、细分领域刮分已经完成,开发新 App 的机会真的没有多少了。 如今小程序自己形成气候,各家 App 都想仗着平台和流量做自己的航母,都要做自己的小程序,真是畸形,从统一的角度看,我还是希望快应用能成。

随着 RN、Weex、小程序等前端技术的出现,技术发展又完成了一个轮回,在摩尔定律作用下,历史是如此的相似。还记得那个曾经差点要了微软命的浏览器公司吗,你操作系统很牛逼,但是流量入口都在我这,微软也感觉到了不妙,后来才出现了 IE 浏览器,IE 浏览器出现后微软内部也开始了系统派和浏览器派两个派系旷日持久的斗争,最终系统派获胜了,不知道这是不是后来微软在新互联网时代衰败的原因!移动互联网和PC互联网的发展轨迹太像了,只不过移动互联网是螺旋上升的一个轮回,2008 年到现在,正好十年,十年一轮回。

下半场

下半场我们的战场在哪里?

区块链

2018年初,投资大亨徐小平的一张聊天截屏撼动了整个互联网圈,可谓一石激起千层浪。一时间,连卖菜大妈都在讨论区块链,各类打着区块链的牌子圈钱割韭菜的公司、创业团队如雨后春笋,直到李笑来的一段录音流出,感觉大家都被这场“革命”的资本家当傻逼使了,着实为这把大火浇了一盆水。说区块链会比曾经的互联网革命还要猛烈,我觉得有点喧宾夺主了,区块链只是互联网这个土壤上长出来的一根藤,只会在有限领域发挥很好的作用。技术上看,区块链不是什么新技术,是密码学、分布式、p2p等技术结合经济学在特定领域的应用。如果你本身在密码学、安全领域或分布式开发领域有经验,转区块链开发又有何难?换个赛道开车而已。不过据我所知的 Android 客户端开发,95% 是没有机会也没自主去从事或深入研究过这方面的技术,所以基本认定区块链不是 Android 开发的下半场,转岗搞区块链优势不大。

小程序

RN、Weex、小程序出来的时候,我都有研究过,并且能轻易上手,作为一名 Android 原生开发的我都能轻易上手,更不用说那些前端工程师了,而且现在各家小程序的上层开发技术在我看来都是快消品,五年、十年后他们还在么?当然如果我们能抽象一下各家小程序背后的技术本质,例如深入研究 JS 执行引擎原理、浏览器内核等,那你又管他五年后XX小程序还是WW小程序呢?肯定离不开这些技术本质,这一点很多前端小伙伴一定比我们终端小伙伴玩的溜。

人工智能

人工智能并不是什么新概念了,可以说自计算机诞生就有人思考人工智能的问题了,不过人工智能的概念是在 1956 年夏天、美国达特茅斯学院的一次研讨会上首次提出的,那次会议聚集了麦卡锡、香农等业界泰斗,被认为是人工智能的诞生标志,史称达特茅斯会议。此后,每隔一段时间,人工智能就发展到一个新的阶段,例如 1963 年计算机与人类的首次象棋大战、1996 年深蓝计算机战胜国际象棋大师、1997 年比尔盖茨的智能化豪宅建成,推进智能家居的概念诞生、近些年 Google 的 AlphaGo、无人无人车等,语音、图像识别等技术已经进入多个领域的应用。2018 年,移动互联网各个方面应用领域进入红海,各大巨头都在寻找新的赛场,人工智能成了“兵家必争之地”,BAT 等互联网巨头都纷纷成了 AI 实验室…

人工智能的基础是数据和算法,而数据又必须基于连接获取,需要万物联网,强大的数据加算法作为神经中枢,各种各样的终端设备就是神经末梢,神经末梢感知数据通过联网传递到中枢,神经中枢在越来越多的数据喂养下反过来更好的为各个终端提供更精确的决策和服务,这就是马云爸爸说过的 DT 时代,2018 年,我们从 IT 时代进入了 DT 时代,红衣教主周鸿祎 2013 年的时候就说过未来的手机硬件一定是没有利润的,甚至扬言要做免费的手机,通过软件增值来赚钱,而在 DT 时代这一点将会更加明显,万物联网的终端硬件一定不是盈利点,真正的价值还是在数据和服务。作为多年的 Android 开发,我也一直在思考在这个时代,我们的竞争力在哪里?近年大数据工程师、算法工程师比较吃香,终端开发有必要转算法吗?如果你抱着五年十年长时间打算,我到觉得未尝不可。不过我觉得如果对 Android 系统研究的足够深入,这个时代依然还是我们的时代,万物联网,一定会需要一大波终端工程师,而未来的智能设备一定需要离线算法能力,终端要承担一部分算法,到时候我们能发挥的空间更大。

如何在下半场走得更远

无论是上半场还是下半场,我们只是换了个现场而已,在我们一生所学的本领中,有些换了个战场就不能用了,有些还能继续使用。

说到这个, 我想起了有个前辈说的一个概念:知识衰竭周期,这里我拓展为技能衰竭周期。我们一身中所学习的技能,有的很快就过时,称之为衰竭,有的技能十年、百年都不过时,这里有个最鲜明对比: 研究心血管的医生和 fash 程序员,医生完全不用担心人体心血管结构会变化而自己的技能经验会淘汰,而十年前比较火的 flash 开发技术如今快面临淘汰了,所以说学医的普片越老越吃香,而我们程序员不得不不断学习。既然要学习,我们也考虑下成本和收益,多花些心思在衰竭周期较长的知识、技能上。

从上到下衰竭周期越长,从下到上变化越多同时短期内的需求越多。长远来看,越是底层的东西越值得我们去研究,底层的搞明白了,上层变化再多都能很快上手,以不变应万变。以上图片是我个人 YY 的,一定不全面,但能表达一个意思:技术服务业务, 越是上层的技术越受制于业务,业务千变万化,上层的技术形态也就千变万化。

目录
相关文章
|
1月前
|
Android开发 Swift iOS开发
iOS和安卓作为主流操作系统,开发者需了解两者差异以提高效率并确保优质用户体验。
【10月更文挑战第1天】随着移动互联网的发展,智能手机成为生活必需品,iOS和安卓作为主流操作系统,各有庞大的用户群。开发者需了解两者差异以提高效率并确保优质用户体验。iOS使用Swift或Objective-C开发,强调简洁直观的设计;安卓则采用Java或Kotlin,注重层次与动画。Swift和Kotlin均有现代编程特性。此外,iOS设备更易优化,而安卓需考虑更多兼容性问题。iOS应用仅能通过App Store发布,审核严格;安卓除Google Play外还可通过第三方市场发布,审核较宽松。开发者应根据需求选择合适平台,提供最佳应用体验。
59 3
|
3月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
90 0
|
1月前
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
2月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
356 3
|
2月前
|
IDE Java Android开发
安卓与iOS开发环境的差异及其对开发者的影响
在数字时代的浪潮中,移动应用成为人们生活的延伸。两大操作系统——安卓与iOS,如同两座技术高峰,各自占据着半壁江山。本文将探索这两个平台的开发环境差异,并讨论这些差异如何塑造开发者的编程习惯与职业选择。我们将从工具和语言、用户界面设计、系统架构、市场定位以及开发社区和资源五个方面进行比较,旨在为开发者提供一份实用的指南,帮助他们在不断变化的技术世界中,找到适合自己的发展路径。
55 3
|
2月前
|
移动开发 开发工具 Android开发
安卓与iOS开发:平台差异及其对开发者的影响
在移动开发的大潮中,安卓和iOS两大阵营各领风骚。本文将探讨这两个平台的关键差异,包括开发环境、编程语言、用户界面设计、应用分发以及商业模式等方面。通过比较分析,我们旨在为开发者提供一个清晰的指导,帮助他们根据项目需求和个人偏好做出明智的平台选择。同时,文章也将分享一些跨平台开发工具的使用经验,以期最大化开发效率和市场覆盖。
70 1
|
3月前
|
开发工具 Android开发 iOS开发
安卓与iOS开发环境的差异及其对开发者的影响
【8月更文挑战第22天】在移动开发的广阔舞台上,安卓与iOS两大操作系统各自占据着半壁江山。它们不仅是用户手中的智能设备,更是开发者展示创意和技术的战场。本文将深入探讨这两个平台的开发环境差异,以及这些差异如何塑造开发者的技术路线和职业生涯。从编程语言到开发工具,从市场定位到用户需求,我们将一探究竟,这两种不同的生态系统是如何影响开发者的决策和成长的。
|
3月前
|
Java 开发工具 Android开发
安卓与iOS开发环境的差异及其对开发者的影响
【8月更文挑战第21天】在移动应用开发的广阔天地中,安卓和iOS两大平台各据一方,它们不仅在用户体验上有所区别,更在开发环境上展现出独特的风貌。本文将深入探讨这两大平台的开发环境差异,以及这些差异如何塑造开发者的技术路径和职业生涯。从工具和语言的选择到市场份额的争夺,我们将一一剖析,以期为即将踏入这一领域的新手开发者提供一盏明灯。
|
2月前
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
72 0
|
3月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
92 1
下一篇
无影云桌面