Portada arrow Artículos arrow Aorcado bajo la luz plateada
Aorcado bajo la luz plateada
sábado, 18 de agosto de 2007

Silverlight No... no me he equivocado. Ya se que aorcado debería escribirse con una "h", pero es que no vamos a hablar de horcas, sino de Orcas y luces plateadas. (Es decir, Visual Studio 2008 -aka Orcas- y Silverlight :-) , entre otras cosas.

Mucho se ha hablado durante lo que va de año de Silverlight, la nueva tecnología de Microsoft que permite la creación de aplicaciones con un rico formato de contenidos en el navegador. Por ahí, a veces les llaman RIA (Rich Internet Applications). Es decir, contenidos interactivos que van mucho más allá de lo que el navegador y el html dan de sí. Hablamos de gráficos, controles avanzados. Etc.

Éste es un típico artículo de opinión acerca de la tecnología que se nos viene encima con esto de las RIAs, con un ánimo marcadamente tedioso-melancólico y, por supuesto, sin mucha más autoridad ni fundamento que la de un humilde programador.

El caso es que esto se veía venir desde hace años. El mercado de Internet es muy goloso y hay que meter la cuchara en la tarta. Cuanto más al fondo, mejor.

En los últimos años, creo que la guerra se ha centrado principalmente en las tecnologías del servidor: por un lado, el lenguaje de programación Java se traslada al servidor con la introducción de Servlets External link, luego JSP External link, luego EJB External link... etc hasta llegar a extrañas tecnologías que sólo los "gurús" son capaces de conocer. En el frente contrario, Microsoft utiliza los incombustibles ASP External link que versión tras versión van adquiriendo nuevas capacidades y creando nuevos quebraderos de cabeza, aunque por fin, y desde la fusión de los ASP con la plataforma .net External link podemos desarrollar aplicaciones con estado; y por otro lado, siempre marginales pero también saliendo siempre a flote, como el aceite, otros sistemas quizá menos pretenciosos, pero más atractivos para el programador medio, como PHP External link o los basados en Python External link, Ruby y Rails External link, etc.

Pero parece que ahora la guerra se ha desplazado a los clientes, es decir, a los navegadores (estabamos tardando). Los navegadores y las máquinas que los ejecutan ya son lo bastante potentes como para darles trabajo. Por supuesto, todo el manejo intenso de datos -la lógica de negocio- debe hacerse en el servidor, principalmente por motivos de seguridad y estabilidad, pero la parte del cliente puede desarrollarse intensamente potenciando la presentación. Hasta ahora, parte del trabajo relacionado con la presentación también se realizaba -y se realiza- en el servidor, por ejemplo, componiendo el html de la página.

Así pues, la evolución lógica de la tecnología es separar ya de una vez el interfaz de usuario y la lógica de negocio también en las aplicaciones de internet y dejar la parte de interfaz de usuario al navegador prácticamente en exclusiva. En este sentido, ha habido varios intentos tímidos, hasta ahora, que ha irrumpido Silverlight.

La idea es simple, aunque seguro que no es tan sencillo llevarlo a la práctica, ya que lo malo de Internet es que prácticamente todo debe ser compatible con lo anterior: los navegadores de hoy en día son capaces de ejecutar ya complejas secuencias de órdenes bien en JavaScript External link, o bien en cualquier otro lenguaje que se puede instalar a tavés de un plugin External link, siendo posible una gran manipulación de la interfaz que presentan. Bien... pues enviemos desde el servidor una aplicación que se encargue de la interfaz del usuario y que se ejecute en el navegador bien integrada con éste y que cuando requiera datos, comunique con el servidor, que ejecutará una acción correspondiente a la lógica de negocios, devolverá los datos y la aplicación en el navegador se encargará de presentarla. Eso es más o menos una RIA External link.

A lo largo de los últimos años se han producido varios intentos para logralo.

Creo que el primero de estos intentos serios fue el de Java External link con los applets External link. Desde luego, Java fué una gran idea. Además de funcionar como máquina virtual, el hecho de estar dirigido a la internet desde el principio le proporcionó muchas ventajas estratégicas, por no mencionar lo más importante: el acceso a las herramientas básicas de desarrollo siempre ha sido gratuito.

