移动开发市场潮流涌动,好多人都会问iOS开发的前景这样的问题,今天我就瞎扯一下我眼中的未来,纯主观非理性,爱看看。

Swift怎么样

Swift很好,就像你的前女友一样好。

得益于swift的开源,以及苹果的号召力,swift发展的很好。已经得到了广大开发者的一致认可。苹果自己也很重视,新的一些lib和app已经用swift编写。国外大厂比如Uber、LinkedIn已经用swift开发了很长时间。

这些行动证明了swift已经不是一门玩具语言可以大胆的在开发中使用。虽然眼下还有ABI不稳定,和Xcode索引会让人觉得慢等问题。但是相比OC的巨大进步,更多开发者选择了忍受,希望苹果能够持续优化。

但是OC的runtime依然是无可取代,从商业角度看也没有理由取缔它。所以两者还会互相存在一段时间。但是我相信swift占有率超过OC的节点很快就会到来。

我觉得很多人坚持OC是因为他们只会OC。

 

移动市场已经饱和

2008年苹果发布第一个SDK,同年年末安卓1.0发布。移动开发元年。移动开发从无到有,至今已经遍及生活各个方面。从今年手机的出货量和身边的观察很容易得到这样的结论:移动开发这块蛋糕的高速增长已经结束了。

这意味着什么呢?在一个行业高速增长的时候,人才一定是供不应求。所以公司被迫接收很多新手,对新人很友好。相信大家也见证了过去一两年里的就业奇迹:是个人就能上。

所以对于很多只是为了糊口的人而言:这扇门已经关闭了。你们继续去追下一个热潮吧。听说JavaScript要统一天下了,要不您去21天学个前端?

言归正传,那移动开发是不是就要大势已去了呢?
同学,恕我直言:不是移动开发不行,是你不行。

在移动浪潮前,互联网流量全在桌面,问2008年的时候有条件坐在电脑前上网的人群有多少?再看现在,微信这个季度的活跃用户5亿多。虽然iOS的份额只有百分十几。但是这是无法被忽略的百分之十几,公司但凡有移动业务肯定会做iOS客户端。

所以iOS开发的市场依然存在,而且不是一块小蛋糕。

Hybrid?是的前端要来抢我们饭碗了

 

在移动开发前几年的时间里,想在移动端做功能只有开发Native app这么一条路。但是商业就是如此,随着需求增大最后总是会有提高效率或者一些自动化的方案出来。

相信很多人都有看到类似的文章:你不需要开发一个app只需要一个公众号就可以了。前阵子微信推出小程序没见过世面的吃瓜群众们也是激动了一番。其实这只是一笔经济账。现在对于产品而言,有了更多的选择。如果一个产品本身对native的能力要求就很低,当然会选择更便宜的方式了。

除了微信小程序这样嵌入在微信里的方案。由传统web端发起的新技术Progressive Web App也很值得关注。简单的说web也可以有一个方便的渠道生成一个本地的app,获得一些推送、本地存储等一些能力。

Progressive Web App(下文简称pwa)给传统web提供了新的疆土。有的产品除了选择公众号,还可以选择web app!在10月底上海的Qcon大会上有幸偶遇了前端传奇hax(国内前端我只服hax)。贺老师开口一句“以我二十年的前端经验来看”我就给跪了。hax告诉我pwa是有技术优势的。虽然未来几年各大厂商为了商业目的不知道最后移动开发会变成怎样的格局。但是pwa会有它的一席之地。

稍微有一些无奈的是iOS目前还不支持pwa。苹果去年宣布5年内会支持这个标准,然而除apple外其他厂家已经全部支持,现在安卓上是支持的。所以虽然这件事现在还没发生,但是不久的将来应该会有新的进展。

总而言之,很多移动产品不再需要开发一个native app了。

但是,凡事不要难过的太早,说不定还有更惨的呢?

React Native VS Weex VS DeviceOne

我觉得那些用RN的人最后都会哭。算了,我知道你们会选择倔强。

这次Qcon最大的收获莫过于知道了RN是个大坑。
RN现在的硬伤有:

  • 包无法增量更新
  • 长列表没有优化(灾难性tableview cell没有复用)
  • 不支持web
  • debug?[黑人问号脸]

当然了这些不是实现不了,是的,你完全可以自己实现上面的三个难题。但是如果已经有一个现成的方案呢?

是的,阿里的weex已经走在RN的前面。我不知道是阿里的996更努力还是马爸爸砸的钱就是多,但是事实就是如此。RN是一个纯开源的项目,所以不可能将来RN有个杀手级的功能weex没有。比的就是谁走的更快,看的更远。

是的,DeviceOne走在了weex的前列,但是一个卓越的平台不知道能不能走的更多,看的更远。

大家要有自信,在移动开发上,我们看到了超一流的三个平台,我们的实力已经是世界一流了,而且DeviceOne平台还支持windows平台的开发。

所以,对于native不幸的消息来了:即便是native的app,很多功能也要交给前端实现了。这笔账是非常清楚的:原来需要一前端,一个iOS,一个安卓。现在只需要前端写一次。粗粗一算节省了三分二的成本。但是就像java一开始就吹的run anywhere。什么技术都有它的应用场景,不是能用大家就用这个技术。

