?<—-原生Android何去何从—->?

----By 我承认永不变

一.Android发展方向

1.跨平台开发

科技日益发展,未来的世界,不可估量,在此发表一下我的意见. 虽然很不想承认,但是却不得不承认跨平台开发会成为主流.跨平台应用的优点显而易见,跨平台,轻量级,开发成本低,性能接近原生开发.而相对于原生开发,开发成本高,实现起来比较麻烦,review代码比较痛苦. 从公司角度来想,谁不想请一个工程师就能搞定大部分工作?所以全栈工程师应运而生. 建议:如果为了以后比较方便找工作还是建议去搞跨平台开发,有能力的可以培养自己成为全栈工程师. 下面说一下跨平台开发的主流框架: 个人认为排行榜:react>vue>angular 市场上用vue.js的比较多 (1)react native Facebook出品,缓存做的好,性能最接近原生. (2)vue.js 国内大神开发,深受外国欢迎的轻量级框架,容易上手,性能接近原生,阿里基于vue.js出了个weex更加牛逼,可以了解一下. (3)angular.js Google官方推荐的js框架,性能相对前面两个框架要差一点,开发的时候注意做缓存性能还是不错的.常用搭配ionic3(移动应用UI库)+angular4(现在好像是angular5了)

2.原生开发

(1)Kotlin 2017年Google宣布把kotlin作为官方开发语言. Kotlin可以说是主流语言中最年轻的,但在google宣布为官方语言之后发展迅速,估计未来5年内取代java成为主流Android开发语言. Kotlin的一些优点,kotlin是参照很多语言的特性结合的一种语言,语法上和ios开发的swift语言比较相似,都是弱类型语言.kotlin一样是运行在JVM上的,它能够无缝兼容java代码,也就是说如果一个Android项目是java开发的,转成kotlin开发并不难.kotlin也是一门跨平台开发语言,未来kotlin或许能够用来开发ios应用. 建议:如果喜欢原生开发并且刚开始接触Android开发,可以直接学kotlin,尽管现在kotlin不够完美,但未来趋势就是这样. (2)Java java算是编程语言中的大佬了,至今没有任何一门语言能够撼动java前三的位置. 上面说kotlin的优点,在这说一下缺点. Kotlin不够java成熟,java se多年用于开发Android应用,市场上已经有非常强大的第三方框架,而kotlin目前强大框架还比不上java,所以目前kotlin还撼动不了java在Android开发的地位(Android开发大军从java转kotlin需要过渡期). 虽然很多小公司为了节省开发成本会去招跨平台开发的来做Android,但是一些大公司依旧会选择java来开发原生Android,或者通过原生+h5的方式开发. 如果你喜欢用java开发Android,那么下面我介绍一些主流框架给你学习. Butterknife:一个强大注解框架,可以代替findViewById以及onclick点击事件监听的繁琐工作,还可以通过AS插件一键生成ViewHolder. RxJava2:一个强大的异步框架,可以代替Handler,Thread等异步操作,优点很多,简洁,响应式编程,链式编程,执行线程随意切换… Retrofit2:目前最火的网络框架,常和RxJava2配合使用,Retrofit2是基于OkHttp3的,在学Retrofit2之前请学OkHttp3,其实Retrofit2网络功能是OkHttp3提供的,Retrofit2只是把OkHttp3封装成符合RESTful的设计标准. RxBus:RxBus并不是一个库,而是使用RxJava实现事件总线的一种思想.当然在github上有封装好的RxBus.如果项目并没有用或者没有打算用RxJava,那么建议你用EventBus,EventBus是为Android优化的发布/订阅事件总线,简化组件之间的通信. Glide/Fresco:Glide是Google出品的强大图片库,Fresco是Facebook出品的强大图片库,Glide的人气要更高一点.Fresco可以直接在标签设置圆角,不用考虑图片缓存问题,相对来讲Fresco更容易上手(傻瓜式操作). Gson/FastJson:Gson是Google出品的强大处理json数据框架,FastJson是阿里出品的强大处理json数据框架.Gson人气高点,两个json解析框架都容易上手,非常强大. …还有很多优秀框架就不一一列举了. 介绍四种设计模式框架: 1.MVC(Model-View-Controller) 原生Android开发不去考虑设计模式的话,它本身就是按照MVC设计模式来的. Model:数据逻辑部分,对数据库,集合等数据操作. View:视图.就是我们的View布局. Controller:控制器.MainActivity就是控制器. Activity和Fragment代码冗长,不方便review. 不推荐使用. 2.MVP(Model-View-Presenter),都是接口 Model:一样是数据逻辑部分 View:自定义View接口,实现View该有的东西. Presenter:主持者,代替MainActivity的地位,相当于控制器 Presenter是一个中介者,操控Model,回调反馈在View.减轻Activity的工作,解耦Model和View的关系. 适合中小型项目. 3.MVVM(Model-View-ViewModel) 基本上和MVP一样,特点,采用了双向绑定(data-binding),ViewModel可重用性. 缺点:布局加入了数据绑定,view不可复用. 适合大项目. 4.TheMVP(支付宝在用的设计模式),张涛开源 可适用于MVP或者MVVM项目,张涛对于MVP的认识并不一样,他是把Activity和Fragment作为Presenter的. 优点:很优秀,高度解耦,view可复用.适合大项目. 缺点:初学者非常痛苦,难以理解.model不可复用.

二.Java还能撑下去吗?

上面有说到,Android开发大军从java转kotlin需要过渡期,所以java目前在Android的地位还是主流的.用java开发Android个人觉得还是不错的,j2se并不算难,用于开发Android比较好理解开发流程,实现起来虽然没有跨平台开发方便,但现有的强大框架可以帮助很多. Ps:虽然为了节省开发时间不建议重复造轮子,但是不能过分依赖第三方框架,特别是一些自定义view,最好能自己看懂源码并自己能够diy做出来.

三.给迷茫的你

上文分析了跨平台和原生Android开发的各自特点和发展趋势,相信你心中也有了答案. 不过还是出几条发展路线可供参考:

1.为了好找工作:

MEAN框架(MongoDB+express+angular+nodejs) 全栈工程师

2.考虑性能不一定好找工作:

MERN框架(MongoDB+express+react+nodejs) 全栈工程师

3.好找工作:

vue/angular4+ionic3 前端开发

4.喜欢原生Android,未来好找工作:

kotlin kotlin工程师

5.喜欢用java开发Android(不好找工作):

java Android工程师