¿Microsoft realmente usa HTML5 para desarrollar aplicaciones en Windows 8?
Con Windows 8 ahora podemos desarrollar aplicaciones en varias plataformas o lenguajes, empezando por Visual Basic, C#, C++ y lanzaron ahora la compatibilidad para hacer apps con HTML5 y Javascript. Yo para Windows Phone he usado C# y aunque todavía me parece una monstruosidad el lenguaje por la cantidad de cosas que tiene y la facilidad con la que se manejan todas las acciones en Windows 8 quise usar HTML5 que es mi fuerte de verdad y les quiero compartir mis impresiones.
Entonces, vamos a hablar sobre qué tan cierto es que Microsoft implementa los nuevos estándares web a su plataforma de desarrollo, o si sólo es puro cuento y nada más se quiere limpiar la reputación diciendo que lo soporta cuando en realidad no.
Como vemos en la imagen de Microsoft ya tenemos mucho que aprovechar para poder construir aplicaciones y la que se añade es HTML/ CSS y Javascript. En C# o C++ Microsoft usa su propia modificación de XML llamado XAML para poder crear la interfaz, que es más o menos como un HTML súper vitaminado, pero ¿es realmente HTML5?
La respuesta es Si
Aunque a mi me costaba creer lo cierto es que en realidad lo que vemos es HTML5, desde la semántica, las etiquetas, el funcionamiento, todo funciona tal y cómo debería funcionar. Windows 8 tiene una característica muy especial en cuanto a vistas que se llama snap view, que es la posibilidad de poder anclar aplicaciones a un costado, para tener dos aplicaciones al mismo tiempo en la pantalla, y para lograr esto en HTML hacemos uso de CSS para poder lograr el llamado Responsive Design.
Si alguien ha usado responsive design sabe que hacemos uso de los queries y medias para que los estilos reaccionen a una determinada dimensión de pantalla, y Microsoft aunque parezca extraño también los implementa. Todo el CSS3 en general lo soporta sin tener que hacer uso de los prefijos, y hasta es curioso porque para las aplicaciones podemos hacerlo así, pero ni en IE10 me deja hacerlo, algo tonto y curioso pero efectivo porque entonces la plataforma es más compatible con el estándar que el navegador web de la misma Microsoft.
Pero…
De todo lo que nos prometen Javascript es el único que no es totalmente Javascript. Por defecto podemos usar javascript para las aplicaciones, pero nos daremos cuenta que no es suficiente para poder desarrollar una aplicación que por ejemplo, implemente llamadas al sistema como notificaciones o jale un XML para presentarlo, es muy complicado, y si decimos que no podemos hacer uso de jQuery o algún otro framework entonces de verdad estamos perdidos.
La solución que ideó Microsoft fue crear su propio framework en Javascript llamado WinJS, que sin afirmarlo completamente es una abstracción muy grande que implementa funciones de .NET para que con líneas de código muy sencillas podamos hacer uso de todo el potencial que ofrece WIndows 8. Y es en este punto donde me quiero concentrar.
WinJS es una librería que aprovecha las funciones de .NET y por lo tanto no sirve para usar como una librería al estilo jQuery, y es ahí donde creo que Microsoft ha errado bastante, porque la librería es extremadamente poderosa y creo que si hubiera podido hacerla compatible fuera de su plataforma podríamos tener versiones de aplicaciones Modern UI pero en web, haciendo que tuviera cierta preferencia el desarrollo de mejores aplicaciones web usando el framework de Microsoft, pero no lo hizo así y es una lastima.
Conclusiones
Entonces si, Microsoft si usa los estándares web para desarrollar aplicaciones para WIndows 8, pero si queremos que ese mismo proyecto pueda ser usado en otros ámbitos, como los navegadores normales no podremos aprovechar mucho el uso de HTML5, porque para eso necesitaríamos hacer uso de WinJS. En cuanto al diseño todo CSS3 es compatible con Windows 8, y hasta incluye propiedades muy poderosas de Microsoft y otras que están en desarrollo como flex, así que si tienen miedo de aprender a programar en C# pueden ahora hacer uso de HTML haciendo que sea incluso más fácil de usar que los lenguajes de objetos.
