- Blog
- JIL Mobile Widget: 我的第一堂课
JIL Mobile Widget: 我的第一堂课
OPhone平台开发, 2010-01-05 16:44:44
Tags : Widget 云端
前言
手机平台的技术发展与趋势,「从本机(Native Application)走向云端(Cloud Computing)应用」,是一个不能不谈的发展方向。在云端的架构之下,应用程序都可以由单机形式转变为Web Application。因为运算不在手机端了,是在服务器端;所以,「如果要你撰写一个能秀出服务器端图片的软件,你要怎么做?」
软件构思
传统的应用开发做法,会以单机应用做为思考出发点。一开始,我想:「利用ImageView组件,搭配Socket来连接服务器。」不过,经过一番研究后,想到:「 为何不想想HTML技术,这种方式不是会比传统的UI组件搭配运算代码方式更省力吗。」
图一:一开始的架构--ImageView搭配Socket
我又想:「意思是做成HTML文件,利用手机上的Browser来观看图片吗。这跟网页制作有什么不同。」
用Browser来观看HTML文件,在手机上需要有Browser才行。但Browser是一个完整的应用软件,不易于UI整合;因此,我们需要的是类似ImageView这种组件,但又要能完善支持Web技术,因为这样的组件才能嵌入到UI里,例如与Home Screen做整合,才能提供更佳的使用性。
JIL Mobile Widget带来新形态的软件开发模式
我的想法是:一个能完全支持HTML/CSS/JavsScript的「Web Widget」具备Browser的功能,又能以组件(Widget)的形式与手机UI结合。真有这种技术吗?有Browser的「功能」,又可以如组件(Widget)般嵌入UI!
OPhone的JIL Mobile Widget技术正是一个代表。

图二:采用Web导向方式
OPhone Platform的特色:「加入了由JIL所开发的Mobile Widget。」Mobile Widget提供了相当强大的HTML/CSS/JavaScript功能,特别是WDT(OPhone SDK的Eclipse开发插件)的配合,已经能实现一些「采用HTML制作应用软件、整合云端服务」的理想了。JIL与WDT是未来3G软件开发新模式的示范,值得我们去留意这个方向。
JIL Mobile Widget的应用开发模式
典型的Android应用程序采用Java语言开发,大多数运算被实作在本机上,意谓著这些应用程序都使用手持设备的运算(即Processor)资源;这类的应用程序就是我们经常看见的APK组件。JIL Mobile Widget与APK应用程序很不一样,整个应用就是一套网页,并被包装成WGT组件后安装到手机上。
1. 创建HelloWidget专案
利用Eclipse的New Widget Project功能,立即创建一份基本的JIL Mobile Widget应用,这个应用包含下列文件:
•HelloWidget.html - 主画面文件
•HelloWidget.js - JavaScript代码、由HelloWidget引入使用
•HelloWidget.css - 使用CSS做UI排版(Layout)
•Default.png - 背景图
•Icon.png - 图示
•config.xml - Mobile Widget的设置文件
这些都是WDT在创建Mobile Widget项目时自动产生的文件。有了WDT的协助,简单的Mobile Widget应用可以很快被创建。经过一番功夫,终于学习到OPhone Platform最精采的一项技术。这时,终於可以继续开发我的应用了。
2. 修改HTML (UI)
我首先想到的是:「更换HTML文件的背景图」。这个工作难不倒有网页制作功底的我,所以我很快就制作了一张全新的图档,并取代原来的Default.png。很快地,我了解到Mobile Widget是怎么一会事了。因为这和我过去在制作网页时,所使用的观念相同。
制作JavaScript功能
我继续制作著秀图软件。制作一个秀图软件倒底能有多简单?
制作秀图软件
我想要用JavaScript来展现照片的动态效果,所以很快地想到jQuery这个JavaScript库。 jQuery是一个相当受到欢迎的JavaScript库,jQuery改变我们撰写JavaScript的方式,现在,我们把它放到OPhone Platform里一起使用。也就是,如果我们能善用现有的Web Application技术,「制作联网的OPhone软件就是这么简单。」这是一个很棒的火花,也是移动技术的趋势。
於是我先将jQuery加了进来,然后修改HelloWidget.html,加入:
<script type="text/javascript" src="jquery.min.js"></script>
然后又想到,「照片的画面编排呢?要怎么做?」因为用了Mobile Widget技术,所以当然是使用CSS来做UI排版。於是我又编写了一段CSS代码,同时用来取代自动创建的HelloWidget.css,并存成slideshow.css如下:
#home_slideshow {
width: 180px;
}
#home_slideshow img {
position:absolute;
z-index:8;
opacity:0.0;
}
#home_slideshow img.active {
z-index:10;
opacity:1.0;
}
#home_slideshow img.last-active {
z-index:9;
opacity:0.0;
}
依软件架构的要求,先将3张图片放到我的Web空间里;然后加上了一段HTML代码到HelloWidget.html以秀出图片,并使用上述的CSS做UI排版:
<div id="home_slideshow"> <img src="http://www.jollen.org/consulting/1.jpg" width="240" alt="" class="active" /> <img src="http://www.jollen.org/consulting/ 2.jpg" width="240" alt="" /> <img src="http://www.jollen.org/consulting/ 3.jpg" width="240" alt="" /> </div>
搭配JavaScript可以做出什么效果呢?我决定展现一下过去设计JavaScript的功力,制作了一段代码,可以让3张图片以随机方式每次显示一张。「搭配CSS更可以做出一些显示效果。」把以下代码加入HelloWidget.html:
<script type="text/javascript">
function slideSwitch() {
var $active = $('#home_slideshow img.active');
var $sibs = $active.siblings();
var rnd = Math.floor(Math.random() * $sibs.length );
var $next = $($sibs[rnd]);
if ($active.length == 0) $active = $('#home_slideshow img:last');
$active.addClass('last-active');
$next.css({opacity: 0.0})
.addClass('active')
.animate({opacity: 1.0}, 1200, function() {
$active.removeClass('active last-active');
});
}
// Using jQuery
$(function() {
setInterval( "slideSwitch()", 5000 );
});
</script>
从这个例子来看,由JIL所制定与开发的Mobile Widget成功让手机软件开发成为一种「跨开发人员」的技术,同时配合API标准的制定,Mobile Widget还可以被导入不同的手机平台,成为一项3G应用开发的新标准。令人耳目一新!
使用Mobile Widget技术,我以最少的代码,完成了一个秀图软件。

