QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

XML 是用户界面 (UI) 开发的未来吗?

  • 2007-04-09
  • 本文字数:1588 字

    阅读完需:约 5 分钟

或者是 JavaScript?新一茬的桌面用户界面框架有一个共同的趋势:基于 XML,并具备某种程度的 JavaScript 支持。在此,让我们简要地看看 AJAX,WPF/XAML,Flex/MXML 和 Firefox 的 Gran Paradiso。

首先登场的是 AJAX ,Web 2.0 狂潮的典范。作为一门充分利用现有 HTML 和 JavaScript 的新技术,几乎没有理由不使用 HTML。尽管目前还不适合桌面应用程序的开发,但它的确为后来者搭建了一个舞台。

微软把宝重重地押在了一门新的基于 XML 的语言上:可扩展应用程序标记语言(Extensible Application Markup Language,XAML)。传统的 Windows 开发者可以通过 Windows Presentation Foundation(WPF) 使用它。在 XAML 中 WPF 更象 ASP.NET,被用于界面表现,而其它的,如 C#或 VB,被用在代码分离的文件中进行事件处理。

除了技术区别之外,XAML 还从根本上改变了用户界面设计的开发循环。用户界面专家和图形艺术家可以使用 XAML 编辑器(如 Expression Blend ZAM 3D )创建用户界面,然后将文件移交给使用 Visual Studio 的开发人员。至少在理论上,开发人员可以不用再根据那些使用 Visio 或 Photoshop 拼凑的非交互性截屏进行工作。从 ASP.NET 相当令人迷惑的成功上可以判断,它的效果令人起疑,但是至少存在潜力。

XAML 的故事并没有在这儿打住。微软同样期望通过 Windows Presentation Foundation/Everywhere(WPF/E)获得跨平台的支持。这个产品开始将以 JavaScript 作为它的程序、事件处理语言,在今后的版本中将支持公共语言运行时(CLR)。它可以被视为其他浏览器驻留框架(如 Flash/Flex)的直接竞争对手。

关于 XAML 技术需要留意的是,这些设计器目前都还没有真正意义上成型的形式。Expression Blend 目前只是处于预发布阶段。今年晚些时候,VS Orcas 将到达 Beta 版。在此之前,Visual Studio 将不会有任何多于 CTP(Community Technology Preview,社区技术预览版)的功能。

接下来的是 MXML。它是在 Adobe Flex 中被使用的表现语言,同样基于 XML。它结合了 JavaScript 的派生产品——ActionScript,最初它是由 Macromedia 在 2004 年发布的。尽管工具的支持经过了多年改进,但是它仍然被桎梏于浏览器和 Flash 播放器中。Adobe 实验室想通过 Apollo 计划来改变这一切。 Apollo 计划的目标就是创建一个将 Flex 从浏览器解放的跨平台运行时(Runtime),这样它就可作为一个单独的桌面应用程序运行。实际上,这是剽窃了 Java 最初的剧本,他们将飞机开入了微软的客厅。凭借出众的界面水准,它们有可能赢得比赛。

最后是 Firefox 带来的新礼物 Gran Paradiso 。与微软不同,它为 Web 引入了一门新语言。也不像 Abode,它一开始就创建了一个新的运行时。Firefox 团队忠于它们目前拥有的东西。Gran Paradiso 使用与 AJAX 相同的底层技术——HTML 和 JavaScript,并且它仍然生活在浏览器之中。区别是,它计划提供 DOM 存储、脱机执行和同步模型等功能,该模型允许 Web 应用程序在部分或完全的非连接模式下运行。

过于依赖一个特定的浏览器可能最终会击沉 Gran Paradiso。不像 WPF/E 和 Apollo 使用跨平台的运行时,它们期望用户不需要为跨平台这些问题烦心,Firefox 是一个高度从应用程序自身夺取屏幕空间的可视化帧。那些使用 IE、Safari 或 Opera 的用户,肯定会对于必须使用 Firefox 感到些许不安。

