title: XML User Interface Language
text: # 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.
  
  # XML User Interface Language
  ## 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.
  
  # XML User Interface Language
  ## 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.
  
  # XML User Interface Language
  ## Componentes
  
  Una interfaz XUL se define mediante la especificación de tres grupos de componentes distintos:
  
  # XML User Interface Language
  ## Componentes
  ### Content
  
      Aquí se encuentran los documentos XUL, que definen el diseño de la interfaz.
  
  # XML User Interface Language
  ## Componentes
  ### Skin
  
      Contiene las hojas de estilos (CSS) y las imágenes, las cuales definen la apariencia de la interfaz.
  
  # XML User Interface Language
  ## Componentes
  ### Locale
  
      Los documentos DTD se encuentran aquí, estos documentos facilitan la localización de páginas XUL.
  
  # XML User Interface Language
  ## 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).
  
  # XML User Interface Language
  ## Tipo de Aplicaciones XUL
  
  Hay cuatro tipos distintos de aplicaciones, según como las mismas son creadas:
  
  # XML User Interface Language
  ## Tipo de Aplicaciones XUL
  ### 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.
  
  # XML User Interface Language
  ## Tipo de Aplicaciones XUL
  ### 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.
  
  # XML User Interface Language
  ## Tipo de Aplicaciones XUL
  ### 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.
  
  # XML User Interface Language
  ## Tipo de Aplicaciones XUL
  ### Aplicaciones XUL Remotas
  
      son aplicaciones XUL que se encuentran en un Servidor Web y son ejecutadas remotamente como cualquier otra página web.