Hoy en día, la mayor parte de los ordenadores tienen instalada la máquina virtual de Java y pueden ejecutar aplicaciones Java y applets. (Acabo de mirar las estadísticas de éste sitio, y el 98.9% de los visitantes del último mes pueden ejecutar applets de Java). ¿Por qué no ha triunfado Java? Bueno... creo que por ser el primero. La idea de Java fué fantástica (aunque no nueva, en su momento), pero desde luego, llegó a materializarse con éxito. No obstante, ya han pasado más de diez años (lo que en este mundillo es casi una eternidad) y, lógicamente, adaptarse es cada vez más pesado. La plataforma Java ha llegado a ser un gran batiburrillo de tecnologías no demasiado integradas, que lo único que tienen en común es el propio lenguaje Java. Aunque el lenguaje ha evolucionado mucho desde la primitiva versión 1 hasta la 6 actual, ha ido arrastrando pesados lastres que no lo han convertido en una piedra angular de internet, empezando por el hecho de que los applets son autocontenidos, y no se comunican extensivamente con el resto de los elementos del navegador. Por supuesto, en el mundo empresarial y las intranets corporativas tiene un gran peso, pero ese mundillo no se caracteriza por la innovación, sino por la estabilidad. (¡Viva el Cobol External link!).

En fin, afortunadamente, fuera hay otro mundo que se mueve mucho más deprisa: el de la gran Internet. Volviendo al tema de la presentación, algo después que Java aparece en escena otro actor: Macromedia Flash External link. Hacia finales de los 90, un sencillo plugin para los navegadores hace las delicias de los usuarios presentando todo tipo de animaciones incrustadas en las páginas web. Estoy seguro de que sus desarrolladores iniciales no previeron que flash podría convertirse, como es hoy: un estándar de facto no sólo para presentar animaciones, sino también para servir de soporte a la presentación de aplicaciones de Internet. A mí me gusta mucho flash (como a todo el mundo), pero le encuentro un par de dificultades. Por un lado me resulta tremendamente difícil de utilizar y de programar, y por otro, todas las herramientas de desarrollo son comerciales, e implican un cierto desembolso. Para no bajarse del carro, la tecnología flash está intentando evolucionar hacia Flex External link y Air External link, pero sigue siendo, a mi modo de ver, algo complicado de aprender, y las aplicaciones para su desarrollo también son comerciales.

