Artículos Etiquetados ‘ExtJS’

ExtJS lo bueno, lo malo y lo feo

22 Octubre 2008

ExtJS lo bueno, lo malo y lo feo

En el mercado actualmente existen múltiples librerías de Javascript que permiten realizar todo tipo de maravillas en el navegador web. Quién iba a pensarlo, un lenguaje al que a pocos agrada termina haciendo más por la web de lo que podríamos haber imaginado.

Una de estas librerías, sobre la que hablaremos hoy día, se llama ExtJS y tiene muchas cualidades que la hacen interesante.

¿Qué es ExtJS?

De acuerdo a la definición de la página web ExtJS es una librería Javascript que permite construir aplicaciones complejas en Internet. Esta librería incluye:

  • Componentes UI del alto performance y personalizables.
  • Modelo de componentes extensibles.
  • Un API fácil de usar.
  • Licencias Open source y comerciales.


¿Qué tiene de bueno?

Antes de poder entrar a examinar ExtJS primero tenemos que hablar sobre RIA, acrónimo de Rich Internet Applications (Aplicaciones Ricas en Internet). Lo que RIA intenta proveer es aquello de lo que siempre ha adolecido la web, una experiencia de usuario muy parecida o igual a la que se tiene en las aplicaciones de escritorio.

Las aplicaciones web tradicionales tienen problemas como la recarga continua de las páginas cada vez que el usuario pide nuevo contenido, o la poca capacidad multimedia, para lo cual se han hecho necesarios plug-ins externos.

Junto con el reto de llevar la experiencia RIA a los usuarios comenzó el debate sobre cual sería el mejor modo de atacar el problema. La historia de los últimos años nos ha traído diversas tecnologías, basadas en Flash (Adobe), Java (Sun), Silverlight (MS). Todas muy interesantes, pero con la desventaja de necesitar algún tipo de extensión en los navegadores que podría no estar presente. Ha sido esta limitante lo que le ha dado la victoria (al menos por el momento) al casi dejado de lado Javascript y la “nueva” tecnología conocida como AJAX.

ExtJS encaja dentro de este esquema como un motor que permite crear aplicaciones RIA mediante Javascript. Si enmarcamos a ExtJS dentro del desarrollo RIA, éste seria el render de la aplicación que controla el cliente y que ese encarga de enviar y obtener información del servicio.

Una de las grandes ventajas de utilizar ExtJS es que nos permite crear aplicaciones complejas utilizando componentes predefinidos así como un manejador de layouts similar al que provee Java Swing, gracias a esto provee una experiencia consistente sobre cualquier navegador, evitando el tedioso problema de validar que el código escrito funcione bien en cada uno (Firefox, IE, Safari, etc.).

Además la ventana flotante que provee ExtJS es excelente por la forma en la que funciona. Al moverla o redimensionarla solo se dibujan los bordes haciendo que el movimiento sea fluido lo cual le da una ventaja tremenda frente a otros.

Usar un motor de render como ExtJS nos permite tener además estos beneficios:

  • Existe un balance entre Cliente – Servidor. La carga de procesamiento se distribuye, permitiendo que el servidor, al tener menor carga, pueda manejar más clientes al mismo tiempo.
  • Comunicación asíncrona. En este tipo de aplicación el motor de render puede comunicarse con el servidor sin necesidad de estar sujeta a un clic o una acción del usuario, dándole la libertad de cargar información sin que el cliente se de cuenta.
  • Eficiencia de la red. El tráfico de red puede disminuir al permitir que la aplicación elija que información desea transmitir al servidor y viceversa, sin embargo la aplicación que haga uso de la pre-carga de datos puede que revierta este beneficio por el incremento del tráfico.

Lo malo

Esta es una lista de algunos puntos que encuentro negativos en las aplicaciones RIA:

  • Necesita una plataforma. En este caso dependemos de ExtJS para mostrar los componentes y hacer el render de la aplicación.
  • El javascript no es tan rápido como quisiéramos, sin embargo con la entrada de Google Chorme y el nuevo motor de Mozilla las cosas van mejorando.
  • Descargas lentas. Al ser aplicaciones grandes, especialmente porque cargan todo al inicio, hace que el tiempo de descarga sea mayor al de una aplicación web tradicional.
  • Problemas con los motores de búsqueda. Los motores de búsqueda indexan el contenido web estático por lo que los textos cargados de manera dinámica no serán encontrados.
  • Accesibilidad. Estas aplicaciones tienen problemas con los programas de accesibilidad pues, al igual que los motores de búsqueda, no trabajan bien con texto cargado dinámicamente.
  • No se pueden usar fuera de línea. Por su naturaleza web estas aplicaciones no pueden ser usadas en el cliente como cualquier otra aplicación.

En el caso específico de ExtJS existe un factor que hay que tener en cuenta y que nace del hecho de ser una librería Javascript independiente de cualquier tecnología del lado servidor. No existe una forma fácil de realizar binding entre los component visuales con el respectivo modelo, lo cual genera que el programador tenga que escribir más código para validar y enlazar los formularios.

Es difícil hacer que el servidor haga push de información desde el servidor web hacia el navegador, haciendo que el cliente tenga que constantemente hacer pooling para obtener datos actualizados del servidor.

La falta de un diseñador gráfico limita la difusión de la aplicación al no proveer una forma fácil y rápida de desarrollar en él, la situación me recuerda mucho a los inicios de Java Swing donde la falta de un diseñador gráfico limitaba su alcance.

Un problema grave del layout manager es que si usas código personalizado dentro de un componente, como por ejemplo un iframe, entonces se hace complicado lograr que se redimensione junto con el layout pues cae fuera de su control, sin embargo hay formas de lograrlo mediante código.

Lo Feo

Su sistema de licenciamiento no contempla la licencia LGPL, o tu código es 100% GPL o debes pagar por su licencia de desarrollo.