移动WebApp相关资料

经过这么多个月,WebApp这块变化已经非常大。该文章仅供了解,当中的一些信息和判断已经过时了。

中间层选择

如果只是简单的个人开发的话,建议选择Titanium appcelerator;如果需要更加自由一点,更加web一点,建议使用PhoneGap。目前几个主流的javascript框架都有在PhoneGap上开发的相关资料做参考。做移动框架研究的话,这两者都提供了源码,同时还有MobileUp这个国内的框架供辅助研究。

PhoneGap

  • 协议: MIT,’new’BSD
  • 支持企业: IBM,ADOBE,SYBIAN
  • 支持设备: iPhone,Android ,BlackBerry,Symbian,Palm,Window Phone(in process)
  • 优势:
    • IBM贡献的代码已经比Nitobi要多,这就意味着IBM不会轻易的放弃这个玩意,有可能和eclipse一样发展壮大,个人感觉IBM已经是一个工具开发者的天堂了。
    • 开发工具有Adobe的支持,开发工具不可小视,当前官方已经放出了原生支持PhoneGap+jQuery-mobile开发的DW CS5.5 运行Demo。同时原生的Android开发也很容易,只要将其jar的包放入library的路径里面就好了。
    • 官方说使用的是W3C标准,意思是,如果以后哪个平台支持了这些属性,就可以将部分接口变为直接调用,这样在移植的方向上也很容易。
    • 当前已经被Apple官方接受了。
    • 完全自由免费,不过你得需要保留其版权。
  • 劣势:
    • 当前兼容性还有待加强。
    • 有bug的时候你得自己修复,开源嘛。当然你可以去咨询,一般都会有人回复你的;也可以选择提交bug,等待别人的修复。
  • 相关链接:

Titanium appcelerator

  • 协议: Apache 2.0
  • 支持企业: Appcelerator, Inc.
  • 支持设备:PC,iPad,iPhone,Anroid.
  • 优势:
    • 使用的大型企业很多,比如eBay,Paypal,Red Hat.
    • 使用起来据说很傻瓜,完全不需要懂底层代码
  • 劣势:
    • 是有源码的,只是最后编译成native code了,也就是说,你最后得到的是native code,并不是一个跑在Webview里面的Web ,没有源码,你无法知道它是怎么运行的。
    • 当出了问题了,你得等官方修复,幸运的是,这个是收费的玩意,如果你交了钱的话,你可以理直气壮的痛打他们。
    • 你如果要放出去卖?不好意思,给钱先。收费不明..
    • 开发工具需要安装,而且感觉安装非常复杂,要下这个要下那个的,搞的稀里糊涂,直接放弃了。
    • 需要开发者ID才能登陆平台。
    • 写作方式类似Sencha,并不是很web的感觉,倒像是写.net的控件了
  • 相关链接:
  • 协议:理论上你可以使用任何协议替代他自己的Agreement
  • 支持企业:Amazon webservice,其他都没听过
  • 支持设备:Broswer,Android,iOS,blackberry,PhoneGap(-_-)
  • 优势:
    • 完全基于web和java,其开发器和模拟设备都使用的是本地的浏览器,这点很强。
    • 和PhoneGap没竞争,因为其完全是透过卖自己的云端服务api来维持公司进账,因此你可以在使用Appmobi的同时也使用PhoneGap,官方介绍是说完设计初衷就是可以和PhoneGap协同工作的。
    • 安装过程简单,调试起来较之PhoneGap相对方便一些。
  • 劣势:
    • Broswer的IDE是个劣势,据说你可以不使用任何macthines,sdks,但是这点让我很疑惑,感觉我是在发送数据到Appmobi的Server再返回数据来做模拟器。这个和Amazon的Android在线试玩有点类似。更像是Palm的在线开发工具,只是Palm的漂亮太多了,这个太丑了。
    • 源码?不太清楚。
    • 他的服务感觉是Amazon开发的,由于是云服务,所以这里我对其网络使用情况表示怀疑。国人嘛,正常以及合理的怀疑类似QQ&360中。
  • 相关链接:

MobileUp

  • 协议:理论上没有。
  • 支持的企业:目前是一个个人性质的项目
  • 支持的设备:android
  • 优势:
    • 开发的是国人,另外作者有做一些简单的demo,实现实用的是websocket,有参考价值。目前PhoneGap使用的是轮询,这个倒是可以避免本地服务器的压力。
  • 劣势:
    • 由于是个人性质的项目,国内因为不太重视技术型的开发,更多的是苦力型的劳作,所以后续的版本更新压力还是比较大的。
  • 相关链接:

Web开发框架

目前在页面层的开发方式有两种:

  • 基于传统web网站的开发方式
  • 基于传统program的开发方式

前一种的开发方式目前支持的比较好的就jQuery-mobile,包括了几家大公司都在支持这套框架。不过从目前收集到的框架来看,这个算是使用传统web网站开发方式当中最好的选择了,可控性很强,但是相对来说增加了开发的复杂性,毕竟使用web网站的开发流程和开发方式来开发应用,这个还是有待考究的领域。