图三:JIL Mobile Widget扮演跨领域开发的领头羊
基本面来看,设备生产商可以采用JIL的Mobile Widget技术,让设备使用现有的Mobile Widget软件;有了Mobile Widget,现在许多Web Developer也可以很容易为OPhone制作软件,并上传到JIL Community;同时,有了HTML/CSS的技术,Art Designer更可以很轻易地与开发者合作,制作美仑美奂的用户界面(UI)。
实际上,JIL Mobile Widget是一种BAE技术(Browser based Application Engine),因此,在同样具有BAE的其它操作系统上,理论也可以兼容JIL Mobile Widget应用,实现了「Write once, run everywhere」的技术理想。「简约、弹性与Everywhere」Mobile Widget最大的特色。
更多:AJAX让JIL Mobile Widget强还要更强
原来,使用Mobile Widget制作OPhone应用真的很简单。紧接著,我开始构思「如何更新HTML内容」的做法。因为,未来制作的Mobile Widget应用更复杂时,采用不断刷新页面的方式会让使用性(Usability)不佳,所以为了做出界面观感良好的应用,我想到可以采用AJAX的技术来解决,于是我想了一个问题:「OPhone Platform可以使用AJAX吗?」
「如果Mobile Widget可以支持JavaScript,当然也可以实现AJAX功能,因为AJAX技术本身就是创建在JavaScript的基础之上。」。虽然AJAX创建在JavaScript的基础之上,但现在倒不必从头把JavaScript以及DOM学习一遍。
因为,我的軟件已经在使用的jQuery就已经支持丰富的AJAX功能了!只要把jQuery的AJAX功能再发挥一下,就可以让OPhone软件展现更强大的功能。
小结
读了JIL Mobile Widget的API Reference,发现里头有很多好用的API可以binding到OPhone Platform本身的API,例如:Telephony、Message等等。「我可以用Mobile Widget的技术整合很多功能吗?因为这是一个很有趣而且又实用的技术。像是把新闻、邮件、电话纪录等等功能都放在一个Mobile Widget里。」这是大家都有的一个想法。
「技术上可行,当然没有问题。但就设计的角度来看,一个Mobile Widget最好只做一件事情(a task),因为Mobile Widget的特点之一是简化单一功能的设计方式,让单一功能有更佳的联网性(connectivity)与使用性(usability)。所以如果是功能复合型的应用,可以考虑以原本的本机应用软件(native application)方式设计。」Mobile Widget有它的巧妙之处,它和APK应用软件的定位也不同;了解二者的相差后,更加强了我对OPhone的兴趣。
对JIL Mobile Widget的期待与展望
一个结合现代(OPhone、Cloud、3G)与古典(HTML、JavaScript)的技术--JIL Mobile Widge正在改变手机应用的开发模式。Mobile Widget展示了「以Web导向制作软件」的模式,这和本机端软件强调「面向对象式发展(Object-oriented development)」的模式很不一样。
「JIL Mobile Widget是一种开发领域应用软件的好方法。」
再看未来JIL的Mobile Widget技术,我们可以期待的是,统一的3G应用开发模式与标准会出现:以Mobile Widget标准制作软件,让数据与运算实现於服务器端,并创建业界标准的JIL API以限制应用软件的访问本机端的功能,同时也让跨领域的人员一起在OPhone上尽情合作。
总结
迎向3G应用开发的新时代,云端运算,这不是一种新的计算器技术,而是一个组合了许多已存在技术的新模式,改变了很多东西。应用框架本身,无论是开发工具的改进、特殊应用的框架实作、新的设计思惟或是组件的扩充,还不能满足3G结合云端的应用需求; SDK走向Web-Oriented模式,意指「制作应用软件就是制作网页」;多数运算与服务都在云端了,所以,写网页来取用服务,很有可能在未来的3G手机上全面实现。 手机、3G与云端,这是一个值得经营,而且有趣的科技组合。
作者简介
Jollen Chen(陈俊宏),对嵌入式Linux以及Android技术有深入的研究,近十年的嵌入式开发经验,也是经验丰富的培训讲师。对于技术写作有浓厚的兴趣,在个人博客上(http://www.jollen.org)发表了大量的原创文章。近年,投入开放平台的产品开发以及推广工作;目前任职于某科技公司,负责软件架构设计,以及产品规划的工作。