2020最佳AI新基建年度榜
您正在使用IE低版浏览器,为了您的雷锋网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
此为临时链接,仅用于文章预览,将在时失效
业界专题 正文
发私信给郭晓龙
发送

0

关于HybridApp与国内外移动应用开发中间件对比的疑惑

本文作者:郭晓龙 2012-07-03 17:37
导语:【编者按】本文作者@叶江水中氧,是对于《Web App或夭折,Hybrid App才是新世界的王》一文做出分析和讨论。对后者中持不同意见的部分,作者表示到:“对于‘HybridApp取代WebApp’的观点很是疑惑。稍有不满的则是文中就Rexsee的对比与评价”。同时表示欢迎各位参与其中的讨论首

【编者按】本文作者@叶江水中氧,是对于《Web App或夭折,Hybrid App才是新世界的王》一文做出分析和讨论。

对后者中持不同意见的部分,作者表示到:“对于‘HybridApp取代WebApp’的观点很是疑惑。稍有不满的则是文中就Rexsee的对比与评价”。同时表示欢迎各位参与其中的讨论

首先,针对于文章的主要观点,我这边的考虑是:WebApp还属初期,HybridApp只是在NativeApp与WebApp之间提供了多的一种选择,而非取代或是替换。

展开来看可能会有如下的几个问题:

基于网页的WebApp短期内将遇到发展瓶颈。因为标准化问题和终端设备功能的支持程度,很难在短时间内找到确切的解决方案。

NativeApp、WebApp以及HybridApp均会是移动应用的不同选择。“NativeAPP,就像桌面版的C/S架构,WebApp,就像桌面版的B/S架构,20年了,B/S也没完全取代C/S。”HybridApp也就可理解为B/S和C/S混合架构,针对于具体的应用场景会有特定的优势体现而已。

不同的选择需做出取舍,鱼与熊掌难以兼得。不同的应用形态优势与劣势同样明显,这取决于具体的应用需求;执行效率、设备功能支持或是跨平台需求,各种价值有时会相互冲突。

HybridApp也无法兼具两者优势同时屏蔽劣势,在不做取舍的情况下其特点不过是交集求和。比如,跨平台需求与不同平台Native View的协同。

简单说来,不同应用形态同时具备了其优劣特点,无论是具体的应用实现,还是开发平台或中间件工具都需做出选择,而非一味迎合或避重就轻。

其次,针对于文中关于Rexsee的相关特点对比有较多偏差,在此简单指正。

按原文中的定义,Rexsee也是一个HybridApp的移动应用中间件,只是在产品策略方面做出了取舍,比如跨平台特性。为获取更好的执行效率与UI交互,以及更全面的功能覆盖程度,Rexsee仅支持Android。并且在较长时间内无意跨平台。

目前开放了接近2000个扩展API,覆盖95%左右Android原生功能(使用js的方式直接调用实现,在Rexsee社区可以查看详细说明与全部实现源码)

支持WebView与NativeView混合,利用JS实现Android原生UI布局与交互(Rexsee提供rexseeJavaview扩展,用于创建和管理原生界面元素,具体见附)

其它则是诸如使用Webkit内核,支持第三方任意开发框架等特性,不再反复描述了。如下表格,就原文中的一些细项对比给出自己的判断。单纯只是Rexsee自身,仅用以对有误的地方做出指正,无需过多对比。

如下是用Rexsee扩展javaview所实现的完全等同于原生界面的展现示例:

部分源码:

rexseeJavaView.create('setupList','ListView','mode:view;background-color:#000000;vertical-spacing:1px;');//创建一个列表View

 

rexseeJavaView.create('enablecheckBox','CheckBox','..label:启用来电;...');//创建一个可勾选的View

rexseeJavaView.create('whoDiv','FrameLayout','');//创建一个Frame布局。

rexseeJavaView.create('wD111','TextView','...label:来电人;...');//创建一个文本标签。

rexseeJavaView.create('wD112','TextView','...label:'+c_who+';...');//创建一个文本标签。

rexseeJavaView.create('wD113','TextView','...label:选择;...');//创建一个文本标签。

rexseeJavaView.setChilds('whoDiv','wD111|wD112|wD113');//将文本标签放入Frame布局中。

 