而后一种的开发方式,则类似.net的组件模式,包括视图之类的,都包裹在js里面,通过view层添加组件进行展示。这类适合从后端直接转到Web App层的开发人员。当中最好的是sproutcore,因为其协议对商业化的友好性,而且样式方面是几个当中最好的,同时Apple也在使用(有人也说这个是Cocoa for web)。在替代上有Sencha Touch可选。目前这类框架组件性很强,对于借口的封装很彻底,可控性相对jQuery-mobile来说差一些,不过开发起来更加适合原来开发桌面应用的人。

对于代码洁癖的人,以及需要从头开发,只需要一个简单方便的库的话,Zepto算是一个不错的选择,类似jQuery的语法,可以很方便的从jQuery转自己的框架过来,同时也不需要兼容Desktop版本的程序,所以他的库本身只有5k。算是很轻的了。

jQuery-mobile

  • 协议:GPL/MIT
  • 支持公司:Mozilla,Adobe,BlackBerry,Nokia,Palm
  • 优势:
    • 基于jQuery,有大量的用户基础。
    • 支持的公司多,尤其是Nokia,因为Nokia的Ovi实际上就是Web形式的,因此如果能搞定Nokia,市场还是很大的。
    • Adobe的DW CS5.5将支持jQuery-mobile的开发。
  • 劣势:
    • 由于jQuery并不是纯粹为了mobile而开发的,因此代码臃肿程度可见一斑。
    • 动画效果在Andoid上有很多bug,不流畅。
    • UI层太垃圾,锯齿很明显。
    • 当前只支持mobile,pad依旧没有影子。
  • 相关链接:
  • 协议:商业协议。
  • 支持公司:由于公司本身还开发过著名的:EXT JS 因此,所有可能是EXT JS的客户都列在上面,不好判断。
  • 优势:
    • 基于EXT JS的二次开发,代码上不依赖EXT JS,相对来说要好一些。
    • 继承了EXT JS良好的UI设计。
    • 比jQuery-mobile更加完美的支持手势和滚动效果,流畅程度比jQuery-mobile强。
    • 转屏之类的更加方便。
    • 附带Css3 Animation Designer,实现Flash的部分功能。
  • 劣势:
    • 开发方式和jQuery-mobile的完全不一样,整个html页面body里面没有html代码,完全组件式开发。相当于学习第三门语言。
    • 私有化,商业上使用要付费。
  • 相关链接:

Jo

  • 协议:openBSD
  • 支持的企业:由于作者是在HP上班,故默认是Plam了。
  • 优势:
    • 组件化,和Sencha有点类似。
    • 文档看起来很舒服
  • 劣势:
    • 目前没有公司直接表明要支持
  • 相关链接:
  • 协议:MIT
  • 支持的企业:Strobe Inc。
  • 优势:
    • 组件化,和Sencha有点类似。
    • 开源协议,可商用,由于和Sencha类似,所以在开发上简单不少。
    • MVC框架。
    • 样式方面非常Apple,几家公司已经在采用,从样式和交互来说,这个是最成熟的框架了。
    • 有自带的成型的开发工具,其开发工具使用自身的开发框架,同时也是很好的demo。
  • 劣势:
    • 目前没有公司直接表明要支持。
    • 需要Ruby运行环境支持。
    • 并不是基于原始的Web开发方式进行开发。
  • 相关链接:

Zepto

  • 协议:MIT
  • 支持的企业:个人。
  • 优势:
    • jQuery类似的语法,可以将jquery的插件更方便的转过去。
    • 开源协议,可商用,整个文件才5k。
    • 没有做桌面浏览器的兼容性,只是针对mobile,因此在处理上面应该比jQuery要快很多。
    • 适合代码洁癖的人使用。
  • 劣势:
    • 目前没有公司直接表明要支持。
    • 从传统编程直接转过来的人来说,学习成本和开发成本均很高。
    • 对于需要一套代码多设备兼容的程序,zepto并不是很适合。
  • 相关链接:

当前由于需求,使用的是PhoneGap + jQuery-mobile的方式,实际测试平台为G1/G7,发现PhoneGap的支持还算不错了。

Update

  • [2011.5.30] SproutCore1.6的GUI IDE已经不再能用。另外2.0和1.6有本质区别。
  • [2011.5.29] 增加Zepto的介绍,增加框架导航说明,修正标题,更改二级标题的文案。
  • [2011.5.29] 修正对Appmobi的错误说明,Appmobi没有自带开发用IDE,只是带了一个模拟器。
  • [2011.5.26] 增加SproutCore,对大类增加整体的选择导航,增加相关链接。
  • [2011.5.16] 增加mobileup,Jo
  • [2011.5.16] 修正phonegap的版权错误,修正appcelerator的描述错误,他是有源码的。
Q.E.D.