tabris csdn_Tabris的本机跨平台应用程序

tabris csdn

Tabris是用于本机移动应用程序的跨平台开发的第一个Java工具包。 它将本地用户体验与量身定制的本地控件和功能结合在一起。

但是原生到底是什么意思?

当前开发移动应用程序时,现有的各种可用平台构成了一个真正的问题。

对于那些可以访问各种硬件和软件的最终用户来说,这是一个梦想,但对于开发人员来说却是一场噩梦。

一旦移动应用程序开发人员必须为多个平台开发应用程序,他们就会面临各种各样的挑战。

最困难的挑战之一是获得必要的专业知识。 即使我们“仅”考虑两个市场领先的平台(iOS和Android),这也意味着:

  • 精通2种编程语言:Java和Objective-C。
  • 掌握两个具有不同API的平台。
  • 规划一个(或两个)应用程序设计,同时考虑两个平台。

简而言之,如果您为每个平台分别进行“本地”开发,则开发移动应用程序所需的工作或多或少会随着所支持平台的数量而增加。 幸运的是,跨平台工具包提供了一个极好的选择。

当前,有两种不同类型的跨平台工具包。 一方面,基于HTML的工具包,另一方面,基于跨平台编译或本机控件和功能的解释的工具包。

PhoneGap显然是第一类产品,并且使用HTML来显示UI。 此解决方案的魅力无疑是开发简单应用程序的速度。

但是,HTML5趋势最近已失去了部分吸引力,这主要是由于最终用户不满意和Facebook等重大失败。

就用户体验而言,HTML5很容易成为开发移动应用程序的负担。 与Web应用程序不同,移动应用程序通常配备了高度复杂的控件(小部件)。 尽管HTML5工具箱(例如JQuery Mobile)提供了与操作系统小部件相似的功能,但为此,它们需要为每个小部件组合多个元素。 在更复杂的用户界面的情况下,这会导致大量DOM元素,并可能对应用程序的性能产生负面影响。 不管是否面向小部件,大多数HTML-UI都不提供令人满意的用户体验,因为该应用程序通常看起来和感觉都不熟悉。 这种不熟悉的范围从小部件的外观和感觉到不熟悉的导航概念和动画。

第二类跨平台工具包使用操作系统小部件,从而避免了外观问题。 用这种技术创建的应用在视觉上比HTML-UI更接近本机界面。 但是,这些解决方案也带来了各种挑战。

要成功开发本机应用程序,仅显示本机窗口小部件还不够。 用户导航还必须反映特定于平台的概念。 对于本机App开发,开发人员可以访问相关的平台概念来设计应用程序。 对于iOS,这是适用于Android“活动”和“ ActionBar”的“ ViewController”原则。 只有少数跨平台工具包将这些概念抽象化并统一起来。

这正是Tabris出现的地方。基本上,Tabris属于跨平台工具箱的第二类。 它使用Java-API抽象了本机控件及其功能。 这些元素包括简单的元素,例如按钮或文本字段,还包括更复杂的元素,例如树/列表或滑动小工具。 除了控件之外,它还提供Java-API,用于控制设备的摄像头或获取地理位置信息。 Tabris的另一个基本功能是对本机导航概念的抽象,称为Tabris UI。

用户界面非常简单,仅包含两个核心组件。 这些是页面和操作类型。 解释这些类型的最佳方法是使用屏幕截图。

(点击图片放大)

此图显示了相同的应用程序如何在iOS和Android设备上显示。 该应用程序的实际内容是相同的。 只有与平台典型框架的集成才不同。 用红色标记的区域表示页面。 页面是控件的一种容器。 绿色标记的区域表示两个操作。 从概念上讲,动作表示与应用程序或页面相关的可能的用户交互。

要使用这些类型创建一个完整的应用程序,必须将它们彼此连接。 第一个连接是所谓的流。 该流程描述了可以以各种方式组合在一起的页面链。 为了创建这种流程,Page必须扮演一个角色。 可能的角色是顶层页面和普通页面。 顶层页面标记流程的开始,并且仅存在一次。 普通页面在流中可以存在一次或多次,但不能在开始时存在。 使用下图可以很容易地解释这一点。

(点击图片放大)

上图显示了典型的应用流程。 在这种情况下,该应用程序由三个顶层页面和几个普通页面组成。 用户现在可以通过使用“动作”在各个页面之间导航。 在此阶段,重要的是,可以按不同的顺序遍历流,如以下示例中所述。

