《InfoQ访谈:用HTML5开发移动Web应用程序》阅读笔记

Dylan Schiemann是Dojo基金会的共同创立者。光凭这一点,使我觉得他就是Web开发的引领者,尤其他所提倡Open Web的价值观并不一定为商业团体所接受。虽然很难中立,但也可以作为预测发展道路的一点参考。我整理了采访文章的几点如下。文章地址:http://www.infoq.com/interviews/mobile-web-h5-js

一、陈旧的技术。
一开始,移动设备从无到有,其过程之始端自然简陋:黑白的荧屏,用键盘控制,9,600bps的连接速度。在此环境下所谓WAP/WML上网只是种种功能中其中可选一项,消费者也认为可有可无,尽管不是说鸡肋就是得排斥的意思,毕竟也是新事物,或者认为一种装饰品吧,因而也谈不上“用户体验”。

在过去十数年发展的无线冲浪过程中,使用者与开发者虽然认识到这仅仅是一个开始,尚未成熟,但随着消费水平提升和用户需求的爆炸性增长,这样的移动设备已经早已不能满足新的调整,随之而来应当是技术升级。各厂商的设计者如果还停留在HTML3/4的版本水平(WML实际只是基于HTML的扩展),只能解析WML/HTML,不支持脚本或提供的是缓慢的脚本引擎,这样则不是消费者甚至一般消费者眼中可接纳的机型,连山寨的机型也不会如此吧。

个人感觉,这里还没谈到终端与网关的连接手段,当然那是另一层面的内容,与硬件因素关联性较大,属于GPRS/EDGE/CDMA等方面的内容。

二、开发人员的学习曲线。

市场是有的也是庞大的,那么开发人员也应该是充沛量足的,开发环境和条件应该不是过于阳春而让开发者望而却步。抛开J2ME/C/Flash Lite不谈,因为它们与桌面程序的API差别较大,只剩下语法相同,不足以吸引原先熟悉桌面程序开发的那一帮人。这一帮人就是重要的开发力量,试问,谁不是从学习Desktop的API开始的?再试问,设不理会Desktop的与否,如果我用我已经熟悉的技术,再能够在另外一片天地发展出新的业务,重新受用,岂不顺哉?反过来说,如果用学习Objective C、C、Java、Windows
Moblie才能开发手机程序,对于许多新入行的开发者,经验还不够,开发效率自然差一大截。

当然,上述只是开发者个人本身的主观意愿,而客观的条件是怎么样的?答案是“拥抱标准”,标准是不是就是“最客观”的呢?呵呵,见仁见智……那是什么标准?Open Web standards。具体说,所面对的API就是浏览器,手机版的浏览器,例如WebKit 、Mozilla的浏览器、 Opera的mobile浏览器甚至微软的也会有……等等。HTML5首先变化的是一批新的tag,这些tag对于移动设备还是普通浏览器的意义与价值都是一样的。个人认为,以Web三层设计划分,HTML作为表示层其扮演的角色不变,但新的HTML5便会塞进不知道是不是“表示层”的功能。另外,很重要的一点,也是不断强调的,就是作为标准的实现版本,其跨平台、write
codes once run everywhere诸如这类特性应该是毫无疑问地支持,否则标准将无意义。

“拥抱标准”就可以把原来Web开发的技术及经验转移到移动平台,难道不是很诱人吗?可是,不同机型有不同的硬件版本,不同的软件版本,不同的平台,代码跑起来是否一切都那么美好?

就拿WebKit来说,不同的厂家可能在Webkit的基础上增加或删减某些功能,导致虽然是Webkit做出来的浏览器,却又不一定让您的技术跑得过,更不要说“放之四海皆准”了。这样的话,就需要一个解决各个移动平台的JavaScript API。考虑不同机型的差异,的确就像试图解决跨浏览器问题那样的头痛,好在只要让API解决,不用写检测哪个哪个浏览器if-else代码,不然真的很痛苦。当然,本来就不支持的技术开发人员就要清楚是哪些了,例如支持不支持SVG、支持不支持canvas、支持不支持CSS3等的细节。另外,使用服务端解决兼容问题也是一个解决思路,也就是动态生成针对浏览器特定代码,其好处是优化程度会很高,代码冗余率相对低。

针对移动设备的存储方案,一个是分布式的远程存储,另外一个是本机存储方案。Dylan认为无论那种方案都是很快可成熟的技术。

三、关于HTML5的来临

对于时下热门的话题,Flash vs HTML5,Dylan提出了自己的看法,他认为Flash有洗心革面式的改变才可以在Web世界中谋得生存(参见Dylan博文《Can Flash thrive》),并且他从纯技术角度出发,质疑Adobe为什么不干脆在Flex中使用HTML,而是沿用自成一套的系统仿佛在远离标准。

HTML5把过去十年Web标准发展积累下来的宝贵经验财富作一次升华,技术上是如此,然而市场究竟接不接受就是另外一回事。事实上HTML4/4.2已经是很陈旧的技术,这么多年来一次升级过都没有。

HTML5对移动设备而言有什么现实意义呢?其中一个比较实用的是CSS特效、动画和变形特效的支持,让“页面”更活泼,还有可大大减少网络延迟的Web Sockets,属于原生的Socket方案。实时的网络聊天就很需要Web Sockets了。

