写点什么

XUL:Web 该如何展现?

  • 2007-04-16
  • 本文字数:1149 字

    阅读完需:约 4 分钟

上星期我们简单谈及了富客户端框架的未来,那时我们只是把 XUL 看作是 Mozilla 上扩展的一种语言,然而这似乎是错误的看法。

XML 用户界面语言(XML User Interface Language,简称 XUL)和我们上个星期所介绍的那些框架有许多共通之处,包括基于XML 来展现,使用JavaScript 作后端。但仍可通过一些主要特点来区分它们的。

大多数Windows 开发者对于新框架的第一个疑问会是“它会好看吗?”,换句话说,这个框架的外观是否会和本地应用程序相像。对于XUL 来说,答案看似是肯定的。 Mozilla Amazon Browser (MAP)显示了它可以用来做漂亮的富客户端。虽然运行在 Firefox 上,但他看起来就和本地的应用程序一样。如 XUL Periodic Timetable (只支持 Mozilla)网站所演示的那样,它已经提供了富客户端开发者们所期望的大多数控件。

在十年前,人们尚可接受不与其它平台交互的孤立平台和编程语言,但现在则是难以接受的。为此, XPCOM XPConnect 就应运而生了。

XPCOM(Cross Platform Component Object Model,跨越平台的对象模型构件),是一个为支持跨平台代码和标准组件的框架。XPCOM 构件能够用 C、C++ 和 JavaScript 来编写,同时它能被 C、C++、JavaScript、Python、Java 和 Perl 所调用。

XPConnect 是能让 XPCOM 和 JavaScript 之间作简单解释的一种技术。XPConnect 允许 JavaScript 对象透明地访问和操作 XPCOM 对象。它也能让 JavaScript 对象去实现能被 XPCOM 对象所调用的 XPCOM 兼容接口。

最近另一个热点话题就是 XUL 的国际化,它已经转换成易于阅读的 DTD 和 property 文件。这样当然就使移植更为容易,通过 XUL 代码本身能够被分别产生和组合这些文件。

和许多开源项目一样,XUL 不缺少工具的支持。XUL 的主页上列举好些工具和实用程序,其中包括 XUL Explorer ,一个轻量级的 IDE。

乍看下 XUL 似乎和 Gran Paradiso(Firefox 3 的开发代号)有一样的问题,需与 Mozilla 相关浏览器绑定。然而,事实并非如此,另一个 Mozilla 的产品, XULRunner ,允许基于 XUL 的应用程序在这些浏览器以外运行,现在所支持的平台有 Windows, OS X, 和 Linux。

然而 XUL 并非百份百的解决方案。当在 Firefox 2.0.0.3 版里测试时,就出现如 Alt+D 的快捷键跳转到 Firefox 上而不是应用程序的命令按钮上的问题。这些或许都是小缺陷,很容易就修复了。

XUL 的公开性和优雅的架构,使得 WPF/E 和 Adobe Flex 想取胜也绝非易事。

译者简介:陈俊是InfoQ 中文站的志愿翻译, SpringSide 开源项目的核心成员,以及中科院软件工程硕士,就职于 Accenture。长期从事 Java EE 应用开发, 热衷于软件体系结构,设计模式,软件过程改进及敏捷开发研究,也喜欢尝试不同的开源技术,一直以来坚持为开源社区的发展贡献自己的力量。加入 InfoQ 中文站志愿者翻译队伍,请邮件至 china-editorial@infoq.com

2007-04-16 22:001361
用户头像

发布了 27 篇内容, 共 10.8 次阅读, 收获喜欢 15 次。

关注

评论

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

数字人民币带来更好支付体验 没有网络时也能使用

CECBC

数字人民币

Soul网关源码阅读(十)自定义简单插件编写

Java 源码阅读 网关

虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录

刘悦的技术博客

Python 面试

soul数据同步(二)zookeeper同步策略

xzy

源码分析 网关 Soul网关 soul sou

剖析一站式分布式事务方案SeataFescar-Server

比伯

Java 编程 架构 面试 计算机

认识产品经理(第一章上)

让我思考一会儿

区块链交易所软件开发|区块链交易所APP系统开发

系统开发

听了微信创始人张小龙的演讲,更加坚定Filecoin的光辉未来

时空云

分布式存储 IPFS Filecoin

Windows DHCP最佳实践(四)

BigYoung

运维 windows Windows Server 2012 R2 DHCP

简单易懂的单臂路由介绍及一看就会的实验

团队复盘之kiss

张老蔫

28天写作

重学JS | 玩转File API

梁龙先森

面试 大前端 编程语言 28天写作

认识产品经理(下)

让我思考一会儿

为什么Java程序会执行一段时间后跑的更快?

Java架构师迁哥

关于Dapper实现读写分离的个人思考

yi念之间

Dubbo源码解析(1)-整体框架介绍

冰三郎

源码分析 dubbo RPC

IT版“历史上的今天”

IT蜗壳-Tango

七日更

做一枚旗帜Be a Flag

石君

28天写作

中金数据集团与腾讯云合力拓展信息安全、区块链业务领域

CECBC

区块链产业

Nginx实现在局域网内真正的ip_hash负载均衡​

会飞的猪

干货|更通用的P2P网络协议栈——Libp2p

QTech

IPFS Libp2p

2020出行之变(一):自动驾驶的“跃渊”时刻

脑极体

nodejs中使用worker_threads来创建新的线程

程序那些事

多线程 nodejs 并发控制 程序那些事 子线程

如果不完美,接受就好了「14/28」

道伟

28天写作

朋友问他是否该跳槽了?我是这么跟他说的

田维常

面试

hive窗口函数/分析函数详细剖析

五分钟学大数据

Hive SQL

大数据知识专栏 - MapReduce 的 Reduce端Join

小马哥

大数据 hadoop mapreduce 七日更

讨论:Service层的接口是不是多此一举?

xcbeyond

Java 接口管理 28天写作

联发科推出天玑1200,新一年的头道“5G甜点”究竟滋味如何?

脑极体

35+的测试人都去哪儿了?所谓“青春饭”真的只是在贩卖焦虑吗?

程序员阿沐

编程 程序员 软件测试 教程 测试工程师

云原生的理解

JiangX

容器 云原生 数字化转型 数字化 28天写作

XUL:Web该如何展现?_Java_Jonathan Allen_InfoQ精选文章