假设您希望开发一个“ Book Shop App”。 在这种情况下,书籍是应用程序的核心元素。 因此,用户必须能够轻松地在不同的书之间导航。 协作过滤是一项帮助亚马逊产生大量额外收入的功能。 即“购买此书的客户也购买了其他这些书”。 使用此功能,用户可以在书籍之间导航。 因此,该导航链的长度不受限制。 但是,所需的功能是可以向后导航到上一本书或返回到起​​始页。

Tabris UI的流程启用了这种导航。 流可以具有任何非固定深度。 任何时候都可以进行向前导航。 但是,这意味着流的开始必须具有固定的定义。 例如,在我们的书籍样本中,这将是畅销书的清单。

第二个概念,即动作,也与页面相关。 通常,动作封装了应用程序功能。 在书籍示例中,这可能是将书籍添加到购物篮或进行搜索。 这两个活动也直接描述了可能的操作范围:一个操作具有页面范围或全局范围。 它也与页面或整个应用程序连接。 搜索是全局操作的一个示例,因为应该可以从应用程序中的任何位置访问它。 与此不同的是,只有当用户在书页上时,才应该将书添加到购物篮中。

书店的完整申请流程如下所示:

(点击图片可放大)

屏幕截图显示了适用于Android和iOS的相同应用程序。 该应用程序包含三个顶层页面:“所有书籍,热门和收藏夹”。 这些顶层页面中的每个页面均显示书籍列表。 选择后,其中一本书会显示在详细视图中。 最终用户可以从那里访问其他书籍或预览。 该应用程序的代码可在GitHub上获得 。 要观看此应用程序的运行情况,您还可以观看此视频

在讨论Tabris UI的导航概念之后,我们还要讨论构成应用程序内在部分的小部件。 在此过程中,Tabris利用已建立的跨平台窗口小部件工具箱SWT(标准窗口小部件工具箱)的API。 SWT是轻量级的,广泛的开放源代码,并使用JFace提供强大的MVC框架。 例如,上面显示的书店的列表视图可以仅用几行代码来实现。

public class BooksListPage extends AbstractPage {
public void createContent( Composite parent ) {
TreeViewer viewer = new TreeViewer( parent, SWT.V_SCROLL ); viewer.setContentProvider( new BooksContentProvider() );
viewer.setLabelProvider( new BooksLabelProvider() );
addBookSelectionListener( viewer );
...
public class BooksContentProvider implements ITreeContentProvider {
public Object[] getElements( Object inputElement ) {
return books.toArray();
}
...
public class BooksLabelProvider implements ITableLabelProvider {
public String getColumnText( Object element, int columnIndex ) {
String result = null;
if( columnIndex == 0 ) {
if( element instanceof Book ) {
result = ( ( Book )element ).getTitle();
...

除了API的简洁性之外,使用SWT的其他优点是Eclipse社区中提供了文档,示例和支持。 Tabris的标准功能包括处理大数据,使用OSGi进行应用程序模块化设计以及基于模型的用户界面的集成。

底层体系结构实现了与已建立的Java技术的简单集成。 Tabris的瘦客户端体系结构当然可以与Web服务器和Web浏览器进行比较,而Web应用程序逻辑是在服务器端执行的。 随附的UI以HTML格式交付并在浏览器中呈现。 在Tabris的情况下,应用程序逻辑也在服务器(例如JEE应用程序服务器)上执行。 本机客户端(例如平板电脑)连接到服务器,并以JSON形式接收UI的表示形式。 但是Tabris客户端代替了基于HTML的UI,而是呈现了本机小部件,从而创建了特定于平台的用户体验。

与Web应用程序一样,移动客户端始终需要连接到服务器。 对于某些应用程序,这是不可接受的限制,但是对于其他应用程序,这可能是真正的优势。 仅为了创建接口才传输数据。 客户端根本不执行任何应用程序逻辑,它们仅用于显示UI。 而且,这意味着不会在移动终端设备上保存任何敏感的应用程序数据或算法,从而暗中保护这些数据或算法免遭盗窃或其他类型的丢失。

该体系结构和基础开放式通信协议1的另一个有趣的优点是,可以轻松添加不同的客户端。 例如,除了移动客户端之外,还有开放源Web和桌面客户端。 例如,某些基于Windows CE或用于有限嵌入式设备(例如收银机)的客户端可以简单地使用精简的窗口小部件集实现,从而启用新的应用程序和迁移路径。

Tabris的1.0版自2013年4月起可用。Eclipse公共许可证涵盖了服务器组件以及Web和Desktop客户端,可以在商业产品中免费使用。 商业许可证仅涵盖移动客户端。 为了亲自测试和评估Tabris的广泛可能性,可以从项目网站2下载移动客户端。

1个 RAP /协议

2 Tab

翻译自: https://www.infoq.com/articles/tabris/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

tabris csdn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值