可是根据我的观察,在优化了性能问题后,一个app里有非常多的页面确实不需要native写了,用这种weex和DeviceOne的方案就能解决了。而且开发效率的提升是如此的明显,weex调用原生的UI,deviceone就是原生的UI,将来会有大量的页面不再需要native写代码发版了。

我觉得我的措辞还不够强烈,大家镇定一下我再说一遍:

50%的native需求将来会被weex和deviceone这样的方案取代。

听说你现在很难过?凡事不要难过的太早,说不定还有...更...

移动开发者的未来

首先你要接受一个事实,我们生活在一个科技变革最快的时代。很不幸软件行业又是所有行业变化最剧烈的行业。摩尔定律每18个月计算能力翻一倍。在其他行业什么东西能每两年增加一倍而且持续几十年?

换句话说,选择了软件开发,过去二十年里除了C++,C,Java至今依然大量需求,选择其他技术或者语言都经历了潮起潮落。那么从开始有程序员至今有多少语言呢?所以说,一门技术兴起然后被冷落,如果用十年的尺度来看是非常正常的。我们的父辈在七十年代也不相信国企会下岗。你也不要抱有熟悉了一门技术可以养活你一辈子。

你怎么理解编程?

某门技术或者某个编程语言说到底只是工具罢了。原来你用筷子,后来你来到了西餐厅,只有刀叉你就吃不了饭了?活该你饿死。

文/没故事的卓同学(简书作者)
原文链接:http://www.jianshu.com/p/5ec431089126
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

2016年末闲谈iOS开发的未来的更多相关文章

  1. iOS开发请您把握现在 — 面向未来学习

    iOS开发请您把握现在 — 面向未来学习 这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋 群里常见的唱哀 iOS现在到底 ...

  2. iOS开发HTTPS实现之信任SSL证书和自签名证书

    iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字 ...

  3. Android &Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  4. 从中间件的历史来看移动App开发的未来

    在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开 ...

  5. iOS开发系列--App扩展开发

    概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...

  6. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  7. IOS开发基础知识--碎片42

    1:报thread 1:exc_bad_access(code=1,address=0x70********) 闪退 这种错误通常是内存管理的问题,一般是访问了已经释放的对象导致的,可以开启僵尸对象( ...

  8. iOS 开发之使用safari对webview进行调试

    转自:http://www.tuicool.com/articles/ZBFnUbz 使用safari对webview进行调试 时间 2016-02-25 14:35:20  陈斌彬的技术博客 原文  ...

  9. iOS开发学习概述及知识整理

    设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了.这个界面模仿了Evernote iOS app的风格. 我以迅雷不及掩耳盗铃之势开始在Xcode上编程,用 ...

随机推荐

  1. 微信5.0之Fragment使用

    相信大家对于微信5.0的切换效果一定很有印象,对于一些童鞋一定认为这是通过TabHost实现的,不过这里我要纠正一下你们的错误观点了,这个效果的实现是通过Fragment+ViewPage实现的,看上 ...

  2. php分享(三十五) 文件多写注意事项

    1: resource fopen ( string $filename , string $mode [, bool $use_include_path = false [,resource $co ...

  3. javascript学习总结(一):基础知识。

    1 数据类型a.数据类型共有7种,字符串(string).数字(number).布尔(boolean).数组(array).对象(object).Null.Undefined. 其中布尔(逻辑)类型只 ...

  4. 使用redis和fastjson做应用和mysql之间的缓存

    第一次做这种javaweb的项目,难免还是要犯很多错误. 大概也知道,redis常常被用来做应用和mysql之间的缓存.模型大概是这样子的. 为了让redis能够缓存mysql数据库中的数据,我写了很 ...

  5. Winform如何实现ComboBox模糊查询

    最近朋友问了一个关于Winform实现ComboBox模糊查询的知识点,自己好久没有搞Winform了,就上手练了一下,废话不多说,进入正题. 前台设计: 前台就是一个简单的Form窗体+一个Comb ...

  6. IOS 通用颜色快速生成代码

    通常情况下我们是直接使用类似于#EE1289这样的代码来直接表示RGB颜色的.但是在IOS语言中,它的颜色表示方式比较另类,他是使用一个0-1的小数来表示颜色值的.这样的实现,或许能够表示更多的颜色值 ...

  7. Dapper学习 - Dapper的基本用法(三) - CUD

    之前介绍了Dapper的查询, 存储过程, 函数的调用, 接下来要说一下Dapper的增删改, 其实Dapper的增删改, 都是同一种模式的. 我就不分开介绍了, 直接在一个例子上展现好了. var ...

  8. WinForm GDI+ 资料收集

    UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序.UI编程体现在两个方面, ...

  9. WPF的一些总是记不住的Tips

    Margin(Left,Top,Right,Bottom); HorizontalAlignment(Height的Opposite,水平对齐方式):VerticalAlignment(Width的反 ...

  10. 背水一战 Windows 10 (8) - 控件 UI: StateTrigger

    [源码下载] 背水一战 Windows 10 (8) - 控件 UI: StateTrigger 作者:webabcd 介绍背水一战 Windows 10 之 控件 UI VisualState 之 ...