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.
No related posts.

Sin contar que tiene muchos bugs, dificil de extender para crear tus propios controles y un mundo (o infierno) para integrar con otros frameworks como seam. Mejor elegir RIAs para tu presentacion D:
Efectivamente es complicado de usar con otros frameworks, justamente las pruebas que se hicieron fue con Seam, lo que logramos rescatar es el componente window que es mejor que el que provee Rich Faces.
Ahora podemos hacer popups sin mayor problema y seguir utilizando componentes richfaces dentro de él.
Para el tema de conectar los otros componentes la solución sería crear un generador de JSON para la data.
Definitivamente un fiasco.. yo lo utilice pra un proyecto con Zend y el manejo de las liberias por toda la aplicación solo me hace recordar la época del infierno de las dll’s, lo pesados que son sus widgets y por mas OOP que quice utilizar era poco rentable.. no le llega ni a los tobillos ni ninguna libreria Javascript a Flex de Adobe donde se hacen verdaderas RIA’s
Cuando dices lo de
“Su sistema de licenciamiento no contempla la licencia LGPL, o tu código es 100% GPL o debes pagar por su licencia de desarrollo.”
quiere esto decir que no puedo utilizarlo en mi aplicación web (servlets, jsps….), sólo utilizarlo.
Cuando se utiliza una librería con licencia GPL el código generado es GPL, por lo tanto si estás desarrollando una aplicación web está debe ser distribuida bajo la misma licencia.
ExtJS hasta la version 2.0 se distribuyó bajo la licencia LGPL salvo para código derivado que funcionalmente sea similar a ExtJS (en buen cristiano si quieres hacer una libreria como ExtJS entonces tenia que ser distribuida bajo GPL).
Por lo tanto si quieres usar ExtJS te recomendaría que utilices la versión 2.0 de su producto.
Según la web de GNU España (http://www.es.gnu.org/modules/content/index.php?id=8 al final):
“Esta licencia General Pública (GPL) no permite incluir este software dentro de programas privativos. Si su programa es una librería o subrituna, debería considerar si es mas útil permitir enlazar aplicaciones privativas con la librería. Si esto es lo que usted quiere, use la GNU Lesser General Public License (LGPL) en vez de esta licencia. ”
Pero en el preámbulo de la licencia también se dice:
“Cuando hablamos de Software Libre, hablamos de libertad, no de precio. Nuestra licencia General Public License (GPL) está diseñada para asegurarle las libertades de distribuir cópias de Software Libre (y cobrar por ese servicio si quiere), asegurarle que recibirá el código fuente del programa o bien podrá conseguirlo si quiere, asegurarle que puede modificar el programa o modificar algunas de sus piezas para un nuevo programa y para garantizarle que puede hacer todas estas cosas. ”
En conclusión:
1. La licencia GPL tiene “efecto viral”. Si tu aplicación usa una librería o componente de software con licencia GPL, tu aplicación también debe tener licencia GPL, sino incumplirías la licencia.
2. La licencia GPL no obliga a que se publique en alguna web el código fuente de tu aplicación, pero sí a que lo entregues a tu cliente (gratis o previo pago). Quizá sea un poco discutible la idea de pagar por obtener un producto con licencia GPL (de hecho, hubo una discusión al respecto en la Linux Week 2008 durante la exposición de Alfred Hayoshi, de E-volution Hypermedia S.R.L., http://tuxpuc.pucp.edu.pe/content/view/915/130/) pero la licencia lo permite.
Extjs es una muy buena libreria, de hecho considero que es de las mejores, sino la mejor en cuanto a componentes Javascript se trata. realmente está bien hecha y tiene conceptos muy interesantes, pero la idea de hacer todo por javascript no me termina de gustar del todo, yo prefiero un enfoque mixto, donde haya parte html junto al javascript con lo cual un diseñador puede encargarse de darle todos los toques necesarios y un programador podría dedicarse a hacer que funcione.
Sobre Ext hay algunos proyectos interesantes sobre todo para añadirle algunas de las cosas de las que carece por defecto javascript, como intellisense y detectar los errores antes de ejecutar el codigo:
http://code.google.com/p/extsharp/
Me parece un buen comienzo
Y otro que me parece se alinea más con mis gustos, es un wapper para utilizar los componentes de Extjs como si fueran custom controls de ASP.NET
http://www.extendersamples.rodiniz.com/
la verdad a mi me impresionaron gratamente los dos proyectos. El primero me hace recordar mucho a GWT de Google y el segundo a los controles de ASP.NET Ajax. No conozco de Java pero imagino que el ultimo proyecto se parece a los controles de JSF también.
Saludos! Nice Post
Hace mas de año y medio que utilizo ExtJS y componentes de ExtJS, y no tengo quejas para nada.
Durante mi vida de uso de JS, he usado Javascript directamente, use Prototype (me da nostalgia) eh usado jQuery (liviano y rapido y con muchos plugins), pero ExtJS me proveyo una suite de componentes que me resuelven muchas de mis funciones clasicas, con solamente definir un objeto.
Es perfectamente extendible, y customizable.
Sinceramente, si alguien se puede quejar, puede venir por el lado que para usar un selector, tenes que hacer algo como
Ext.get(‘objeto’) mientras que en prototype haces $(objeto) o en jQuery usas $(#objeto).
Pensas en componentes y no en Javascript, y eso te cambia mucho el terreno de juego y la vision de la aplicacion.
Es lo mismo que renegar de Symfony o CodeIgniter o Zend Framework o lo que sea, o renegar de Netbeans, anda a decirle a un flaco que en Java combina clases, que es poco extensible??
Sucede que para extenderlo necesitas aprenderlo…
Y ahi es donde se ve el salto de diferencia…
Saludos muchachos.
Hola, creo que hay que aclarar un poco que el titulo de tu articulo es ExtJS Lo Bueno, lo malo y lo Feo y luego terminas hablando de las RIA. Por Ejemplo:
“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.”
Cualquiera lo puediera tomar como que es lo malo de ExtJS siendo esta una caracteristica de las aplicaciones web, esto pudirea confundir un poco a los usuarios que no conocen ExtJS y podrían incluso dejar de probar este excelente framework a mi parecer por detalles como este.
Hola, yo tambien he desarrollado aplicaciones usando ExtJs y cuando estaba buscando opciones para crear aplicaciones web fue lo mejor que encontre y tampoco tengo quejas, yo pregunto lo siguiente:
1. Si no es tan bueno como dicen, porque tiene tanto exito?
2. Porque tiene una lista tan grande de clientes – que al menos yo considero – importantes?
3. Porque hay proyectos que buscan integracion con visual studio?
Tambien considero que hay una inconsistencia entre el titulo del articulo y el contenido del mismo, por lo que dice Kangulo y tambien que la desventajas que dices sobre que se carga todo al inicio – lo cual depende de tu forma de implementarlo – no lo aplico a extjs poruqe entonces se estaria obviando ajax lo cual hace la carga de manera asincrona y segun lo que se necesita.
Y el resultado final, una experiencia satisfactoria para el usuario!!!
Y se me olvidaba en cuanto a la programacion, si quieres un intelisense para javascript con diversas librerias usa Aptana mucho mejor que en visual studio.
EXT JS es la mejor libreria Javascript para trabajar con RIA, yo tengo un CRM y un Sistema Hospitalario hechos con esa plataforma.
Para mi Ext JS es la mejor librería de javascript, es muy fácil de aprender gracias a la gran comunidad que hay detras de ella, tengo casi dos años trabajando con Ext y nunca ha habido algo que no se pueda hacer, sobre lo que comentas de que es mas lento por que todo se carga al principio, no estoy de acuerdo, yo utilizo un manager que carga todo cuando se necesita, al principio solo cargo el “core” de mi aplicación y lo demas se va cargando “on the fly”, realmente que Ext es una librería desarrollada con la mejor ingeniería y arquitectura en el mercado
saludos
Hola,
Hace unos meses desarrolle mi primera aplicacion en Ext JS y la verdad me fue muy bien, desde ese momento uso Ext JS para todo, algo que cabe resaltar es la documentacion, los foros, el soporte es muy bueno! y como dice Crysfel no he encontrado nada que no pueda hacer y lo mejor facil, una vez cojas el ritmo y lo conoscas bien, todo se hace muy facil, a mi modo de ver agiliza el tiempo de desarrollo y te garantiza un estilo visual y funcional que a los clientes les encanta.
Saludos.
Yo tengo relativamente poco tiempo trabajando con el, y me parece fantástico el sistema, poco a poco estoy mudando partes de una web de un cliente extjs, y aunque la resistencia al principio fue un poco fuertes, se van dando cuenta de las ventajas que tiene, realmente lo recomiendo.
Estoy de acuerdo con la mayoría, extjs es un excelente librería, si bien su integración con muchos frameworks no es tán fácil esto no es una limitante real.
.
En cuanto a su rendimiento, si bien no alcanza gran performance como Dojo o Mootools no deja de ser importante en el mundo javascript debido a su gran cantidad de widgets y a su gran comunidad.
La mayor desventaja que le encuentro a esta librería (framework o toolkit o como se le quiera llamar) es que debido a su cambio de licenciamiento poco a poco va a perder frente a sus competidores debido, por dar un ejemplo, a la descontinuidad con la compatibilidad con los nuevos browsers.. si bien pueden surgir forks de esta librería, ninguno ha tenido la aceptación ni expectativa de la comunidad comparable con sus primeras versiones.
Y a Roy Roy le diría que pruebe el plugin de Aptana para Eclipse, o sino que espere a que VS lo incorpore (si es que no incorpora JQuery antes). Buena la primera mitad del post
Hola tambien desarrollo con Ext y es una magnifica libreria con una gran ingenieria. Que es dificil de aprender, realmente no lo entiendo tiene una gran comunidad y puedes encontrar ayuda muchisima ayuda.
Saludos.
Es una excelente libreria!!
Pues Yo use Extjs este último para un gran proyecto y la verdad quede muy satisfecho por el resultado. Por la forma del proyecto este exigia que sea un aplicación RIA, entonces al inicio se comenzo el desarrollo con flex, y quede muy decepcionado por el bajo rendimiento de la aplicación quede asqueado, entonces decidi cambiar toda la interfaz a EXTJS!.
Y pues aplausos para esta gran libreria, y también se puede usar localmente, y su manejo es extremadamente sencillo, y esta muy bien documentada, además de que existe una gran comunidad detrás de ella
hola a todos me gustaria saber con que ide trabajan para un mejor desarrllo con extjs
Yo personalmente trabajo con Netbeans porque maneja muy bien los proyectos maven y ant, aunque no provee ventaja sobre otros IDES en el manejo de Javascript.
Puede ver este enlace donde preguntan lo mismo que tu.
http://www.sencha.com/forum/showthread.php?91518-Best-IDE-for-Ext-JS-3.1.0&p=434846
Estoy de acuerdo con Crysfel, no hay que cargar todo de inicio, ya hoy día cuenta con una simulación de IDE que mejora su la agilidad de desarrollo. He realizado varias aplicaciones utilizando Extjs y los clientes están muy satisfechos. Flex en mi opinión no es mejor que Extjs.
La verdad, cuando vi por primera vez las interfaces de Extjs quede fascinado, ya que tiene muchos controles estándarizados, soporte para PHP,JSP y ASP, incluso ya cuenta a la fecha con su diseñador en su versión 1.1.3
Este diseñador es muy bueno para ser su primera versión, ¿ que sera cuando ya se encuentre en la versión 7.0 ? Imaginense !!
Yo solo he desarrollado un Sistema de Registros Académicos que maneja miles de registros con PHP en 4 meses(y eso que use como IDE a Netbeans, jeje), el desempeño y la interfaz de usuario son notables.
De verdad se los recomiendo junto con PHP o JSP(usar Springs e Hibernate)
Mi calificación para Extjs seria 8 de 10
La verdad se los recomiendo, saludos desde Huacho,Perú
Estamos usando extJS en un proyecto para la parte de la interfaz que consume datos de un RPC json, en cuanto a diseno puedo decir que es necesario tener mucha practica y mucha vision de los componentes que se crean y de sus comportamientos, los tiempos de respuesta en la carga de datos son similares a otros componentes y varian mucho segun el tipo de browser se prensentan mayores problemas en la interpretacion con browsers IE 6, 7, 8. La parte positiva que puedo ver es la velocida con que se pueden crear escenarios complejos donde se pueden realizar diversas gestiones asincronas con tiempo de respuestas excelentes, quizas para tener este resultado en cambio se debe pagar caro, en el sentido que se escriben lineas y lineas de codigo para poder crear los componentes. De todos modos el proyecto es estable y cuando hay problemas la comunidad de desarrolladores extJS es grande, se pueden encontrar soluciones en breve tiempo.
LLevo utilisando ExtJs hace unos meses con php en 3 capas y me va muy bien
Yo vengo de usar jQuery hace 3 años pero ahora quiero usar Extjs solo para crear mi panel de administracion de mi propio cms que tengo realizado.
Mi pregunta del millon es, ¿Y que pasa si uso Extjs para uso comercial y no pago ni 1 centavo? obvio que nadie sabria de mi proyecto ya que es un panel de administración… supongo que muchos ya lo han hecho
Extjs es muy buena libreria, incluso ya cuenta con diseñador gráfico llamado extjs designer, y lo de la licencia es en lo único que estoy de acuerdo contigo.
Saludos.
Tengo 4 años realizando aplicaciones web y 2 años utilizando ExtJS, he probado varios frameworks y puedo decirles que ninguno tiene el mismo potencial que ExtJS, es perfecto para realizar interfaces con componentes complejos, incluso puedes cambiar los temas o crear tu mismo tema, o puedes modificar el estilo de un componente al momento de su declaración, es muy versatil y no me he topado con ningún problema con el cual no haya podido resolver, en cuanto a la licencia, me parce justo pagarla ya que es una excelente librería y en realidad lo vale, soy un partidario del software libre y me parece que es justo pagar por algo que te va a generar a ti algún tipo de ganancia.
Para los que dicen que no se puede usar con JBoss Seam, es una farsa. JBoss tiene el proyecto RestEasy que te permite exponer una capa de servicios REST que automágicamente te convierte todo tu modelo a JSON.
Viva ExtJS.
Yo he usado y estoy usando ExtJs, y es lo mejor que he usado para mis aplicaciones web, el desconocimiento de framework, incita a comentar lo malo o feo, para conocimiento de todos, se pueden crear nuevo controles e incorporar plugins a los componentes del ExtJs a este framework lo he usado con php y .NET y funciona perfecto, su arquitectura es muy madura y mantenible.
Saludos a todos…
Yo uso extjs desde el primer mes de lanzamiento(Extjs v.1)
bueno en la primera version tenia algunas incoveniencias pero eso fuen mejarando en las versiones seguiente, a partir de la version 3 las cosas han cambiado por completo, el que desarrolla con extjs puedes hacer aplicaciones complejas de manera muy simple. Yo estoy desarrollando un plugin JCode para netbean, por el momento
la version 1 ya esta publicado, si te interesa puedes descargar de la pagina: http://plugins.netbeans.org/plugin/41629/jcode-form-builder-with-extjs y pueder ver un video tutorial en: http://www.youtube.com/watch?v=5UUktswhigs
en la version 2 se contenpla tanto el diseñador en tiempo real.
Yo tengo utilizando esta libreria por 2 años , hice una aplicacion para una empresa y corre fantastico, el cliente quedo satisfecho, no tengo ninguna queja de este SDK, ahora la version 4. x esta de super lujo, rapido y ya integra MVC.
Utilizo ExtJs desde hace 3 años y es la mejor libreria para JS en cuanto a desarrollo de aplicaciones