几种移动开发技术的比较和选型
为什么80%的码农都做不了架构师?>>>
首发:个人博客,更新&纠错&回复
移动开发很火,移动开发技术很多。都有哪些技术?相互对比如何?怎样选择?
简单列了个表。
其中Native指原生语言,如安卓的java语言,苹果的objective-c或swift;Hybrid指混合开发,在前种语言基础上,借助WebView控件,将其中部分功能用前端技术实现;Html5指PhoneGap和HBuilder这种,最终会生成app安装包,但完全用前端技术开发,不需要懂原生语言;Web指为移动浏览器开发的网页,在手机上看外观良好,很可能要使用专门的样式框架如jquery mobile,或者bootstrap这种响应式框架;js-sdk指微信推出的技术,可以为在微信浏览器里展示的网页添加额外的功能。
技术选型,一看既有人力情况,二看需求。
既有人力情况:如果目前的程序员擅长后端语言(比如要做安卓应用,你恰好是java程序员),就该采用原生技术;如果程序员擅长前端,则该采用前端技术;如果程序员后端前端都有能力,混合开发也是可以的选择。
在需求上:如果要做在商城中上架的App,移动版网页和微信应用就不可能选择了;如果不希望每次改版都要求用户重新安装应用,纯原生应用就不要列为选项;如果时间紧迫人力有限,希望开发一套代码在所有平台都使用,则或者完全放弃原生技术,或者采用混合方案(嵌入WebView里的网页是同一份,只需要为两种平台各做一个壳子);如果看中应用的性能,采用原生技术能达到的性能上限当然高于非原生技术,但要结合程序员水平思考能不能达到上限;如果需要使用相机音频这些功能,纯在浏览器打开的移动版网页就不能胜任了,原生和混合当然能满足这个要求,Html5应用和微信应用则提供了数量有限但是跨平台了的接口,根据到底需要调用哪些本地功能来考虑;如果不同应用间需要交互,网页当然就是为这个而生的,微信应用本质也是网页也没问题,原生应用理论上在本机内部也能互通,但还是在互联网上来互通更合适,因为网页的跳转比下载安装程序方便太多了。
打开网页忌讳流量太大,等待时间太长,注意别用太大的库,而且做好缓存,如果是混合开发或者Html5应用,把资源打到安装包里会不错,这样往来的流量就只有数据了,如果是移动版网页或者微信应用,库的选择和缓存策略将是重中之重。
采用前端技术的优点是开发简单,表现力强大,而且跨平台,缺点一是用来解决性能敏感的需求不稳健,二是javascript作为弱类型的脚本语言,在工程上和团队协作上,相比强类型语言更容易失控,这就考验团队的经验和素质,如果功能实在简单,迭代周期不长,这倒算不上什么缺点,毕竟在没有ie6的世界里javascript用得认真点还是比较靠谱的。
由于html5支持本地存储和websocket,即使是移动版网页也有一定的c/s能力了。但如果使用原生技术,c/s编程元素的承载者应该是原生语言,即使同时使用前端技术,前端技术也该纯粹地用来表现和交互,这时候不该贪图前端技术的程序能力,就像java编程时不该贪图jsp拥有的写程序代码的能力一样。如果纯使用前端技术,那javascript就是程序实现的主力了,这时候就是前端转全栈的程序员最喜闻乐见的情景:后端的nodejs只提供rest接口,前面工程化的前端代码大发神威,这时AMD/CMD的模块组织就很关键了。这时库的选择就很重要,一是要足够强大,二是要体积够小,三是要模块化,最理想的还是前端程序员量体裁衣亲手写一套专门为这个项目定制的,如果觉得划不来那就用点心找第三方库吧。
原生开发中的库选择也很重要,好在无论Android还是iOS基础库都很强大好用了,本机自带基础库就是好,让应用既强大又小巧,windows上的.net运行式也算是半套基础库了,微信也算半个,既然事实上每台手机上都有安装微信,跟本机自带的也没什么区别了,所以微信本身它就是一个壳子,比起在手机浏览器里的移动版网页,微信应用先天多个壳子,比起HBuilder这种Html5解决方案,微信应用先天减少了下载壳子需要的流量。用c#写个桌面程序,可以逼迫用户下载.net运行时,你用python写一个桌面程序,则只好打成一个硕大的包来发布,HBuilder就像是Python,而微信就像是.net。
说来说去,还是没有银弹,移动开发技术之所以百花绚烂,就是因为每种技术都有明显的长处和短板,谁都无法取代谁,作为程序员,还是该多学点,这样可以采用最贴切需求的技术,但作为选型者,则不能逼迫小伙伴们全成为全能战士,根据团队情况和需求来综合考量吧,决策不就是个权衡和舍弃的过程吗,重要的,一是知己,二是知彼,这样,大概不会太糟。
长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。
转载于:https://my.oschina.net/u/866216/blog/542186
几种移动开发技术的比较和选型相关推荐
- php三种web开发技术,三种WEB开发主流技术ASP-PHP-JSP的评价
三种Web开发主流技术ASP-PHP-JSP的评价 [摘要]本文从程序开发者的角度,对现今社会盛行的WEB开发技术进行了分析,旨在让WEB 开发人员.使用者.准备学习的人对WEB开发技术有更加深入的了 ...
- Ajax:一种网页开发技术(Asynchronous Javascript + XML)
创建新的 XMLHttpRequest 对象(Ajax 应用程序的核心): <script language="javascript" type="text/jav ...
- 移动开发技术有哪些?
原生开发技术 什么是原生开发? 原生开发指的是纯原生应用程序(简称App)开发,是在Android.iOS等移动平台上利用官方提供的开发语言.开发类库以及开发工具等进行App开发.比如Android ...
- java web国外 研究现状_国外javaWeb开发技术.doc
国外javaWeb开发技术.doc 外java Web开发技术 MVC结构模式是XeroxPARC在20世纪80年代为编程语言Smalltalk-80 发明的一种软件设计模式. 缑艳阳认为MVC将应用 ...
- Web开发技术的历史发展简介
讨论Web开发技术的历史,当然要先说说Web的起源.众所周知,Web这个Internet上最热门的应用架构是由Tim Berners-Lee发明的.Web的前身是1980年Tim Berners-Le ...
- 浅谈当前的手机开发技术
浅谈当前的手机开发技术 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 随着3G时代的到来,手机软件开发成为了一个热门的软件开发技术,但是由于手机种类等一系列的原因,使 ...
- Java开发必须掌握的8种网站攻防技术
转载自 Java开发必须掌握的8种网站攻防技术 XSS攻击 XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),是WEB应用程序中最常见到的攻击手段之一.跨站脚本攻击指的是攻击 ...
- JSP网站开发技术两种模式介绍
目前, JSP技术正是利用了Java的"一次开发,处处使用"的性能,成为了网站开发技术人员的首选技术.当然,JSP技术的最大优势在于它能够将页面的表现形式和页面的商业逻辑分开.JS ...
- 什么是RIA?介绍几种RIA客户端开发技术
什么是RIA? RIA(Rich Interface Applications)富界面应用,俗称胖客户端或者富客户端. RIA的优势 RIA 具有的桌面应用程序的特点包括:在消息确认和格式编排方面提供 ...
最新文章
- PHP开发错误锦集(持续更新)
- 清晰易懂的Focal Loss原理解释
- Servlet3.0 multipart 文件上传技术
- 2021十大金融科技趋势
- 【干货】常见的40个知识模型:学习力、思考力、创造力、共情力......
- 【数字信号调制】基于matlab GUI数字信号调制仿真系统【含Matlab源码 336期】
- 词频统计软件_单词词频统计小软件
- sas入门之(三)条件语句,循环语句,input语句
- 计算机web前端环境分析,web前端开发行业前景分析
- nbu备份oracle兼容性,NBU备份ORACLE的问题
- php 类 抽象方法,「php抽象类和抽象方法」- 海风纷飞Blog
- win7安装cad2006启动后提示计算机中丢失ac1st16.dll
- 2018届春招面试回顾(二)
- Lua实现md5加密
- MyBatis 3.2.8 用户手册 4.1.5 Result Maps
- 计算机组成原理指导,计算机组成原理课程复习指导课件
- 通货膨胀 通货紧缩 贸易逆差
- 甲骨文混合云战略融合数据库技术
- SciTE 编辑器汉化
- 避免使用百度云管家被限速的方法
热门文章
- mac搜索服务器文件,ProFind——文件搜索神器
- java9 jar hell,Java Jar hell运行时异常
- C++ :sqlite3使用:
- python 之GUI设计:Entry组件
- 做AI项目,找有三AI,200+研发人员为你服务
- 【杂谈】篇篇精华,有三AI不得不看的技术综述(超过100篇核心干货)
- 中国半光纸市场供需形势分析及运行环境研究报告2021年版
- vc6下c++编译器通不过,c编译器通过
- 柳编产业临沭谋定转型升级 农民丰收节交易会技能兴鲁
- 悲观锁和乐观锁的详细分析