结合 XML 和某种形式的 JavaScript 成为了这些新框架的主旋律。 JavaScript 到底是下一个超级语言,还只是一个短期的异常?

译者简介:胡键是InfoQ 中文站的志愿者翻译,自2000 年西安交通大学硕士毕业后一直从事软件开发。2002 年开始使用Java,在项目开发中经常采用OpenSource 工具,如Ant、Maven、Hibernate、Struts 等,目前正在研究信息集成方面的规范和技术。可以通过 jianhgreat AT hotmail.com 与他联系,或访问博客: http://foxgem.javaeye.com/ 。加入 InfoQ 中文站志愿者翻译队伍,请邮件至 china-editorial@infoq.com

2007-04-09 07:554063
用户头像

发布了 255 篇内容, 共 58.5 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

在线文本列表批量添加行号工具

入门小站

工具

在线JSON转YAML工具

入门小站

工具

军体拳代码

工程师日月

6月月更

如何使用物联网低代码平台进行设备调试?

AIRIOT

低代码 物联网 低代码开发

Ajax入门教程

倔强的牛角

ajax 6月月更

leetcode 221. Maximal Square 最大正方形(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

Java 中的Comparator使用技巧

Nick

Java stream 6月月更 Comparator nullsFirst

DOM操作

Jason199

js DOM事件 6月月更

mysql中的查询计划及sql语句性能分析:explain

乌龟哥哥

6月月更

如何写出同事看不懂的Java代码?

码农参上

后端 Java’

Any to Any 实时变声的实现与落地丨RTC Dev Meetup

声网

音频 RTC Dev Meetup 生态专栏 语音处理

Discourse 新用户可插入媒体的数量

HoneyMoose

如何提高远程办公的效率?| 社区征文

石云升

远程办公 6月月更 初夏征文

设计微博系统中“微博评论”高性能高可用计算机构

Fan

架构师实战营

Python 设计模式:单例模式

宇宙之一粟

Python 单例模式 6月月更

MySql 过滤查询(以字母开头,以数字开头,非数字开头,非字母开头)

迷彩

数据库 MySQL 数据库 6月月更

接口测试(apipost、jmeter和python脚本)——测试工具

Xd

Java 后端 接口测试

Hoo虎符研究院 | 币圈后浪D/Bond一个基于ERC-3475标准开发的去中心化债券生态系统平台

区块链前沿News

Hoo 虎符交易所

Java 使用 char[] Array 还是 String 存储字符串

HoneyMoose

Eureka的TimedSupervisorTask类(自动调节间隔的周期性任务)

程序员欣宸

Java SpringCloud 6月月更

PingCAP 入选 2022 Gartner 云数据库“客户之声”,获评“卓越表现者”最高分

Geek_2d6073

【LeetCode】 移除字母异位词后的结果数组Java题解

Albert

LeetCode 6月月更

全面双录倒计时,融云助力泛金融业务办理高效合规可回溯

融云 RongCloud

一条命令开启监控之旅!

TanCloud探云

开源 监控系统

linux之我常用的20条命令( 之三)

入门小站

Linux

Java Core 「13」ReentrantReadWriteLock 再探析

Samson

学习笔记 Java core 6月月更

深挖数据价值,2022隐私计算大赛开启!

Jessica@数牍

隐私计算 大数据技能大赛 隐匿查询性能优化 隐私求交性能优化

C语言数据的储存

未见花闻

6月月更

K8S学习笔记--《开篇词|迎难而上,做云原生时代的弄潮儿》

IT蜗壳-Tango

容器 k8s IT蜗壳教学 6月月更

SRE Lesson One -- Day1 准备你的工作环境

耳东@Erdong

SRE 6月月更 SRE Lesson One

应用配置管理,基础原理分析

Java 微服务 构架

XML是用户界面(UI)开发的未来吗?_Java_Jonathan Allen_InfoQ精选文章