# XML User Interface Language

XUL (acrónimo de XML User Interface Language), lenguaje basado en XML para la interfaz de usuario, desarrollado por Mozilla. XUL se implementa como un dialecto XML, lo que permite que las interfaces gráficas de usuario se escriban de manera similar a las páginas web.
XUL no es un estándar. La mejor fuente para encontrar material de referencia sobre XUL son páginas especializadas así como libros técnicos.
La principal ventaja de XUL es que aporta una definición de interfaces GUI simple y portable. Esto reduce el esfuerzo empleado en el desarrollo de software.
Otras aplicaciones aparte de Mozilla usan este lenguaje para sus interfaces de usuario. Algunas de ellas usan JavaScript para su lógica. Las aplicaciones XUL tienen la ventaja de poder correr en distintos sistemas operativos.
En agosto de 2015, Mozilla anunció que la utilización de XUL para crear extensiones de Firefox sería abandonado en el futuro a favor del uso de WebExtensions. Pale Moon, un fork de Firefox para Windows y Linux, continuará soportando XUL de manera indefinida. Waterfox, otro fork de Firefox para Windows, macOS, y Linux planea el desarrollo continuo de un navegador basado en XUL comenzando desde la última versión XUL de Firefox lanzada por Mozilla.

## Introducción

XUL es un lenguaje basado en XML (Extensible Markup Language) utilizado para describir y crear interfaces de usuario, que ha sido diseñado para brindar la portabilidad de las mismas, por lo que permite desarrollar aplicaciones multi-plataforma sofisticadas o complejas sin necesidad de herramientas especiales.
Inicialmente XUL fue creado para desarrollar los productos de Mozilla (navegador y cliente de correo electrónico, entre otros) de una forma más rápida y fácil. Al ser un lenguaje basado en XML, contiene todas las características disponibles para XML y sus mismas ventajas.
Estas aplicaciones son fácilmente personalizadas con textos, gráficos y demás, por lo que pueden ser rápidamente localizadas en diferentes mercados. Los desarrolladores Web que estén familiarizados con DHTML podrán aprender XUL rápidamente e incorporarlo en el desarrollo de sus aplicaciones.

## Objetivos

La mayoría de las aplicaciones se deben desarrollar utilizando las características propias de una plataforma específica, haciendo que el desarrollo de software multi-plataforma sea costoso y consuma tiempo. Es por esto que en el pasado se han desarrollado soluciones multi-plataforma que brinden dicha portabilidad (como por ejemplo Java), y que este aspecto sea su característica más fuerte. XUL fue ideado para que una interfaz pueda ser implementada y modificada fácil y rápidamente.
XUL puede ser utilizado en lugar de HTML, cuando se requiera desarrollar una interfaz de usuario portable y compleja. A diferencia de HTML, XUL provee un gran conjunto herramientas para crear menús, paneles, barras de herramientas y asistentes, entre otras. Gracias a esto, no será necesario utilizar un lenguaje de programación propietario o incluir un extenso código JavaScript para manejar la interfaz de usuario, puesto que el comportamiento está implementado por el propio navegador.

## Componentes

Una interfaz XUL se define mediante la especificación de tres grupos de componentes distintos:

### Content

    Aquí se encuentran los documentos XUL, que definen el diseño de la interfaz.

### Skin

    Contiene las hojas de estilos (CSS) y las imágenes, las cuales definen la apariencia de la interfaz.

### Locale

    Los documentos DTD se encuentran aquí, estos documentos facilitan la localización de páginas XUL.

## Elementos

XUL provee una gran cantidad de elementos o componentes de interfaz gráfica (la mayoría de los que se encuentran en las interfaces gráficas actuales), entre estos tenemos:
* Controles de Entrada como TextBox, CheckBox, etc.
* Barras de Herramientas con botones u otro contenido
* Menús en una Barra de Menú o diálogos emergentes (pop-up).
* Árboles
* Atajos del teclado
* Scripts y Eventos
* Overlay (elemento adicional creado por XUL, en un plug-in de firefox es de donde "se cuelga" o que le agrega a firefox).

## Tipo de Aplicaciones XUL

Hay cuatro tipos distintos de aplicaciones, según como las mismas son creadas:

### Extensiones de Firefox

    Son barras de herramientas, menús u otros documentos XUL que agregan funcionalidades a Firefox. Para hacer esto, se usa un elemento definido por XUL llamado “Overlay”, este elemento permite incorporar documentos al navegador mismo.

### Aplicaciones independientes

    Estas aplicaciones son creadas mediante XULRunner, que es una versión de Mozilla que permite crear aplicaciones XUL independientes. No es necesario el navegador para ejecutar estas aplicaciones, tienen su propio ejecutable.

### Paquete XUL

    es un intermedio entre los dos tipos anteriores, es instalado como una extensión, pero actúa como una aplicación separada del navegador. Este tipo de aplicaciones son creadas cuando no queremos utilizar una aplicación XULRunner completa.

### Aplicaciones XUL Remotas

    son aplicaciones XUL que se encuentran en un Servidor Web y son ejecutadas remotamente como cualquier otra página web.