有时候改革不能一蹴而就,换句话说,该如何渐进增强?许多移动浏览器还是不兼容的HTML5,可否做到一些技术能够使用其他手段达到HTML5的功能?如果是表单Form或一些语义的新元素,就比较好办,可以用JavaScript模拟HTML5的特性,如果涉及视频和音频,还是无奈地使用Flash来搞掂。既然谈到Vidoe/Audio,就不能不谈到当下的codec之争(Flash/H264 raw/Ogg Theora),各家有各家的道理,看来还是莫衷一是。

关于开发工具的支持。开发工具应当不单单包含了HTML5如何支持的部分,更重要的是整合开发语言的支持。我们需要一个成熟的代码编辑环境,成熟的模拟器,成熟的IDE。

四、需要注意的一些问题

一个项目,如果要把支持的平台的列表从PC、iPad/iPhone到Android都纳入其中,有什么经验可借鉴呢?Dylan回答说,应该明确各平台的差异制定需求。Dylan本身是Web起家的专业人士,他首先以Web与移动平台作比较,自己熟悉的内容作为切入点。他说到,一些Web中考虑的知识点在移动设备中却可以忽略,例如拖动(DD);一些是移动设备经常使用到的而Web上面却待遇不同,例如本地存储访问、摄像头控制、GPS访问等等。最后Dylan还谈到像3D渲染此类的技术——无论Web还是移动设备在现阶段中不可能的、或者不轻易达到的技术。

相关项目:PhoneGap/EventNinja(by Uxebu)。

时间: 2024-09-20 04:23:39

《InfoQ访谈:用HTML5开发移动Web应用程序》阅读笔记的相关文章

《Spring Boot Cookbook》阅读笔记

声明1:该系列教程已经在极客学院上线:spring-boot cookbook 声明2:本博客文章需征得作者同意后方可转载 作为后端开发,Spring Boot值得拥有 从技术雷达 : 关于技术趋势的分析报告和Profile of successful Java developer in 2016这两篇文章中都可以看出,作为Java开发人员,Spring Boot已经成为你不得不尽快补充的一项技能. 最近一个月一直在学习Spring Boot框架,在阅读<Spring Boot Cookbook

Spring Boot的自动配置、Command-line Runner

接下来关于SpringBoot的一系列文章和例子,都来自<Spring Boot Cookbook>这本书,本文的主要内容是start.spring.io的使用.Spring Boot的自动配置以及CommandRunner的角色和应用场景. 1. start.spring.io的使用 首先带你浏览http://start.spring.io/,在这个网址中有一些Spring Boot提供的组件,然后会给你展示如何让你的Spring工程变得"Bootiful",我称之为&q

Spring Boot 探索系列 - 自动化配置篇

26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging for all internal logging, but leaves the underlying log implementation open. Default configurations are provided for Java Util Logging,Log4J, Log4J2 an

Spring Boot特性

1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication.run 这个静态方法: public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args); } 运行该类会有如下输出: . ____ _ __ _ _ /\

Spring Boot 整合 Thymeleaf 完整 Web 案例

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! Thymeleaf 是一种模板语言.那模板语言或模板引擎是什么?常见的模板语言都包含以下几个概念:数据(Data).模板(Template).模板引擎(Template Engine)和结果文档(Result Documents). 数据 数据是信息的表现形式和载体,可以是符号.文字.数字.语音.图像.视频等.数据和信息是不可分离的,数据是信息的表达,信息是数据的内涵.数据本身没有意义,数据只

《Spring Boot官方指南》(二)入门(二)

3.2.5 命令行补全工具 Spring Boot CLI附带了一些脚本,这些脚本为BASH 和zsh提供了命令行补全功能.在任何shell里面都可以source到这些脚本(也叫spring),也可以初始化到个人或者系统级别的命令行工具里面.在Debian系统里面,系统级别的脚本在这个路径:/shell-completion/bash,shell程序启动以后,这里面的所有脚本都可以执行.例如,您已经使用SDKMAN!安装了这些脚本,为了手动执行他们,可以这样操作: $ . ~/.sdkman/c

深入学习微框架:Spring Boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以 及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 多年以来,Spring IO平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理.在去年的SpringOne 2GX会议上,Pivotal的CTO Adrian Co

Spring Boot中集成Spring Security 专题

if语句中条件判断就是检查当前的url请求是否是logout-url的配置值,接下来,获取用户的authentication,并循环调用处理器链中各个处理器的logout()函数,前面在parse阶段说过,处理器链中有两个实例,处理会话的SecurityContextLogoutHandler及remember-me服务,我们来一一看看它们的logout函数实现: 2.1.0 SecurityContextLogoutHandler public void logout(HttpServletR

Spring boot 通用配置文件模板

Spring boot 通用配置文件模板   001 # ===================================================================002 # COMMON SPRING BOOT PROPERTIES003 #004 # This sample file is provided as a guideline. Do NOT copy it in its005 # entirety to your own application.  

Spring Boot with Redis

Spring Boot简介 Spring Boot是为了简化Spring开发而生,从Spring 3.x开始,Spring社区的发展方向就是弱化xml配置文件而加大注解的戏份.最近召开的SpringOne2GX2015大会上显示:Spring Boot已经是Spring社区中增长最迅速的框架,前三名是:Spring Framework,Spring Boot和Spring Security,这个应该是未来的趋势. 我学习Spring Boot,是因为通过cli工具,spring boot开始往f