septiembre 02, 2008

Javascript - La programación del futuro

image Para los que no lo saben aún, Google está a punto de lanzar hoy browser propio desarrollado casi desde cero: Google Chrome, basado en el motor WebKit que usa Opera, y el proyecto quedará publicado como open source.

Como no podía ser de otra manera, el Maestro se ha hecho eco de la noticia, y leyendo sus comentarios retomo una idea que me viene rondando hace rato:

En poco tiempo el lenguaje de desarrollo principal será Javascript.

Lo mío no es ninguna iluminación; ya lo comentó más extensamente el inefable Steve Yegge, y mucha gente más. Y de hecho no es futurología; ya está sucediendo.

 

¿Cómo un lenguaje famoso por sus limitaciones y complejidades ha llegado tan lejos? Creo que básicamente porque el lenguaje mismo nunca fue el problema, sino cuestiones de contexto. Los culpables principales de la mala de Javascript son los browsers, creo.

 

Problema 1 - Incompatibilidades

Los mayores problemas de escribir código cliente en los browser son las incompatibilidades de sus APIs, que obligan a aplicar soluciones sumamente complejas para tareas triviales.

La solución a este tema son las librerías de más alto nivel que resuelven estos temas por nosotros, brindándonos de paso más funcionalidad lista para usar (y adecuadamente probada), minimizando la cantidad de código necesario por varios niveles de magnitud. El ejemplo más notorio de esta tendencia para mi es jQuery.

 

Problema 2 - Implementaciones

El rendimiento tradicional de Javascript no ha sido -digamos- brillante. Las implementaciones originales estuvieron pensadas para escenarios limitados y no en el uso intensivo que se le da actualmente. La manera en que se representan los objetos en memoria es poco eficiente, y por eso en aplicaciones complejas el desempeño empeora meteóricamente.

Varias soluciones están en camino. Tanto WebKit/Opera, como Mozilla/Firefox e Internet Explorer 8 siguen mejorando las implementaciones del lenguaje, pero más radicalmente, Microsoft está trabajando en su implementación de Managed JScript, que es una implementación basada en el Dynamic Language Runtime, que ejecuta JScript sobre el runtime de .NET (dentro del browser, utilizando Silverlight).

El inminente Chrome de Google utiliza también una máquina virtual llamada V8, que cambia radicalmente el ciclo de ejecución, compilando parte del código al código de la plataforma nativa, y mapeando las estructuras de datos a estructuras reales.

 

Problema 3 - Herramientas

Los entornos de desarrollo más usados para Javascript han sido tradicionalmente editores de texto, desde el espartano Notepad hasta los más profesionales VIM ó Notepad++.

Sin embargo, la explosión de Ajax ha provocado un nuevo acercamiento, y hoy hay IDEs mejores como Aptana, Spket, o el nuevo y mejorado Visual Studio 2008. También, el uso de Annotations en el lenguaje se ha popularizado como una manera de proveer mejor información a las IDEs sobre las API de las librerías y el código, mejorando las posibilidades de las herramientas de brindar feedback permanente.

 

Problema 4 - Lado servidor

Es cierto: este tema no parece tan importante todavía, pero existe, y tiene que ver con la brecha entre el modelo de programación del lado cliente y del lado servidor.

La primer medida para mejorar la situación es el creciente uso de JSON como formato de serialización, enviando datos desde el servidor al browser de manera que éste pueda realizar un Eval() y reproducir una estructura de datos sin necesidad de un parseo más costoso. Incluso Windows Communication Foundation ha incorporado JSON como un formato alternativo de intercambio de mensajes.