Bueno... y finalmente... Silverlight. La idea es buena y más o menos ortodoxa: utilizar un lenguaje de marcas para definir los elementos de la interfaz, y asociar código con esos elementos a través de eventos. El lenguaje de definición de la interfaz es XAML External link, y el código asociado puede ser JavaScript o código administrado (En C# External link, Visual Basic External link, etc). Si hace falta lógica de negocio en un servidor, pues se soluciona con servicios web. Además, lo bueno es que los servicios web no son exclusivos de un tipo concreto de servidor. Para ello, sólo hace falta un simple plugin del navegador. La idea me resulta atractiva... pero de momento veo poco maduro el tema del aprendizaje.

Quizá me vaya haciendo viejo, pero cada vez me aburre más implicarme en el dominio profundo de una tecnología. Por supuesto, tiene que haber gurús de todo tipo de plataformas, pero yo no quiero ser uno de ellos ni "casarme" con una tecnología concreta. Tengo mis preferencias, pero no me van los fanatismos. Lo que yo más valoro de una tecnología emergente es, por un lado, que la relación entre la productividad que permite y la curva de aprendizaje sea equilibrada. Es decir, que cada esfuerzo invertido en el aprendizaje se vea compensado con un notable aumento de la capacidad productiva. Ya sé que todo en esta vida lleva asociado un cierto esfuerzo, pero en los tiempos que corren, los programadores no nos podemos permitir el invertir demasiado esfuerzo de aprendizaje en una plataforma concreta. El mercado es muy cambiante y quizá todo ese esfuerzo no valga de nada. Quiero resultados relativamente rápidos a través de soluciones relativamente inteligentes. Necesito que las herramientas de desarrollo estén a mi servicio, y no yo al suyo. Necesito que me asistan y no que yo tenga que aprender complicadas técnicas y métodos de manejo. Necesito que lo que ya sé me sirva.

Por otro lado, creo que es imprescindible que parte de esas herramientas, al menos en versiones básicas, estén disponibles gratuitamente o bien con un coste lo suficientemente bajo como para ser asumido al nivel personal. Si no es así ¿cómo voy a invertir esfuerzo en el aprendizaje de un plataforma, si además de trabajo y tiempo me exige unos costes económicos prohibitivos? Aunque siento un profundo respeto y admiración por el software libre, tampoco tengo nada en contra del software comercial. Entiendo que hay algunos productos de gran calidad cuyo desarrollo ha sido muy costoso y sus desarrolladores deben recuperar la inversión. No obstante, quizá una empresa puede asumir los costes de comprar una licencia de paquete de software porque luego repercute esos costes a los clientes, pero yo, para aprender, no puedo permitírmelos. Aunque esto tampoco hace falta decirlo demasiado alto. Las empresas productoras de herramientas de desarrollo son cada vez más conscientes de ello. Basta mirar, por ejemplo, los sistemas gestores de bases de datos. Hace años, costaban una pasta incluso algunos de calidad deplorable. Hoy en día, prácticamente todos disponen de una versión gratuita para uso no comercial... pero claro, eso no ha ocurrido hasta que no se le han visto las orejas al lobo. Afortunadamente, hoy en día al lobo se le puede ver casi de cuerpo entero.

El caso es que a mi me gusta C# y la plataforma .net. Me alegré al saber que con Silverlight podría desarrollar RIAs en C# y distribuirlas a los navegadores más populares, incluido Firefox External link.

He descargado la versión Beta 2 de Visual Studio 2008 External link -también conocido como Orcas- y las herramientas de Silverlight para Visual Studio 2008 External link... pero de momento me está costando más de la cuenta. Las herramientas en sí proporcionan poca ayuda con el XAML, y me he aburrido rápidamente. Desde luego, todavía no se puede hacer ninguna crítica que no sea constructiva. Al fin y al cabo, Visual Studio está en fase beta y Silverlight 1.1 aún está en fase alpha. También me he llevado una pequeña desilusión al comprobar que las herramientas de silverlight para Visual Studio no se podían instalar en las versiones Express de Visual Studio 2008 External link (las gratuitas), al menos de momento.

En fin, estoy prácticamente seguro de que en breve podremos disfrutar de potentes herramientas para desarrollar en Silverlight de manera fácil y cómoda. Al fin y al cabo, Silverlight es una evolución de WPF External link, y Visual Studio 2008 sí tiene un buen soporte de éste tipo de aplicaciones. De momento, aparco el tema hasta que eso ocurra también con Silverlight.

Ah... tampoco podemos olvidarnos de otros jugadores en este juego. Se supone que en algún momento Sun sacará una tecnología de este estilo llamada JavaFX External link, por supuesto basada en Java. Pero de momento se sabe muy poco.

También se ha hablado de OpenLaszlo External link. El proyecto es muy atractivo y open-source, pero está basado en Java, y exige que el servidor pueda ejecutar Java, cosa que está muy bien si el servidor es tuyo, pero que obviamente presenta dificultades si el servidor te viene dado "a capón".

También se habla a menudo de AJAX External link, pero AJAX no es en sí una plataforma de desarrollo, sino una técnica que subyace bajo muchas plataformas, utilizable en multitud de contextos.

Bueno... mientras todo esto va evolucionando, miles de pequeñas aplicaciones escritas en el humilde php van cogiendo cucharaditas de la tarta. :-)

Perdón por el rollo. Debe ser fruto del aburrimiento y del síndrome prepostvacacional External link.

 
←Artículo anterior   Artículo siguiente→

Categorías

  • Ingeniería del software  ( 4 artículos )

    Acerca de la ingeniería del software y el ciclo de vida del software.

  • El programador elegante  ( 12 artículos )
    Una serie de artículos dedicados a buenas prácticas en programación
  • Opinión  ( 7 artículos )

    Artículos de opinión, no necesariamente fundamentada.

  • Básico  ( 12 artículos )

    Artículos básicos sobre temas básicos.

     

¿Quién está en línea?

 web tracker

Suscríbete

RSS feed Sindicación RSS

(¿Qué es la sindicación RSS?)


Suscribir por e-mail

¿Dónde estoy?

Estás en La tecla de ESCAPE, un sitio web personal en el que nos gusta hablar de algoritmos, informática, tecnología, ciencia, ingeniería, internet... y cualquier tontería que se nos ocurra. El punto de vista de nuestros artículos técnicos suele ser muy básico, así que a menudo adoptamos grandes simplificaciones. (Más...-Términos de uso)