26-01-2007 Raul Vicente
Hace poco he leído un post escrito por David Van Couvering que me ha hecho reflexionar y aunque no estoy de acuerdo en todo lo que dice no le falta razón en alguna de sus cosas.
David plantea que si se mira el desarrollo Web desde el punto de vista de la accesibilidad, un Applet es tan inaccesible como pueda serlo una Aplicación Ajax (no funciona sin el JavaScript activado) y si se mira desde el punto de vista de la eficiencia, un Applet le da mil vueltas ya que una vez descargado, se ejecuta en el cliente, así que cuando la gente habla de “Fast Ajax” la verdad es que el término no es adecuado ya que un applet es mucho más rápido.
El punto en el que discrepo es que aunque es verdad que si se quiere realizar una interfaz rica para una aplicación Web un Applet es la manera más directa y eficiente, también es la menos escablable y extensible, como todo el mundo sabrá, por eso y por el tema de la accesibilidad los applets cayeron en desuso en los tiempos modernos. Una aplicación Ajax podrá ser muchas cosas, pero desde luego, si está bien pensada puede ser escalable y extensible sin ningún problema. Ambas cosas a mi entender son cosas distintas y hay que mirarlas desde distintos puntos de vista.
¿Que pensaís vosotros?
Me gustaría que la gente me diera su opinión ya que este artículo me hizo darle vueltas a la cabeza y a lo mejor es una chorrada mía o a lo mejor hay más gente que se había planteado esto antes.
El artículo original se encuentra aquí:
http://weblogs.java.net/blog/davidvc/archive/2007/01/what_java_is_be_1.html
1. Luis Artola | enero 26th, 2007 at 11:55 am
Pues en eso estamos, en intentar encontrar una tecnología que reuna todas las características necesarias para permitir hacer aplicaciones cliente servidor de la mejor manera posible. Quitando las opciones de escritorio (java swing o cosas peores) nos quedan las opciones web.
Para mí, la pregunta clave es: ¿necesitamos que nuestra “web” cumpla cosas específicas de una web? ¿accesibilidad? ¿indexación en google? etc…
Si la respuesta es SI, podremos descartar el applet de base. NO SE PUEDEN HACER PAGINAS ACCESIBLES NI OPTIMIZADAS PARA BUSCADORES CON APPLETS.
Ahora bien, esto tampoco significa que porque una página esté echa con AJAX, ya sea accesible y óptima para google, ni mucho menos. Pero al menos tendrá la oportunidad de serlo.
En fin, por analizarlo desde un punto de vista concreto, diferente al de la “extensibilidad y escalabilidad”, que también es otra aproximación válida.
2. gimenete | enero 27th, 2007 at 1:24 am
No estoy de acuerdo en varias cosas.
1.- una aplicación web con ajax puede ser accesible. Primero la haces con HTML sin javascript alguno y luego utilizas javascript no intrusivo para mejorar la esperiencia de usuario. Es decir, añades eventos a los enlaces, formularios, etc. para que en vez de funcionar de la forma clásica, funcionen con peticiones asíncronas.
Ejemplo:
<a href=”unapagina.php” id=”foo”>click</a>
esta sería la versión clásica. Luego con javascript…
document.getElementById(“foo”).onclick = function() { /* ajax aquí */ return false; }
Hay librerías que te facilitan esta tarea (menos código y que funcione en todos los navegadores).
Por lo tanto es posible hacer una aplicación ajax accesible.
2.- Un Applet es perfectamente escalable. Y también debería ser tan accesible como cualquier otra aplicación de escritorio. accesibilidad en swing.
3.- Los applets a mí me parecen pesados. Al menos más que flash y javascript.
Un saludo.
3. mondelo | enero 27th, 2007 at 12:49 pm
Yo también pienso que un applet es más escalable que una aplicación ajax, al fin y al cabo descargas el trabajo al cliente con lo cual un aumento significativo de usuarios no se resiente en el servidor.
Para realizar la interfaz de usuario, sin lugar a dudas el applet le da mil vueltas a cualquier interfaz web, se mire por donde se mire. La única pega está en la indexación de google.
Sin embargo todo depende en qué entorno se vaya a utilizar. Si es en una web accesible para el público en general, donde además no tienes control sobre la máquina del cliente (por ejemplo para saber si tiene jvm) entonces la solución es ajax. Sin embargo yo me estoy planteando la utilización de applets en entornos controlados (entornos corporativos) donde creo que un applet ofrece más ventajas que una aplicación web.
En cuanto a la “pesadez” de los applets, es cierto, pero creo que parte de su fracaso es que se adelantaron a su tiempo. Hace unos años, cuando se nos prometió que los applets eran la solución definitiva, el ancho de banda era escaso y eso provocaba unas cargas lentísimas. Hoy en día hasta la suegra de mi vecino tiene una ADSL a tropecientos megas, sin embargo nadie se ha atrevido a retomar esta tecnología “publicamente” quizás porque pesa más el dogma de fe que dice “los applets son lentos y pesados”. Sin he visto soluciones que utilizan applets sin ningún pudor: por ejemplo Oracle ha decidido que en este “mundo web” en que vivimos, la mejor forma de publicar las antiguas aplicaciones hechas en forms es convirtiéndolas automáticamente en applets en su servidor de aplicaciones.
4. Luis Artola | enero 27th, 2007 at 7:05 pm
Estoy de acuerdo con casi todo lo qeu decis. Sólo un apunte. yo en mi comentario he dicho que las aplicaciones con AJAX SI se podían hacer accesibles. No lo contrario como se me responde
5. Raul Vicente | enero 28th, 2007 at 11:33 pm
Cuando he escrito que un Ajax no funcionaba sin JavaScript me refería a utilizar Ajax sin ningún tipo de cuidado, no obstante si se vigila el código JavaScript se puede conseguir que la aplicación sea multinavegador, pero ¿si el usuario desactiva el JavaScript del navegador? por ejemplo un usuario ciego con un navegador especial, si se desea que la aplicación sea accesible habría que dar una posibilidad a aquellos usuarios que no tengan activado el JavaScript, vamos duplicar el código por si acaso lo que al final da más trabajo que otra cosa, para eso hago una aplicación clásica que se que va a funcionar siempre y me ocupo de tener cuidado con el JavaScript.
En cuanto al tema de los applets me he fiado de lo que me han comentado mis compañeros que los han utilizado, si alguien sabe como hacer un applet escalable y extensible me gustaría saberlo.
Mis compañeros me han comentado que para hacer eso en Java hay una forma de hacer una aplicación cliente Swing y si se implementa de una determinada manera se puede configurar una aplicación web que lanza la aplicación y si existe una nueva versión descarga el nuevo cliente, de esta manera se puede tener una interfaz rica mejor que con un applet y te olvidas de los problemas de los applets, eso sí lo que al final se realiza es una aplicación cliente-servidor no una aplicación Web, pero la interfaz mejora sustancialmente.
No obstante es la opinión de quienes los han usado, a mí me ha parecido razonable si sabeís como utilizar los applets de una manera más razonable para que sean escalables y extensibles me gustaría saberlo.
6. gimenete | enero 29th, 2007 at 12:27 am
Raúl, de lo que tú hablas es de Java Web Start.
Y sobre applets… ¿por qué un applet no va a ser escalable? Un applet es una aplicación Java. Java es un lenguaje orientado a objetos infinitamente escalable! qué problema hay?? Por supuesto es mucho más escalable que JavaScript porque tiene mejor modularidad (paquetes), mejor orientación a objetos, es fuertemente tipado y tiene herramientas de desarrollo mucho más potentes. Además tiene un API estandar muy completa y tienes verificación de errores en tiempo de compilación.
Que alguien me de una sola razón sobre eso de que un applet no es escalable.
Un saludo.
7. Raúl Vicente | enero 29th, 2007 at 8:41 am
Buenas ya he comentado que yo me he fiado de lo que me han dicho mis compañeros, tal vez sea porque ellos los utilizaron cuando el ancho de banda era escaso y la descarga del applet era pesada hoy en día ni siquiera se notaría.
Bien pensado, gimenete tienes razón dado que un applet está hecho en Java puede ser igual de escalable que cualquier aplicación Java.
He pedido opinión porque yo no los he utilizado y el artículo me dio que pensar, ya que David Van Couvering apostaba por recuperar los applets y mis compañeros los ponen a caer de un burro.
Entonces entre la disyuntiva de utilizar una aplicación Ajax, que al final tiene sus problemas o un applet que tiene también los suyos estoy de acuerdo con la solución que propone mondelo dependiendo de en que entorno se vaya a utilizar, si es en un entorno controlado (el cliente tiene JVM) el applet puede ser una opción sino no ya que ambos pueden ser igualmente escalables.
Gracias a todos.
8. gimenete | enero 29th, 2007 at 7:04 pm
Hola de nuevo.
Hace tiempo en mi weblog hablé del tema de aplicaciones de escritorio vs aplicaciones web (http://weblogs.javahispano.org/page/gimenete?entry=aplicaciones_web_vs_aplicaciones_escritorio).
Este tema es bastante recurrente pero siempre interesante. Cada tecnología tiene sus pros y sus contras. Creo que las aplicaciones web aportan muchas ventajas, pero las tecnologías para construirlas fallan por bastantes partes. Sobre todo las tecnologías estándar HTML+CSS+JavaScript. Es la solución estándar, pero deja mucho que desear. Creo que el W3C tendría que plantearse crear un nuevo estándar que permitiese programar aplicaciones web de forma más cómoda, un JavaScript más estándar entre navegadores, componentes más ricos en los formularios (selectores de fechas, editores WYSIWYG,…). Y es que es muy doloroso tener que enfrentarse a hacer una aplicación con AJAX y superar los problemas que ello conlleva: mantener una versión no-AJAX para que funcione sin javascript, mantener el bookmarking y el botón “atrás”, pelearse con las diferencias entre navegadores, etc.
Pero bueno, de esto no sólo tiene culpa el W3C, sino la capacidad de los navegadores de adoptar los estándares. Sobretodo IExplorer… habría que enterrar a IExplorer!!
saludos!
9. Raul | enero 29th, 2007 at 10:44 pm
Gimenete estoy de acuerdo contigo, el W3C ha empezado a tomar cartas en el asunto para acabar con la incompatibilidad de los diferentes HTML dentro de los navegadores con el estándar XHTML 2.0 que sólo funciona una vez validado, pero todavía hay mucho que hacer para estandarizar los CSS y el JavaScript, sobre todo si Microsoft no hace nada porque sea estándar.
En cuanto al tema del Ajax ya hay librerías que empiezan a automatizar el uso del Ajax dentro de los frameworks MVC como es el caso de ICEFaces que proveen de todo tipo de componentes, pero no la he probado en producción así que no se como de eficiente es el JavaScript que genera.
Un saludo
10. Roberto M. Oliva | febrero 2nd, 2007 at 12:29 pm
Yo ha descubierto hace una meses Flex de Adobe y todas estas cuestiones que planteas aqui se me han acabado.
Se puede seguir programando en AJAX porque determinadas aplicaciones así lo demandan, pero, bajo mi punto de vista, Flex es la solucion óptima para el desarrollo de RIA’s (Rich Internet Application)
Un saludo
11. Raúl Vicente | febrero 2nd, 2007 at 8:45 pm
No conocía Flex así que me la miraré, gracias por la información si desde luego es tan buena tendré que hacer un post hablando de ella. Muchas Gracias.
Un saludo