Categoría: Windows 8
Nivel: Básico
Windows 8, el nuevo sistema operativo de Microsoft contiene una nueva arquitectura a conocer por los desarrolladores de aplicaciones, en este y posteriores capítulos iré describiendo la nueva arquitectura para ir familiarizándose con ella para el desarrollo de aplicaciones.
Antes que nada indicar el sitio web para desarrolladores de Windows 8 en Microsoft, donde se pueden encontrar multitud de recursos así como la referencia a la API:
http://windows.microsoft.com/es-ES/windows-8/consumer-preview
El siguiente link es de la Microsoft build keynote (en ingles):
Arquitectura
Windows 8 esta implementado para disponer de un sistema operativo en los diferentes dispositivos actuales, de modo que el sistema operativo ya no es exclusivo para procesadores basados en x86, si no que se amplia a la gama de procesadores ARM de uso común actualmente en tablets y smartphones. No obstante, la interface que ofrece el sistema así como la UX (User eXperience) esta pensada para pantallas de un cierto tamaño, de modo que no tiene sentido integrarlo en smartphones, aunque es posible que el nuevo Windows phone 8 utilice la misma arquitectura pero con una interface metro especifica para Smartphone como la existente actualmente (a día de hoy Microsoft no ha revelado nada al respecto oficialmente)
Según la Build keynote de septiembre de 2011, la arquitectura del sistema es como se define en la figura 1.
Figura 1 – arquitectura Windows 8
Siguiendo la imagen, se pueden apreciar 2 secciones en la arquitectura, la sección azul (aplicaciones de escritorio) básicamente es la que se ha estado utilizando hasta ahora en sistemas anteriores y la cual todo programador en Windows conoce ya, la sección verde (Aplicaciones metro) es el nuevo sistema para el desarrollo de aplicaciones metro disponible exclusivamente para Windows 8 y la cual explicare en las siguientes líneas.
Estas dos secciones no solo son a nivel de desarrollo de aplicaciones, si no que además son modos exclusivos en el sistema operativo (aunque ambos están bien integrados), en el modo con interface metro se pueden ejecutar únicamente aplicaciones con estilo metro y en el modo de escritorio se pueden ejecutar aplicaciones como hasta ahora en sistemas anteriores, de echo la interface es similar a excepción del menú de inicio que no esta disponible. Todo indica a que el sistema operativo para pc dispondrá de ambos modos mientras que dispositivos con hardware menos potente como los tablets dispondrán solo del modo con interface metro aunque según Microsoft se podrán ejecutar algunas aplicaciones de escritorio como las aplicaciones de office.
Como desarrolladores siempre se debe realizar un análisis previo de los requisitos y necesidades a la hora de seleccionar una tecnología para el desarrollo de una nueva aplicación y con esta nueva arquitectura se dispone de multitud de opciones para ello, esto sugiere una comprensión mínima de la arquitectura para decantarse por la tecnología adecuada al caso.
Aplicaciones estilo metro:
Las aplicaciones metro son aplicaciones especificas para el nuevo sistema operativo, el estilo visual que ofrecen es similar al ya conocido y con el mismo nombre en Windows Phone pero adaptado a pantallas de mayores dimensiones.
Este tipo de aplicaciones solo se podrán instalar desde el store de Microsoft al igual que ocurre en Windows Phone y todas ellas se ejecutan bajo una sandbox denominada AppContainer para ofrecer un nivel de seguridad bien definido y controlado de acceso al sistema de forma que las aplicaciones puedan pasar una certificación para su despliegue en el store según los requisitos establecidos por Microsoft.
Como se ha comentado anteriormente, las aplicaciones metro no pueden ser ejecutadas desde el modo escritorio, ya que aunque tienen la extensión de archivo .exe y por tanto tienen la cabecera de un archivo PE (Executable Portable), contienen una definición diferente en la sección DllCharacteristics que contiene una serie de flags para especificar el tipo de archivo PE como puede ser (DLL, OCX, EXE, etc.), si se abre un ejecutable con un editor hexadecimal, se puede ir a la dirección 0x0166 en la cual en una aplicación metro se podrá ver el valor 4091H que realmente será 9140H ya que los procesadores x86 se utiliza el sistema de almacenamiento little-endian. Para verificarlo también se puede hacer uso de la herramienta dumpbin.exe que reside en el directorio de instalación de Visual Studio/VC/bin, ejecutando el siguiente comando:
dumpbin.exe /headers NombreEjecutale.exe
Se mostrara toda la información de las cabecera PE y bajo el valor ‘OPTIONAL HEADER VALUES’ se podrá observar el valor ‘9140 Dll Characteristics’ donde se especifican las características entre ellas el ‘APPCONTAINER’.
API WinRT:
Todas las aplicaciones metro tienen como interface con el sistema operativo la nueva API WinRT (Windows Runtime) que según el diagrama de la figura 1 es el nexo entre las aplicaciones y los servicios del kernel, esto no es del todo cierto ya que todas las aplicaciones metro contienen librerías de Win32, de modo que WinRT hace uso de Win32 (aunque en las aplicaciones metro no se permite el acceso directo a Win32)
WinRT como se vera posteriormente, básicamente es una API basada en componentes COM (Component Object Model), tecnología bastante conocida por los programadores de C/C++ en Windows. Como inicialmente COM fue diseñado para implementar objetos independientemente de los lenguajes y esta basado en interfaces, es posible acceder desde lenguajes como C/C++, C#, VB y JavaScript que son los lenguajes disponibles en las aplicaciones metro.
La API WinRT reside bajo el nombre de espacios ‘Windows’ y un nombre de espacios WinJS con controles y funciones de ayuda para trabajar con JavaScript. Se puede encontrar la referencia a la misma en la MSDN:
http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx
Lenguajes:
Según el diagrama de la figura 1, el desarrollo de aplicaciones metro puede codificarse mediante los lenguajes C/C++, C#, VB y JavaScript, todos ellos pueden acceder a la API WinRT.
Para el diseño de las interfaces de usuario, C# y VB pueden hacer uso del lenguaje de marcas XAML del mismo modo que se ha venido realizando en tecnologías como WPF/Silverlight, y como novedad también se ha implementado una nueva extensión para C++ que ha sido denominada C++/CX (Component Extensions) la cual hereda la sintaxis de C++/CLI implementada para el framework .net pero especifica para trabajar con WinRT en lugar del CLR del framework .net. Una de las características de C++/CX es la de poder implementar clases parciales, ello permite hacer uso del lenguaje de marcas XAML para el diseño de la interface de usuario. A excepción de la extensión CX especifica para la plataforma, C++ es compatible con la especificación C++11, de modo que se puede hacer uso de todas las novedades que implementa la especificación, como las expresiones lambda y métodos anonimos muy usados en c#.
En el caso de hacer uso del lenguaje JavaScript para el desarrollo de la aplicación, podrá usarse HTML y CSS para implementar la interface visual del mismo modo que se viene haciendo en el desarrollo web.
Conclusión:
La nueva arquitectura para el desarrollo de aplicaciones metro abre un gran abanico de posibilidades a la hora de elegir un lenguaje u otro, no obstante no es oro todo lo que reluce y aunque todos los lenguajes de programación están al mismo nivel de acceso a WinRT de cara al desarrollador, no es así internamente en el ejecutable final. Las aplicaciones desarrolladas mediante C/C++ serán compiladas en código ensamblador y por tanto serán las mas rápidas y ligeras de recursos (como ha sido siempre), las aplicaciones desarrolladas bajo el framework .net serán mas lentas y pesadas de recursos (que es el precio que hay que pagar por la facilidad del desarrollo mediante el framework), en cuanto a JavaScript se ha mejorado mucho el interprete, en IExplorer 9 y 10 ya se hace uso de un hilo en background para compilar código JavaScript mientras se va interpretando haciendo uso de un compilador JIT, de forma que JavaScript se puede decir en cierto modo que ha pasado de ser un lenguaje interpretado a semiinterpretado, aun así, este será el lenguaje mas afectado en el rendimiento.
Como se ha visto, mediante la nueva arquitectura para el desarrollo de aplicaciones estilo metro, se exponen diferentes tecnologías con sus respectivos lenguajes, es por ello la importancia de conocer el detalle de cada tecnología para seleccionar la mejor al caso.
No hay comentarios:
Publicar un comentario en la entrada