rexseeJavaView.create('timeDiv','FrameLayout','');

rexseeJavaView.create('tD111','TextView','...label:时间;...');

rexseeJavaView.create('tD112','TextView','...label:'+c_time+';...');

rexseeJavaView.create('tD113','TextView','...label:选择;...');

rexseeJavaView.setChilds('timeDiv','tD111|tD112|tD113');//将文本标签放入Frame布局中

//-----------------------------------------------------------------------------

rexseeJavaView.create('ringtoneDiv','FrameLayout','');

rexseeJavaView.create('rtD111','TextView','...label:铃声;...');

rexseeJavaView.create('rtD112','TextView','...label:'+c_ringtone+';...');

rexseeJavaView.create('rtD113','TextView','...label:选择;...');

rexseeJavaView.setChilds('ringtoneDiv','rtD111|rtD112|rtD113');//将文本标签放入Frame布局中

//--------------------------------------------------------------------------------

rexseeJavaView.create('upanddowncheckBox','CheckBox','...label:振动;...');

rexseeJavaView.setChilds('setupList','enablecheckBox|whoDiv|timeDiv|ringtoneDiv|upanddowncheckBox');//将启用、联系人、时间、铃声选择、震动选择放入列表布局

rexseeJavaBar.add('setupList','bar-position:top;height:306px;border-width:0px;padding-bottom:1px;');//将列表布局放入顶部的Bar容器内。

rexseeJavaView.create('btlinearLayout','LinearLayout','orientation:x;width:fillparent;');//创建顺序布局

rexseeJavaView.create('btstart','Button','label:启动;width:'+c_winwidth/2+';event-touch:true;');//创建按钮

rexseeJavaView.create('btexit','Button','label:退出;width:'+c_winwidth/2+';event-touch:true;');//创建按钮

rexseeJavaView.setChilds('btlinearLayout','btstart|btexit');//将两个按钮放入到顺序布局

rexseeJavaBar.add('btlinearLayout','bar-position:bottom;height:80px;border-width:0px;');//将顺序布局放入到底部的Bar容器内。

关于更多原生UI类应用可在如下链接获取应用:http://www.rexsee.com/CN/app/appList.php?category=multimedia

 

附:Rexsee所提供的原生UI扩展

详细可下载Rexsee开发手册,直接运行查看效果:http://vdisk.weibo.com/s/2wqWO/1329189032

或直接扫码:

 

rexseeJavaView对象及事件,用于创建和管理原生界面布局元素,支持一下原生布局,(API8的全部布局)

布局类型(可以添加子对象):

AbsoluteLayout

Div(Rexsee扩展)

FrameLayout

Gallery

GridView

HorizontalScrollView

LinearLayout

ListView

RadioGroup

RelativeLayout

ScrollView

SlidingDrawer

TableLayout

TableRow

ThreeDGallery(Rexsee扩展)

ViewAnimator

ViewFlipper

ViewSwitcher

基本类型(不可添加子对象):

AnalogClock

Button

CheckBox

Chronometer

DatePicker

DigitalClock

EditText

ImageButton

ImageSwitcher

ImageView:支持多点触摸的缩放。

LabelDiv(Rexsee扩展)

ProgressBar

ProgressDiv(Rexsee扩展)

RadioButton

RatingBar

SeekBar

Spinner

SurfaceView

TextSwitcher

TextView

TimePicker

ToggleButton

VideoView

WebView/Browser/BrowserDiv(Rexsee扩展)

ZoomControls

注意:特别提一下其中的SurfaceView类型,可以进行3D绘图,类似于HTML5的Canvas,基于Android Camera 3D绘图机制。

rexseeJavaDialog对象及事件:将JavaView元素显示在对话框中。

rexseeJavaBar对象:将JavaView元素直接覆盖在布局中。

rexseeDrawable对象:预载入图片并进行简单处理。

rexseeImageDialog对象及事件:显示图片用的对话框,支持多点触摸的缩放。

rexseeButtonDialog对象及事件:显示一组按钮。

 

雷锋网原创文章,未经授权禁止转载。详情见转载须知

分享:
相关文章

文章点评:

表情

编辑

none
当月热门文章
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说