原文发表于 : http://tiny4cocoa.com 论坛
@tinyfool 是一个大胖子 是我的一个推友, 是推友, 不是基友!!!
========================================
再来谈谈HTML技术在手机开发中的应用.
作者twitter : @finscn
(注:本文中的HTML是个泛指, 指代HTML+CSS+JS三种常用的web技术)
关于HTML在手机应用中的应用,在 天使@tinyfool 的这篇帖子 <你在iOS开发中大量用Html5+js么?> 里已经有所讨论, 在这里我想谈一谈我个人的看法.
由于想说的比较多, 而且角度可能更加"非技术"一些, 所以最后还是决定单独,希望大家可以就这个问题展开进一步的讨论.
开始之前,我先开门见山的来表明一下我的态度吧: 我支持在手机应用中利用HTML技术来构建软件的UI.
还有一点要说明,我这里提到的应用并不是跑在浏览器里的B/S应用, 也不是只依赖于HTML的Web Application, 而是利用类似webview的技术开发的native应用.
通常这类应用的结构如下:
图很不专业 大家将就着看一下吧. 其中 HTML CSS JS 主要用来构建UI, 或者是简单的逻辑, 而软件的核心/底层依然仰仗于native.
图中的连线可以理解为"连线的两端互相打交道"(囧, "打交道"...好不专业的用语)
当进行跨平台移植时, 只需要替换 native和js-adapter 部分, 对其他部分只要稍做修改即可.
=================================
虽然我的观点倾向于"挺HTML"派, 但是我依然认同绝大多数"反HTML"派的观点,例如下面这些:
1 HTML依然不足够强悍.
HTML技术再强大, 性能 功能 效果也和native语言有差距,最终的产品通常不如使用纯粹的native语言开发的好.
2 HTML带来了更多的技术难题
HTML 浏览器本身的bug,js语言的过分灵活,未知的内存泄漏...这些都是潜在的问题.同时一个软件混入了太多的技术,增加的开发和维护的成本.
3 HTML主要好处也许是跨平台,但是手机应用中跨平台的意义并不大.
为了兼容各种平台,你的应用最后所能达到的效果,往往只会是所有平台中最差的.类似木桶理论.
只有针对每种平台,专门开发,充分发挥自身的特点,才有可能开发出吸引人的应用.
好的应用不应该屈服于平台的兼容问题.
4 使用HTML开发应用,破坏某平台上UI和用户体验的一致性.
=================================
下面再来说说"挺HTML"派常见的观点:
1 从纯技术的角度来讲, HTML简直就是为UI而生.
HTML本身是构建UI的非常出色的技术,它很好的实现了数据 展现 结构 行为的分离, 并且...(省去几千字,关于HTML的好处和意义被说过太多次了 不啰嗦了)
2 HTML技术如今已经很强大,效果很出色.
其实单独来看性能和效果,HTML已经不输native了,只是在过去,性能上去了,效果就要打折,效果上去了性能就要打折.不过随着现在软硬件技术的提升,HTML技术单就表现效果来讲,已经足够用.
3 HTML技术可以更好的实现跨平台.
抛开那些纯技术的问题不谈(反对观点中的 2,支持观点中的1 ,确实没什么好谈的), 可以看出两种观点主要纠结在"最终效果"和"跨平台"上.
=================================
现阶段,HTML效果肯定不如native,这个我是认同的,但是根据我的使用经验,从效果来讲,html5确实已经够用了.
换言之,目前我用过的itouch和android非游戏类应用(我有下载 和 试用软件强迫症.累计用过的非游戏类itouch软件大概有200个左右,android上的只多不少)中, 大概有一半甚至更多的软件的UI是完全可以用HTML来实现的, 例如一些个人管理类软件(日历/日记/财务/计划等等),网站客户端(微博/大众点评/街旁/人人网等等),学习类软件(英语/日语/辞典等等),还有其他一些软件甚至简单的小游戏(安卓菜市场/系统优化/音乐播放/数独/记忆力游戏等等).
下面只来说一说"如果一款软件的UI层,既可以用native语言来实现,也可以用HTML来实现时,那么要怎么选择", 那些无法或难以用HTML实现的,例如输入法 绘图软件一类的就不讨论了.
在决定一款移动设备的软件,是否使用HTML技术时, 我觉得可以从下面几点来考虑.
1 这款软件是否要真的追求在不同平台下的极致体验?
换言之,如果这款软件,在iphone(android)下,不能充分发挥iphone(android)的特性,就无法使用或难以推广吗?
我觉得,大多数情况下,答案是否定的.
2 这款软件是否需要在不同平台上 提供一致的用户体验?
我觉得 大多数情况下,答案是否定的.
对于绝大多数软件,如果它希望提供跨平台版本, 那么它肯定希望在所有平台里 用户的体验都差不多.
事实上 大多数软件也确实是这么做的, 不同平台上的差异往往只是体现在菜单设置页面等部分,而软件的主体UI其实是差不多的.
3 这款软件是否有要成为某一平台上杀手级应用的野心?
这我不好说,也许每一个软件的作者都有如此大的野心,那么也许确实需要针对某一个平台做极致的优化.
不过话说回来,杀手级应用与否 往往在创意, native与否不是关键.
4 很多软件没有跨平台,是不是跨平台就真的没有意义.
很多优秀的手机软件,目前都只有iphone版或者只有android版.
他们不跨平台的因素,我觉得主要是:
a) 技术问题. 某个人只会java或者只会objective-c, 想跨也跨不了.
b) 跨平台的成本和收益不成比例. 例如iphone的移植到android,由于android盗版严重,赚不到钱,索性就不移植了.
c) 开发者的个人喜好.
而不是"跨平台没必要".
5 这款软件的首要任务是什么
先来思考一个问题, 如果某银行要开发一款网银客户端,那么对于它来说:
a) 为现有客户快速的提供在各种移动设备上好用的网银客户端
b) 开发一个NB的网银客户端,超级好用,超级漂亮,让更多的人因为喜欢我们的网银客户端而爱上我们银行,成为我们银行的客户...
这两点哪个更重要?哪个优先级更高?
再换个角度
银行本身 是否希望自己的网银在各种移动设备上,提供统一的UI 一致的UE?
再举个例子,从企业应用来看. 现在很多公司的内部OA或管理系统也要支持移动设备,那么对于这些应用的移动客户端而言
a) 为现有员工快速的提供在各种移动设备上好用的办公系统
b) 开发一个NB的办公系统,超级好用,超级漂亮,让更多的人因为喜欢我们的办公系统而热爱我们的公司热爱工作...
这两点哪个更重要?哪个优先级更高?
也许有人会说,都重要,好的客户端可以提高用户的使用效率,为公司为用户创造无形的价值.
这种说法我认同, 但是问题是, 难道我们的应用的UI真的复杂到"必须用native语言才能开发好"吗?
用native开发好之后,在未来进行跨平台移植的时候 所耗费的成本真的不重要吗?
以上两个例子也许不恰当(银行有钱,他们完全可以找两家公司 一家开发个iphone版,一家开发一个android版...),
但是不管怎样,在设计一款软件时,非功能性上的"首要任务"是我们必须明确的一个问题.
那天和天使@tinyfool 闲聊时,他说过一段话: "你开发跨平台软件的目的,是为了吸引更多的用户, 可如果为了跨平台 而让软件的质量降低,反而会让你失去更多的用户.我们还不如针对一个平台,把一款软件做精做强."
同一天,盛大的android大拿何晓杰也说过一段话:"用HTML技术实现跨平台,对于开发者来讲是方便了一些,但是如果基于这种技术实现的跨平台方案不够好用,却会给用户带来困扰.开发人员不能为了自己方便,而让用户麻烦."
这两段话我觉得很有道理, 但是也许更适合那种"纯粹的HTML应用",而对于我在文章开头提到的那种软件架构似乎并不存在太大的问题.
而且,换个角度来想一想:
a) 如果我的软件"开发跨平台版本目的,并不是为了吸引更多的用户",而只是为了服务于现有的用户呢? (例如前面网银和企业OA软件的例子)
b) 如果用HTML来跨平台并不会降低该软件的质量,并不会给用户带来什么麻烦呢? (对于很多不是很复杂的软件,例如我前面提到的一些小软件个人管理类软件,网站客户端等等)
6 如果软件不需要跨平台, 是不是用HTML技术构建UI就完全没有必要了?
7 对于开发人员来说, 使用HTML技术太复杂了 怎么办?
这个我觉得看个人技术能力吧.用擅长并可行的技术 比用优秀但不擅长的技术更有价值.
=================================
由上面提出的问题,以及我的看法不难得我的观点: 如果我们开发的应用并不一定要"针对某一个平台做精做强","好用且跨平台"如果是我们的需求,那么利用HTML技术来构建软件的UI(前提是有这个技术能力),也许是一个不错的选择.
当然 我提出的这几个问题 未必全面未必有代表性,我的观点也很主观(我本人擅长并且喜欢HTML CSS JS这些web技术), 说的不对的地方还望大家指正.
凌乱的 不系统的说了这么多, 除了想表达一下自己的看法之外, 更多的是想听一听大家的意见和建议.
另外 ,我知道, "反问句"在很多场合下是一种很没礼貌且充满挑衅的句式,不过请相信我,本文中的反问句真的只是为了表达我的一些困惑,
或者是希望引起大家的思考. 没有丝毫的不敬. 如有冒犯,还请海涵.
最后补充一点,虽然我支持在手机应用中使用HTML技术, 但是我却不喜欢senchaTouch jqmobile 一类的移动设备UI框架.
理由很简单,他们的方向似乎有些极端.
我一直期待手机上能够出现一个类似 jquery的轻量级框架(而不是jqueryUI或者jqmobile一类的),
只需要提供构建UI所必须的基础函数,而不要强大到提供一整套的UI.
=================================
FAQ:
问 : 为什么我要叫 @tinyfool 为 天使@tinyfool ?
答 : 因为每当我沮丧 悲伤 彷徨 无助的时候, 一看到 @tinyfool的大胖脸,心情就能好起来, 于是他就成了我的 治愈系小天使.
所以 我叫他 天使@tinyfool .
【专家评论】2010年对于业内众多移动开发平台来讲可以说是争夺最为激烈的一年,也正是这一年使移动互联网进入了一个快速发展阶段。每个平台都有自己的策略和行动。而其中的六大主流平台境况不尽相同:Symbian已是明日黄花,Android势不可当,iPhone赢在高端,Windows Phone峰回路转,Ophone发力国内市场,Meego在智能手机市场不温不火。
Symbian平台在Android开源联盟日渐强大中被迫开源。Android借助联盟优势一举超越iPhone成为全球第二大手机平台。iPhone、iPod touch和iPad使用的iPhone OS操作系统更名为iOS,iPhone 4将预装iOS 4。而苹果借ipad横扫平板市场,继续引领IT行业的革命。
Ophone平台以了解国人体验为优势,坐镇中国本土市场。Meego平台虽有英特尔和诺基亚扶持,却一直难以上位。更多不甘心在移动互联网时代落伍的厂商纷纷推出自有平台,蜂拥而上,抢滩市场。这些平台的混战使得移动开发市场的乱象丛生,今天就给大家盘点一下这些平台在2010年都有哪些动作,他们未来的究竟在哪里。
Symbian平台大事记
▲Symbian开发平台
Symbian开源
今年2月,Symbian平台在Android开源联盟日渐强大中被迫开源,这可以说是今年Symbian平台最为重要的一个举措。Symbian完成了将其全部代码开源的进程,比诺基亚2008年收购Symbian时预定的今年6月开源的期限提前了4个月。
开源消息一经放出,众说纷纭:有人说开源之后大家都能积极参与对Symbian的贡献;有人说开源了可以看到Symbian的源码,方便开发者开发;还有人认为开源之后能够吸引更多的厂商回到Symbian联盟,壮大联盟的势力,巩固Symbian的地位。
不过,在Symbian开源之后,记者找到一些Symbian的开发者,他们对于Symbian平台的开源并不在意,他们认为开源与否对于开发来说不会起到太多的作用,在国内的开发大都是应用层的开发,只需要调用接口就可以,无需查看底层是如何实现的。开源对于开发者调试代码,找BUG倒是有一定的帮助。
从厂商的角度讲,时至今日,Symbian的开源也没有能够吸引更多的厂商参与。相反,三星今年没有Symbian手机计划,索尼爱立信也宣布不再生产Symbian平台手机,摩托罗拉也已经退出Symbian联盟,转投Android。更让大家不解的是,诺基亚已经关闭了Symbian的在线支持网站,就此Symbian也不再提供在线支持。种种迹象表明,只有诺基亚和几家小的手机厂商在苦苦支撑Symbian平台的发展,而诺基亚更是宣布永远不抛弃Symbian。
Symbian^3发布
Symbian^3版本的发布也算是今年Symbian平台值得关注的一个方面。相比当前Symbian OS最新版本,Symbian^3有着六方面重要的改变:1、UI以及触控体验。2、高效内存管理,支持多任务处理。3、加速2D/3D图形游戏和应用。4、全新的无线网络结构。5支持HDMI高清视频输出。6、整合音乐商店Music Store。
虽然Symbian^3相比之前做出了很大的改进,但是厂商和消费者并不满意,因为这些改进相比其他平台已经不是创意了,相反,这更能显示出Symbian是在追赶Android和iPhone等其他互联网手机平台。甚至业内的很多开发商都很客观的认为Symbian是第二代的手机操作系统,虽然能够做出智能手机,但是已经赶不上第三代的手机操作系统了,他们才是真正的移动互联网体验的手机平台。
不过由于Symbian平台手机的基数毕竟很大,所以一些开发商表示,在软件的开发上会继续做Symbian平台开发,但是会始终不渝的追随iPhone平台,而由于Android平台版本分化严重,会尝试Android平台开发。
Qt成为未来Symbian和Meego的唯一开发架构
诺基亚10月21日在官方网站宣布,将采用Qt作为未来Symbian和MeeGo平台的唯一开发架构。
诺基亚将向开发者提供更加统一和简明的开发工具,以鼓励开发者社区为Symbian和MeeGo平台开发应用。诺基亚计划将Qt作为唯一的应用开发架构,以保证应用同时与未来版本Symbian和MeeGo系统兼容。
另外,诺基亚宣布将在Symbian和MeeGo平台支持利用HTML 5发展网络内容和开发应用。为展示诺基亚对新技术的支持,诺基亚将使用Qt开发未来应用,以创造更加连贯的用户体验,推动应用和服务更好融合。
未来版本的Symbian将全部在Qt环境中开发,并与现有Symbian ^3平台兼容。这意味着,诺基亚对Symbian平台的坚定支持将不仅仅使未来Symbian用户受益,也将为现有Symbian 3用户带来系统更新和升级。
诺基亚宣布Symbian手机今后可以支持刷机升级,对于Symbian手机的拥有者来说是一件值得庆贺的事,这在一定程度上给Symbian手机市场带来了一定的活力。而且Symbian今后不再有版本的称谓,统统改为Symbian。
对于Symbian平台本身来讲,这三件事情可以说是影响Symbian平台发展的最为主要的三件大事,无论是统一开发框架对于开发者开发难度的降低,开放平台对于终端厂商的吸引,还是手机系统升级满足手机消费者的需求来说都是很重要的举措,希望Symbian能够帮助诺基亚支撑到Meego系统能够担当重任的那一刻。
今年对于Android来说是一个丰收年,无论是从市场占有率,从开发者的评价,还是厂商的追捧来看,Android无疑是今年智能手机市场的佼佼者,李开复在做移动互联网是创业者的第四个浪潮的演讲中,就频频表露了对于Android平台的看好。
▲Android联盟
Android今年的大事记
2月3日,由于Android内核代码并不只是包括一些怪异的驱动,为了获得正常工作的Android系统,需要获得Google创建的新的lock type,以及其安全模式内核系统中的hooks……Google屏蔽了大量的硬件驱动,阻止平台代码整合进main kernel tree。因此Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”(“staging tree”)上除去,从此,Android与Linux开发主流将分道扬镳。
3月8日,谷歌公司发布Android本机开发程序包(Native Developer Kit,简称NDK)第三代版本。该版本NDK的发布,使得第三方程序员可以直接研发提高Android手机图像处理能力的程序。
5月19日 ,Google I/O大会,Google发布Android系统2.2版有多项重要改进:一、Flash 10.1功能;二、网络共享功能;三、应用程序自动更新功能;四、系统性能大幅提升;五、允许应运程序存储至SD卡;六、其他人性化改善。
5月20日,Google I/O 大会第二天 Google 正式宣布了基于 Adnroid 2.1 操作系统的Google TV。Google TV 以 TV meets web,web meets TV 为口号,对 Google TV 进行了非常详细的介绍。
10月26日,Google宣布,Android移动操作系统重要里程碑:目前有十万个应用程序在Android Market上使用。
12月7日,谷歌官方终于发布Android 2.3 Gingerbread SDK(国内译作姜饼),这让传闻多时的姜饼系统终于尘埃落定,广大用户也可以静静的等待官方升级或第三方ROM进行体验。
Android获得三方面的丰收
从市场份额看,Gartner前些天发布了第三季度智能手机销量报告,Android势不可当。该报告显示Android目前在全球智能手机市场的份额为25.5%,而去年同期Android市场份额只有3.5%,成为全球第二大手机操作系统。与此同时,苹果iOS的市场份额从17.1%下降到16.6%。塞班已经降到了36.6%。
从开发者的评价来看,许多开发者认为Android平台入门非常的简单,只要具备一定的开发基础,想转行Android平台开发是非常容易的事情;Android平台的开发资料非常的丰富,对于入门级的开发者来说已经足够了;Android是开源的,底层的代码许多的开发者都能够看到;国内对Android平台支持的公司非常多,可以参加很多的Android开发活动;同样的项目,Android平台的开发周期是Symbian平台的四分之一。
从厂商那里看,很多厂商都可以基于Android平台实现个性化的定制。在开源架构下,底层的源代码都可以自己替换,构建自己的开发框架,实现自己的个性化定制。因此众多基于Android平台的手机厂商才能够在UI操作方面都有自己的创意,避免市面上同质化产品的出现,满足消费者个性化需求。
今年的热门开发平台从场面上看,Android无论是在出货量方面还是在市场份额方面都已经盖过了iPhone的风头。但是,iPhone在人们心中的形象和地位已经无法撼动:iPhone是高端人士使用的手机。高端是iPhone平台的市场价值所在,作为身份的象征也是为什么iPhone和ipad为什么需要排队购买的最大原因。
▲iPhone
iPhone平台的大事记
5月5日,苹果更新了iPhone OS 4.0操作系统Beta 3,并开放了相应版本的SDK开发工具包的下载。相比之前的Beta 2,新版测试系统更加稳定和流畅,不能保存照片和截图的BUG已经修复。
从设备体验上讲,躺在床上使用iPhone或者iPod Touch会因为经常翻身而导致屏幕方向不停的转动,新版系统中增加了屏幕锁功能,按动之后将会锁定屏幕方向。另外在屏幕锁的左边增加了音乐控制按钮,这样就可以不用退出应用程序来进行音乐播放控制了。
6月8日,苹果全球开发者大会(WWDC)在美国旧金山Moscone Center开幕,苹果CEO斯蒂夫·乔布斯(Steve Jobs)在主题演讲中正式发布了苹果iPhone的第四代产品——iPhone 4,和之前的传言相同,但型号有些出乎外界的意料。
6月8日,斯蒂夫·乔布斯宣布iPhone、iPod touch和iPad使用的iPhone OS操作系统更名为iOS,iPhone 4将预装iOS 4。
乔老爷的这个宣布表示iOS成为苹果移动设备统一的操作系统。从开发者那里了解到,为iPhone开发的应用程序可以完全跑在其他的两个设备上,除了图像的尺寸需要另外做一套之外,不存在兼容性的问题,极大的加快了开发的效率,缩短了上市的时间,降低了开发成本。
6月12日,苹果开始接受iOS 4.0应用程序,开发人员可以提交为iOS 4.0开发的应用程序并接受苹果审核。
6月21日,发布了针对旧款iPhone、iPod touch的iOS 4免费升级,iOS无法在第一代iPhone或iPod touch上运行,而且在iPhone 3G和第二代iPod touch上也会缺失部分功能。
11月22日,苹果在官网正式公布了iOS 4.2系统,新版系统适用于iPhone手机、iPad以及iPod Touch。安装iOS 4.2系统的iPad将获得多任务处理、文件夹管理程序等之前iPhone 4最先具有的功能。
iOS赢在高端
苹果在产品发布以及操作系统版本发布方面一直非常的谨慎,虽然今年也发生了天线门事件,但是这丝毫不影响iPhone在消费者眼中的形象。前一段时间和一些开发商聊天的时候,他们一致认为,做移动应用一定要为iOS平台开发,理由很简单,苹果的移动设备是高端产品,只要能够做出符合那些高端人士需求的应用,那么他们是非常愿意付费的。而且苹果的已经有了一个非常好的运营模式,围绕着苹果平台的消费者都有很好的付费购买习惯。虽然短期内Symbian仍然是老大,可是iPhone在高端产品中的位置是其他平台所不能比拟的。
苹果产品在工艺设计方面讲究精益求精,因此很多的开发者在开发iOS应用的时候会在图片的效果,用户的体验方面会下非常大的功夫,哪怕是一个很小的细节问题,都要进行妥当的处理,将自己的产品做到极致,符合高端产品的要求。
今年的苹果iOS系统虽然在场面上没有Android那么抢眼,但是苹果贵在准确定位了自己的发展方向,继续走高端,引领电子消费市场的发展。而iOS平台的开发者们也都自信的认为,自己开发的产品在用户体验方面是其他平台不可比拟的。
今年对于微软移动部门来说是最为煎熬的一年。Windows Mobile6.5难堪大用,饱受业界的诟病,同时微软宣布不再更新Windows Mobile版本的更新,市场份额急速下跌。然而彻底更改架构的Windows Phone7也几经跳票让开发者、消费者以及厂商非常的失望。微软最终拖到10月11日晚上21:40分,正式召开新闻发布会,推出新版手机操作系统Windows Phone7。虽然今年微软移动开发平台在版本更新方面的动作不大,但是也给大家简单的分享一下。
▲Windows Phone7
微软移动大事记
1月24日,微软发布了Windows Mobile 6.5.3的专业版及标准版软件开发工具包(SDK),提供了文件、样本代码、头文件和库文件、仿真镜像和工具,开发人员可以使用Visual Studio为Windows Mobile 6.5开发应用程序。
2月15日,微软在今年举办的巴塞罗那移动世界大会上宣布了Windows Phone 7平台,准备在移动网络市场上放手一搏。从当时看,微软对Windows Mobile进行了彻底的改头换面,包括底层的架构。Windows Phone 7的一个新的看点就是在这个新的操作系统上将不再运行本地应用。
3月15日,微软推出了Windows Phone 7 Series软件开发工具,让开发人员为这个新的操作系统创建应用程序和游戏。
3月15日,微软在举办的MIX10大会上正式推出了Windows Phone 7 Series在线应用商店Windows Phone Marketplace,用户可以使用信用卡购买自己需要的应用程序。新的应用商店将支持运营商计费和广告商投放手机广告,另外还将支持先试后买服务。
6月18日,对于Windows Phone 7的开发者来说,一个重大的好消息就是针对Windows Phone 7的Marketplace将允许你将程序分发给特定的人群,从而支持对你的程序进行小范围的beta测试。
10月11日晚上21:40分正式召开新闻发布会,推出新版手机操作系统Windows Phone7。
个人认为:对于微软来说,未来的Windows Phone 7平台在移动互联网市场应该更加明确自己的定位。iPhone作为一个全封闭系统,软件硬件统一管理,定位高端的策略会使得iPhone在高端方面的地位更加稳固。Android依靠的是开源,凝聚了开放联盟的力量,使得自己在移动互联网市场上覆盖每一个层级,每一个角落。而微软恰恰是在开源和封闭之间,封闭程度不像iPhone,开放程度不像Android。
不过,Windows Phone是微软云加端战略的重要组成部分,而Windows Phone7平台在云计算方面会比其他平台略有优势。而且微软的三屏战略会继续延续下去,开放了自己的游戏社区和开发平台XNA给开发者,推出了更加简单的应用开发工具给开发者,这些都会吸引众多的开发者加入到微软Windows Phone7的开发中来。
前不久刚刚结束的微软Teched大会上,开发者排队领开发工具光盘的场景随处可见,足以见得开发者对于Windows Phone7的开发还是很感兴趣的。
中国移动Ophone平台作为中国的一款自己的开源智能手机操作系统,在大家的质疑声中走过了2010年。虽然之前的版本在升级和兼容性方面饱受争议,但是新版本的Ophone会100%的兼容Android系统。中国移动为国内厂商做智能手机操作系统开了先河,也是准确定位中国市场,把握用户习惯的最好的本土开发平台。下面给大家简单介绍一下Ophone平台2010年在技术上的改进。
▲Ophone
Ophone平台版本升级
4月23日,OPhone将跳过1.6系统版本直接至2.0。研究院方面透露,目前测试的即可OMS1.6系统的手机由于改进不大,预计将推迟发布,全部改用2.0固件。
6月25日,倍受业内瞩目的OPhone 2.0智能终端操作系统进行了全方位升级,仅在UI/UE上就有1000多项改进、300项提升以及10几项新增功能。
中国移动透露,OPhone2.5版本平台将于本月底推出。这款平台对游戏防盗版技术做了支援,对游戏开发者来说是利好的。据了解,中国移动明年将会推基于OPhone3.0甚至3.0X平台的低价高性能终端。其最大的特点是支持裸眼3D技术,同时拥有先进的传感器技术。
OPhone2.5以及OPhone3.0的细节
OPhone2.5支持Ophone2.0,而且加入一些新的东西。中国移动OMS策略和OPhone策略是支持国际开源平台,使大家在Android上开发的应用同样可以在OPhone上使用。
目前还有一些技术上不足之处,一些中国人喜欢的,产业界希望看到,特别是运营商看到的一些技术上差异都会加进去。第一、在OPhone2.5里面加入3D的支持。把3D支持放进去以后,对开发者使用三维UI,或者是三维的一些核心应用开发会有很大的帮助。
另外加入一些API可以支持中文语音识别和输入同时,也准备推出中文输出,也可以调用一些API把你的内容读出来,还加入了一些UI支持,来支持水平操作的UI。
Ophone3.0现在瞄准是下一代Android平台。1、加入强大游戏引擎功能,有一些内置游戏引擎可以让未来三维游戏变得更加容易。2、加入比较强大的游戏反盗版的设施。比如现在开发一个应用,不管是Android平台应用还是OPhone应用,如果被别人破解了放到网上,那么开发者的利润就没有了,别人就可以免费下载,这对任何一个平台来说都是一个很大危机。
OPhone未来的方向
第一、在传感器方面,会把传感器逐渐做成绝对坐标传感器。第二、游戏引擎,同时也希望能够通过更多硬件支撑,现在很多支撑可以产生更多三维效果。在三维图屏显示时,用魔眼不需要戴眼三维显示技术,目前已经有效地进行商业发展。
Ophone的发展状态
目前,OPhone合作伙伴超过50家,其中包括芯片厂商、终端厂商、应用开发者等终端制造产业链的各个环节共同推进OPhone的发展。OPhone SDK 和SDN 已经开发完成并上线,SDN 注册开发者已经超过6.4万,OPhone应用在MM平台上线超过4100款。
在安全的机制方面,OPhone平台未来将把内容保护以及防黑客机制规划进去。
尽管,中国移动声称3G网络并不比竞争对手3G网络差,有些性能和指标甚至强于其他运营商的3G网络,但相关人士坦率指出网络利用率没有大幅度提升,问题还在于TD-SCDMA终端,业内人士对TD也保持着乐观态度,它是一个比较年轻产业,需要时间逐步完善。明年的TD网络创新技术的应用加之终端的完善将使得中国移动打造出真正的移动互联网平台——开放的OPhone+开放的MM+智能管道。
开发者心声
记者从一位Ophone开发者那里了解到,他作为一位开发者,不会把时间投入一个看不到希望或遥遥无期的平台上,而是更愿意把精力花费在Android或苹果iPhone平台上,虽然门槛高但因此收获也高。因此他认为Ophone没软件硬件本钱,难发展,最关键是没几个用户去使用。因此,Ophone在发展的同时应该能够更加关注开发者的需求,从而为Ophone平台的良好发展奠定基础。
Meego版本升级回顾
MeeGo项目自2010年2月首次亮相以来稳步推进,平均半年左右进行一次重要核心发布的节奏:2010年5月底MeeGo 1.0核心软件平台和上网本用户体验版正式发布;10月28日,MeeGo 1.1版正式发布,包含了一系列重要的技术改进。
▲Meego系统
MeeGo 1.1版本为开发人员和设备供应商针对各种类别的设备开发软件提供了基线软件和开发工具包,包括面向基于英特尔®凌动™平台,并支持触摸屏的设备,如平板电脑、车载信息系统等。同时,MeeGo规范和工具可帮助操作系统供应商开发符合MeeGo规范的商业产品,从而保持基于MeeGo API开发的应用程序的广泛兼容性。预计下一个版本即MeeGo 1.2版计划将于2011年4月前后推出。
Meego在智能手机市场不温不火
纵观整个智能手机市场,现在要想在这个市场立足,仅仅依靠自己的硬件优势和价格优势已经不现实了,诺基亚就是很好的见证。无论是用户积累还是价格,诺基亚的优势都很明显,可是事实上,诺基亚已经在流血,无法阻挡Android平台和iPhone平台的软硬结合的新模式。
因此,这个基于Linux的MeeGo是一个相对较新系统平台,想要成为主流,必须要硬件和软件结合才能有出路。而事实上,第一款运行MeeGo的手机很有可能就是诺基亚尚未发布的N9,之前诺基亚曾表示将会在2010年底发布MeeGo系统旗舰手机,但是随后的高层更迭让发布计划推迟到了2011年,至少在2011年6月我们才能看到MeeGo的旗舰手机。
这对于未来在高端押宝Meego的诺基亚来讲会很悲惨,除非诺基亚主张的手机中将会有更少或者没有物理按键的设计能够博得广大用户的青睐,否则,在现有的操作体验之下,Meego很难有机会和iPhone以及Android展开竞争。
在未来的至少半年的时间里,诺基亚在硬件方面已经落后了很大一截。试想一下,没有硬件设备,跑在硬件设备上的软件又从何而来?尽管Meego平台可以将Qt、Moblin和Maemo平台上的应用直接编到Meego平台上,可以由于这三个平台本身在软件方面方面就没有太多的数量,因此,Meego平台在最吸引消费者的软件方面又落后了一大截。
对于主导Meego平台智能手机的诺基亚来讲,现在要做的首要任务就是吸引开发者的加入,从现在诺基亚的开发者大赛以及OVI商店的1欧元注册来看,诺基亚已经在下大力气恶补在软件方面的缺失了。
Meego技术特点
作为面向“互联计算”的开放式操作系统平台,MeeGo由诺基亚和英特尔公司共同支持、Linux基金会管理。它针对上网本、平板电脑、手持设备、车载信息系统等,为用户提供丰富的高品质移动互联体验。对于开发者而言,MeeGo支持不同硬件架构的最广泛设备种类,只需编写一次程序便可以让应用程序运行于不同的设备平台上,从而帮助设备开发商有效地节省开发成本、降低市场风险。
英特尔亚太研发有限公司总经理兼英特尔中国软件与服务事业部总经理梁兆柱表示,英特尔会为MeeGo在Atom平台上进行优化,也支持其他厂家和开发人员为其他硬件或软件平台优化MeeGo。对于Meego会不会出现类似Android设备操作界面不统一给用户带来困扰,梁兆柱表示,Meego在不同的移动智能设备应该需要不同的界面。
Meego明年的计划
在英特尔看来,MeeGo只是面向硬件厂商的一套全新的平台,任何感兴趣的朋友都可以针对MeeGo优化自己的产品,这也就解释了为什么在MeeGo正式发布的初期,手机相关的产品并不是很多。
英特尔官方表示,MeeGo 1.1并不是很适合植入手机,或许2011年4月份升级到1.2版本之后,对手机厂商来说更具吸引力,600MHz主频的处理器(ARM V7或X86结构)+512MB的RAM的门槛并不高。
2011年第一季度Tegra 2平台也将登场,这样的最低配置已经算很入门了。
MeeGo 1.2只支持GSM网络,只有等到升级至1.3版本后,才可能出现CDMA制式的产品,时间点上则要等到2012年的10月份,LTE等4G网络就更是遥遥无期了。
接着上一篇的moquette-mqtt 的使用之broker启动之后,我们需要启动moquette-mqtt 的服务端发布消息。
在moquette-mqtt 的mqtt-client中三种方式实现发布消息的方式:
1.采用阻塞式的连接的(BlockingConnection)
2.采用回调式的连接 (CallbackConnection)
3.采用Future样式的连接(FutureConnection)
本文采用阻塞式作为实验对象。
MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。
这些特点使它适用于受限环境。例如,但不仅限于此:
网络代价昂贵,带宽低、不可靠。
在嵌入设备中运行,处理器和内存资源有限。
该协议的特点有:
使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
对负载内容屏蔽的消息传输。
使用 TCP/IP 提供网络连接。
有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
package com.etrip.mqtt; import java.net.URISyntaxException; import org.fusesource.mqtt.client.BlockingConnection; import org.fusesource.mqtt.client.MQTT; import org.fusesource.mqtt.client.QoS; import org.fusesource.mqtt.client.Topic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * * * MQTT moquette 的Server 段用于发布主题,并发布主题信息 * * 采用阻塞式 发布主题 * * @author longgangbai */ public class MQTTServer { private static final Logger LOG = LoggerFactory.getLogger(MQTTServer.class); private final static String CONNECTION_STRING = "tcp://192.168.208.46:1883"; private final static boolean CLEAN_START = true; private final static short KEEP_ALIVE = 30;// 低耗网络,但是又需要及时获取数据,心跳30s public static Topic[] topics = { new Topic("china/beijing", QoS.EXACTLY_ONCE), new Topic("china/tianjin", QoS.AT_LEAST_ONCE), new Topic("china/henan", QoS.AT_MOST_ONCE)}; public final static long RECONNECTION_ATTEMPT_MAX=6; public final static long RECONNECTION_DELAY=2000; public final static int SEND_BUFFER_SIZE=2*1024*1024;//发送最大缓冲为2M public static void main(String[] args) { MQTT mqtt = new MQTT(); try { //设置服务端的ip mqtt.setHost(CONNECTION_STRING); //连接前清空会话信息 mqtt.setCleanSession(CLEAN_START); //设置重新连接的次数 mqtt.setReconnectAttemptsMax(RECONNECTION_ATTEMPT_MAX); //设置重连的间隔时间 mqtt.setReconnectDelay(RECONNECTION_DELAY); //设置心跳时间 mqtt.setKeepAlive(KEEP_ALIVE); //设置缓冲的大小 mqtt.setSendBufferSize(SEND_BUFFER_SIZE); //创建连接 BlockingConnection connection = mqtt.blockingConnection(); //开始连接 connection.connect(); try { int count=0; while(true){ count++; //订阅的主题 String topic="china/beijing"; //主题的内容 String message="hello "+count+"chinese people !"; connection.publish(topic, message.getBytes(), QoS.AT_LEAST_ONCE, false); LOG.info("MQTTServer Message Topic="+topic+" Content :"+message); Thread.sleep(2000); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
下面一篇是关于moquette-mqtt客户端接收信息的文章:
MQTT的学习研究(四)moquette-mqtt 的使用之mqtt客户端订阅并接收主题信息
永久链接: http://topmanopensource.iteye.com/blog/1699408