同时欢迎到我的BLOG讨论 : http://pagetalks.com/
江湖有江湖的规矩,大家都知道iPhone上的Cocoa Touch框架和Xcode是开发Apple移动产品的王道。Android SDK和Eclipse是开发Android App的王道⋯⋯你可以找到所有主流平台的开发框架和相关IDE。
你说这做移动端应用的人容易么?虽说Blackberry和Android都是基于Java、有效部分人之前也做过Objective-C,但是想到一个大众产品需要提供每个平台的无差别体验时,你做的可能不是一个项目,而是N个项目。哪天国内某个厂商做了自己的操作系统和SDK,你也得啥啥的多做一个版本。对于财大气粗的公司这些都是无所谓的,可是对于那些可怜兮兮的工程师和项目经理更期望自己的产品生命周期能更长一些、受众应该更广一些——我们需要的是跨平台的解决方案啊!
我们第一个想到的词肯定会是HTML⋯⋯这不是什么新鲜东西,在很多其他嵌入式产品中,例如路由,都是用网页作为用户接口的。将Web App封装到一个应用程序包内进行分发这种概念,是一个很直观的想法。
Web App Architecture
AListApart上已经有文章在讨论这个问题,但是作者根据自身经验觉得WebApp在需求变得复杂之后不能满足任务⋯⋯汗⋯⋯的确有这样的嫌疑吧。如果单纯使用WebApp再套一个WebView的壳,就没法使用重力感应、GPS、照相机之类的功能。
问题的确如此,但是还是希望还是有的。Phonegap、Titanium、Rhodes、SproutCore Touch这三个跨平台的移动框架虽然依然是一个“壳”,就不仅仅是一个WebView的壳而已。
轻量级的PhoneGap
PhoneGap的是一个非常轻量级的框架,在开发过程中完全不需要使用Java或Ruby之类的代码,而是纯粹的HTML+JS+CSS。只是这里的JS里被赋予了增强型的API,你可以控制Camera、加速器、GPS等等。想了解它的功能,你可以直接看他的文档。
PhoneGap最大的优势就是它真的很轻量很快捷。你能把Web开发流程中的Rapid Prototyping应用到Mobile App的开发之中。
Dev Process
缺点也很明显。由于使用JS作为语言载体,你的效率没法跟Objective-C、Java的比。由于,PhoneGap限定你的程序在一个HTML文件里面,那么App规模越来越大之后,你还能在一个HTML里管理你的App么?
最后一种是个这些框架的通病,无法提供完全一致的用户体验。在UI方面,由于无法调用系统默认的UI库,界面完全靠你自己去写,这对用户体验设计是一个灾难。虽然jqTouch之类的框架部分弥补了这方面的缺陷,但是用HTML模拟的控件用起来还是没有系统原生的流畅⋯⋯
更聪明的Titanium
Titanium也是利用HTML、JS、CSS。不过其JS API封装的更强大。
同样是将手机所有功能都封装起来,但是比PhoneGap更完美。但这个是牺牲跨平台性的,Titanium只支持iPhone和Android,现在的Blackberry的支持还是测试阶段⋯⋯不过对于中国手机用户来说,这样的支持性反而更好。
Titanium比PhoneGap对手机的功能封装的更好,前者支持后者不支持的File IO操作(PhoneGap支持不完善)、Contacts读取等等。
对于正式的产品开发,选择兼容性更强的PhoneGap还是功能更强大的Titanium,的确是个疑问。
绝对重量级的Rhodes
Rhodes采取的是另一种思路,简单说,Rhodes的框架在App内部架设了一个Client/Server端,开发者写的程序就是其Client端,通过框架的JS API调用“Server”端的“WebService”。Server端再根据得到指令进行操作,Server端本身具有调用平台原生API的使用能力。
其”Server“端使用的是Ruby,那么很多同学可以通过Ruby自己封装平台上的原生API给”Client“端的JS使用。
Rhodes还有相应的云端解决方案,能够解决Mobile App的数据同步等问题。
详细的可以参考Rhodes的介绍,或者这个Slide。
蓄势待发的SproutCore Touch
今年早些的时候就发布了SproutCore Touch。SproutCore(网站已被hexie)就已经很NB了,YUI、jQuery跟它都不是一个等级的东西,或者就不是同一个概念。SproutCore可以是仅仅借用了JS的语法去定义了一个全新的界面开发环境,并且提供了项目生命周期的一切工具。SproutCore Touch是面向移动端的框架,肯定会在SproutCore的基础上加入移动端的Touch、GPS、Camera相关的API。
可惜这个框架的学习难度特别大,其API的文档和调试环境特别不友好⋯⋯好吧,应该是说,文档比较难找,然后你又要用Ruby来完成开发工具的配置、代码调试等等。另外,这个框架的开发进度好慢的。
但这个框架是基于SproutCore的,潜力太不可小视的。
没有Utopia
现在,我们可以放心的用已有的技术去快速抢占移动端市场了。再加上HTML5在移动平台上的广泛支持,前途看似无限美好。
但是大家不要忘了,现在你的App虽然没有跟平台依赖,但是跟这些框架相关了!
从性能上说,程序性能又是跟每个平台上的浏览器有关。Webkit虽然是主流,但是你会发现Android和iPhone的Webkit就很不一样,更不用说每个不同版本的平台之间浏览器的差异了⋯⋯似乎你又回到了桌面浏览器的兼容性大战上。
这些问题在你使用一些HTML5的新特性就特别明显。比如,你会发现iPhone上竟然没有WebWorker。Android上Canvas.toDataURL()方法无法执行等等问题。
看来,Mobile App领域还真是一块处女地⋯⋯
相关推荐
在“Angular JS仿拉勾网 WebApp 开发移动端单页应用”项目中,开发者利用AngularJS来实现类似拉勾网的移动Web应用程序。拉勾网是一款专注于互联网行业的招聘网站,因此这个项目旨在教你如何创建一个具有类似功能和...
cas-server-webapp-session-redis-3.2.4.jar
cas服务器war包,用于搭建cas认证服务器,由于国内网的原因,下载老是超时,故此提供给,cas-server-webapp-tomcat-5.3.14
移动版游戏器不支持overflow:auto,即多余内容隐藏,并能通过手指拉动来滚动内容。目前有很多模拟这种效果的js库,如iScroll。但经项目测试,iscroll在很多浏览器中有明显的性能问题。根据isSCROLL改写的
在解压"nexus-oss-webapp-2.3.1-01-bundle"后,通常你会得到一个包含WAR文件或可执行JAR的结构。这个文件可以直接部署到支持Servlet容器(如Apache Tomcat)上,或者在某些版本中,可以使用内建的Java Web服务器直接...
Maven Archetype Webapp 1.0.jar 是一个重要的工具,它属于Java开发领域中的Maven生态系统,主要用于快速搭建Java Web应用程序的基础框架。这个压缩包文件提供了一个预定义的项目结构,使得开发者能够快速地开始一个...
项目名称 camunda BPM - webapp - webjar 项目主页 隶属组织 开源协议 仓库 Central 类库 camunda BPM - webapp - webjar 标签 javabpmnworkflowdmnbpmprocess-enginecamunda-bpm-platformcamunda-enginecmmn
cas-server-webapp-tomcat-5.3.16.war maven依赖包
在这个“Vue版的WebApp博客园移动端”项目中,开发者使用Vue.js来创建一个针对博客园的移动友好型Web应用程序。这涉及到将博客园的内容适配到手机和平板设备上,提供更好的浏览体验。 Vue.js的核心特性包括: 1. *...
cas-server-webapp-tomcat-5.2.2.war
为了下次能快速的下载这个war包,留份以备下次使用。
在本项目“Reactnews”中,我们将探讨如何使用Reactjs来开发一个新闻Web应用程序及其移动端。 1. **React组件化编程**:React的核心理念是组件化,将UI拆分成可复用的独立部分,每个部分称为组件。Reactnews项目...
CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。
【camunda-webapp-tomcat-7.2.0-alpha2.zip】这个压缩包文件是Camunda BPM平台的一个早期版本,特别的是7.2.0的Alpha2版本,它基于Tomcat应用服务器运行。Camunda BPM是一个开源的企业工作流和业务自动化平台,它...
maven-webapp-plugin-1.4.0-incubating-sources.jar
Python Flask Blog WebApp End-to-End Project With Deployment.
在描述中提到的"nexus-webapp-1.9.2.4",暗示了这个压缩包内包含的是Nexus的Web应用部分,用户可以将这个WAR文件部署到支持Servlet容器(如Apache Tomcat、Jetty等)上,从而运行Nexus服务。 关于"标签"中的"nexus...
在描述中,同样提到了“nexus-oss-webapp-1.7.2-bundle”,这表明提供的内容是一个完整的捆绑包,包含了运行Nexus OSS所需的所有组件,包括Web应用程序本身和其他必要的配置文件、库和脚本。 “nexus-oss-webapp-...
本项目“基于Vue2x全家桶制作的移动端音乐WebApp”就是一个实际的应用实例,它利用这些工具实现了与QQ音乐API的交互,构建了一个功能完善的音乐播放平台。 1. **Vue.js 2.x**:Vue的核心在于其组件化思想,使得代码...
cas-server-webapp-tomcat-5.2.1.war cas-server-webapp-tomcat-5.2.1.war