Sin embargo, estamos generando esto desde el servidor un tanto antinaturalmente, porque escribimos el código de ese lado en otra cosa (Python, PHP, C#, Ruby, etc). El siguiente paso, con las APIs adecuadas, y un motor de ejecución eficiente como el DLR ó V8, es utilizar Javascript del lado del servidor. En el mundo Java también hay varios proyectos trabajando fuerte en este sentido, como Phobos, Helma o Rhino.

 

Venciendo nuestros prejuicios

Ha llegado la hora. Con el soporte adecuado a nivel de ejecución, herramientas apropiadas y un buen conjunto de librerías, Javascript vuelve a ser un lenguaje que combina elegantes características dinámicas, funcionales y de prototipos. Tiene la sintáxis familiar de la familia C, y todos los desarrolladores web -en mayor o menor medida- hemos pasado por ahí.

¿En qué programaremos nuestras nuevas aplicaciones en dos o tres años más? Mi apuesta está hecha.

septiembre 01, 2008

SDK de Dynamic Silverlight actualizado

dynamicSilvelightJimmy Schementi publicó la tercer iteración del SDK que permite desarrollar aplicaciones Silverlight utilizando IronPython, IronRuby y/o JavaScript manejado ejecutándose dentro del browser.

El SDK incluye todo lo necesario para programar aplicaciones cliente utilizando estos lenguajes, incluyendo Chiron (un web server mínimo que automatiza la construcción de los archivos .XAP que empaquetan una solución Silverlight, facilitando la ejecución durante el desarrollo), y los tres lenguajes.

En todos los casos están disponibles los fuentes, lo que es sumamente interesante aún si uno no es un language freak que se interese por estos temas. En particular, Chiron es un bello ejemplo de código: unos 100 Kb de fuente en C# que implementan lo básico de un servidor web y más.

La versión de IronPython es la 2.0.xxx, aún no liberada, que utiliza el Dynamic Language Runtime (la última versión estable es la 1.1.2, pero no tiene el runtime factorizado y no está soportada en Silverlight), e incluye los módulos estándar.

El build de IronRuby es uno de los últimos y también incluye las librerías, al igual que sucede con JScript.

Recordemos que todo esto -aunque muy avanzado-, sigue siendo preliminar porque Silverlight 2.0 (la versión que incluye el runtime de .NET y soporte para lenguajes estáticos y dinámicos) está todavía en Beta 2.

Es de esperar que las versiones finales de los lenguajes y el SDK confluyan con el lanzamiento de la versión final de Silverlight 2.

agosto 21, 2008

Desarrolladores Olímpicos

Telecom OlímpicoFelicitaciones a los amigos de Arnet por el resultado de su esfuerzo con el web site de cobertura de los Juegos Olímpicos.

Trabajaron muy duro durante los últimos meses, y se arrglaron solos con muchos desafíos de todo tipo.

Lo mejor de todo es que cuentan la experiencia en su blog.

¡Excelente trabajo!

Arrancando en Southworks

Bueno, ya es oficial: aunque sigo con mi actividad de medio tiempo como Arquitecto para Microsoft de Argentina y Uruguay, el resto de mi tiempo lo estoy concentrando principalmente en Southworks, una compañía que vi nacer hace muy poco y realizar un increíble crecimiento, donde participan buenos amigos con los que compartimos proyectos y eventos.

Como parte del proceso de incorporación tengo un nuevo blog, en inglés, que es el lenguaje de comunicación de la empresa, que se dedica principalmente al mercado internacional. Dejo el link a este nuevo blog para los interesados.

image

agosto 12, 2008

VS2008 SP 1 liberado -> herramientas para Silverlight actualizadas

Asterix

Cuando ya me daban por perdido, vuelvo a bloguear, de regreso de la Galia.

Ayer se liberó finalmente el Service Pack 1 de Visual Studio 2008 y el .NET Framework 3.5 (y los nombres son cada vez más largos para todo).

 

Del lado de VS 2008, lo que se incluye es:

  • Mejoras en los diseñadores de WPF
  • Soporte a SQL 2008
  • El Designer de ADO.NET Entity Framework
  • Componentes para C++ como un Ribbon basado en MFC
  • Mejor soporte para JavaScript y AJAX
  • En Team System, mejoras en control de versiones y performance.

Del lado del Framework:

  • ADO.Net Entity Framework
  • ADO.Net Data Services
  • Soporte especial para features de SQL 2008
  • Grandes mejoras de performance en WPF sin necesidad de cambiar código
  • Mejoras en WCF
  • Un set de instalación mejor y menor para el lado cliente

 

Importante:

Para quienes están trabajando con Silvelight 2 (beta 2), es importante instalar la actualización de las herramientas DESPUES del Service Pack. Como siempre, leer con cuidado las instrucciones de desinstalación de la versión anterior.

Estas herramientas actualizadas para Silverlight se pueden usar con la versión final de VS 2008 con o sin el SP1 (final) pero NO con la beta del SP 1 (que ya deberíamos desterrar).

Como siempre, un merengue para los que hayan instalado betas en sus máquinas, por lo que es importante recordar que las betas hay que instalarlas siempre en ambientes virtualizados y destructibles.

junio 30, 2008

LINQ to SQL en ambientes desconectados

Una pregunta frecuente que me hacen muchos clientes al hablar de LINQ es cómo se relacionan LINQ to SQL y otras alternativas de acceso a bases de datos (como el Entity Framework, LINQ to Entites, etc).

Mi respuesta corta es que LINQ to SQL está pensado inicialmente para escenarios más sencillos, y el mecanismo más completo para aplicaciones corporativas es el ADO.NET Entity Framework. LINQ to Entities no es más que uno de los mecanismos de acceso a los modelos de entidades, lo que pueden ser consumidos también con métodos tradicionales como DataSets, DataReaders, etc, e incluso por herramientas de reporting y otros consumidores OleDB. El Entity Framework además ya tiene providers disponibles para los motores de base de datos más importantes hoy en día.

Pero volviendo a LINQ to SQL, que provee modelos más limitados y sólo soporta SQL Server, pero tiene una curva de aprendizaje muchísimo menor, veamos qué alternativas tenemos para utilizarlo en aplicaciones reales.

La siguiente es una serie de artículos en MSDN que muestran mecanismos de utilizar LINQ to SQL en aplicaciones en capas, algo que es posible aunque no evidente. De todas maneras, la curva para adoptar este tipo de soluciones sigue siendo menor a adoptar el Entity Framework.

Agradecimiento a Wriju por la lista completa.

Namoskar!

junio 27, 2008

Almuerzo de la Comunidad de Arquitectos

Hace un rato almorzamos con medio centenar de colegas, cerrando el año fiscal 2008 de Microsoft. Fue muy bueno reencontrarse con la gente que nos viene acompañando desde hace mucho tiempo, pero en masa, y en un clima más distendido aún que el del RAF 08.

Arquitectum.org

Aprovechamos en el almuerzo para anunciar la disponibilidad de los primeros videos de sesiones del RAF 08, especialmente dedicados a quienes no pudieron asistir.

Todas las sesiones están muy buenas, pero no puedo dejar de recomendar la presentación del Maestro Angel Java López  sobre Microsoft Robotics, que no sólo despertó mucho interés en la gente que no se esperaba tantas posibilidades de aplicación más allá de la robótica, en situaciones comunes de entornos distribuidos, sino que también divirtió a la platea con su buen humor habitual.