故事的开始
“一次编码,处处运行” 永远是程序员们的理想乡。二十年前 Java 正是举着这面大旗登场,击败了众多竞争对手。但是时至今日,事实已经证明了 Java 笨重的体型和缓慢的发展显然已经很难再抓住这个时代快速跃动的脚步。在新时代的移动大潮下,一个应用想要取胜,完美的使用体验可以说必不可少。使用 native 的方式固然对提升用户体验很有帮助,但是移动的现状是必须针对不同平台 (至少是 iOS 和 Android) 进行开发。这对于开发来说妥妥的是隐患和额外的负担:我们不仅需要在不同的项目间努力用不同的语言实现同样代码的同步,还要承担由此带来的后续维护任务。如果仅只限制在 iOS 和 Android 的话还行,但是如果还要继续向 Windows Phone 等平台拓展的话,所需要付出的代价和工数将几何级增长,这显然是难以接受的。于是,一个其实一直断断续续被提及但是从没有占据过统治地位的概念又一次走进了移动开发者们的视野,那就是跨平台开发。
成本低、周期短,易于上手,不用重新设计,种种好处让跨平台开发风头无量,也让诸多跨平台开发工具趁势崛起。尤以HTML/JS/CSS开发为众,比如PhoneGap、Sencha Touch等,却也包含使用其他语言进行开发的工具,比如Xamarin,使用C#,就可以开发出能运行于各大主流移动平台之上的原生App。
跨平台技术盘点
- Web 流:也被称为 Hybrid 技术,它基于 Web 相关技术来实现界面及功能(html、css、js)
- 代码转换流:将某个语言转成 Objective-C、Java 或 C#,然后使用不同平台下的官方工具来开发
- 编译流:将某个语言编译为二进制文件,生成动态库或打包成 apk/ipa/xap 文件
- 虚拟机流:通过将某个语言的虚拟机移植到不同平台上来运行
native app(原生应用) 、 hybrid app (混合应用)、Web App(网页应用)
比较项目 Web App(网页应用) Hybrid App(混合应用) Native App(原生应用) 开发成本 低 中 高 维护更新 简单 简单 复杂 体验 差 优 优 Store或market认可 不认可 认可 认可 安装 不需要 需要 需要 跨平台 优 优 差
跨平台工具
- PhoneGap跨平台
说到跨平台开发工具,很多人首先会想到PhoneGap。这样一款能够让开发者使用HTML、JS、CSS来开发跨平台移动App的开源免费框架,一直以来都深受开发者喜爱,从iOS、Android、BB10、Windows Phone到Amazon Fire OS、Tizen等,各大主流移动平台一应俱全,还能让开发者充分利用地理位置、加速器、联系人、声音等手机核心功能。
此前,在Native与Web谁主未来的大论毫无消停之时,许多人认为,类PhoneGap的应用开发框架天然优势在于支持跨平台,后期可扩展性较强,开发周期很短,熟悉Web技术的开发者可轻松上手,缺点在于性能上的确不如Native,后期还需针对各个版本分别优化开发等。如今,Hybrid App已然当家做主,PhoneGap在性能与平台特性支持上也有着极大的提高和改善,大有赶超Native之势。
html(Hypertext Mark-up Language)—— 结构
Css(Cascading Style Sheets)—— 样式
Js(JavaScript)—— 行为
……