Llegamos a ustedes gracias a:



Reportajes y análisis

Prepárese para un futuro sin Internet Explorer

Microsoft Edge

[14/07/2015] Por años, las organizaciones TI han estado ligadas al navegador Internet Explorer de Microsoft, el cual por años fue el navegador web estándar. Y a medida que los dispositivos móviles y las Macs crecieron en popularidad, sus tecnologías propietarias como ActiveX y las versiones de Java pasaron de ser poderosas herramientas, a elementos que evitaban que las aplicaciones especializadas -que son costosas de actualizar- funcionaran en un mundo móvil multiplataforma.

Microsoft ha pasado muchos años urgiendo a las empresas a que pasaron a la más reciente versión de IE, con pocos resultados. Más bien, el uso de Chrome de Google, Safari de Apple y Firefox de Mozilla se ha incrementado y muchas compañías incluso han estandarizado el uso de IE para lo legacy y Chrome para lo moderno.

Microsoft ahora ha tomado un camino nuevo y radical con Windows 10: Introducir un nuevo navegador, llamado Edge (lo que ha tenido hasta el momento el nombre código de Project Spartan), que descarta las tecnologías legacy y adopta mucho más de la moderna especificación HTML. Edge es una reconstrucción significativa del motor de rendering HTML Trident de Microsoft, que se enfoca en la especificación HTML5, y deja de lado gran parte de lo legacy de los releases anteriores de Internet Explorer. Básicamente es el Chrome o Safari de Microsoft.

A medida que Windows 10 se despliegue y -como espera Microsoft- reemplace a Windows XP, Windows Vista, Windows 7 y Windows 8, vamos a seguir viendo que las versiones viejas, con menos capacidades y con bugs de IE desaparecen. El viejo motor de rendering Trident aún se podrá encontrar en IE11, pero a menos que establezca el grupo de políticas apropiadas, Windows 10 por defecto usará el navegador Edge. Queda claro que la inclusión de IE11 en Windows 10 es como una ayuda para la transición; no se debe contar con su existencia por mucho más tiempo.

El paso de Microsoft a Edge va a forzar a TI a enfrentar los mismos desafíos que Chrome, Firefox y Safari ya han generado: dejar de lado las tecnologías legacy de IE puede causar problemas para los sitios y servicios existentes. Si ha estado construyendo sitios que se encuentran diseñados para IE6 o IE7, va a tener problemas con un navegador moderno como Edge, ya que no soporta muchas de las viejas API y características.

Su recurso temporal de compatibilidad en Windows 10: IE11

Windows 10 tiene algo de soporte para los sitios y servicios antiguos a través del Enterprise Mode de IE11, que es mejor como emulador de IE8. Es un buen emulador y trae de vuelta numerosas características, como las CSS Expressions, que han sido menospreciadas en los releases previos de IE. Incluso se reporta a sí mismo como IE8 ante ActiveX, permitiendo así que los viejos controles que se basan en revisiones de versiones continúen funcionando. Sin embargo, el Enterprise Mode corre lentamente en comparación con el estándar IE11.

Aun así tiene que hacer cambios a los sitios para que corran en Enterprise Mode. Las versiones viejas de IE manejaban las directivas HTML principales de forma diferente, ya sea debido a los bugs o al ahora obsoleto entendimiento de lo que para el W3C significaba un estándar específico, incluyendo la forma en que maneja la directiva doctype. Afortunadamente, esos cambios pueden ser muy pequeños; en muchos casos cambiar una línea del HTML puede ayudar a que un sitio pensado para el IE6 funcione con los navegadores nuevos.

Es fácil evaluar si el Enterprise Mode es necesario para sus sitios o contenido: Comience evaluando en el motor nativo de rendering del IE11. Si el código no corre, entonces pruébelo en Enterprise Mode. Si aún tiene problemas, puede encender la Compatibility View de IE para habilitar que corra el contenido antiguo en su limitado soporte de IE7.

Microsoft parece asumir que las empresas van a correr aplicaciones web que no son modernas de forma interna por algún tiempo, ya que una nueva configuración de políticas de grupo redirige todo el tráfico de la intranet desde Edge hacia IE11.

IE11 con su Enterprise Mode es en el mejor de los casos un parche. Le da algo de respiro -también de alguna forma para sus usuarios de Windows- mientras que usted piensa en cómo modernizar los sitios y aplicaciones para la más reciente generación de navegadores. Añadir una capa de emulación, sin embargo, viene con algo de pérdida de desempeño, y aunque IE11 es mucho más rápido que IE8, su Enterprise Mode es más lento de lo que normalmente es.

El enfoque funciona, pero no debe confiarse en él en el largo plazo o para los servicios web que tiene habilitados para los usuarios de Android, iOS y OS X, lo cual cubre a la mayoría de clientes y empleados.

Cómo reconstruir sus servicios para la web sin plugins

El enfoque sostenible es reconstruir sus aplicaciones y servicios web para la web moderna, tanto en escritorio como en móviles. Si aún no lo ha hecho para la compatibilidad con Chrome, Firefox o Safari, va a tener que hacerlo para la compatibilidad con Edge.

En los primeros días de la Web, los navegadores eran -para ser honestos- tontos. Simplemente hacían el rendering del HTML que se les enviaba, mostrando imágenes como se les pedía y ofreciendo formularios para llenar para servidores remotos. La interactividad eran los formularios y los scripts CGI. Pero a medida que creció la demanda en la Web, y los navegadores crecieron en importancia, comenzamos a usarlos como aplicaciones en sí mismos -y como hosts para otras aplicaciones.

Las tecnologías ActiveX de Microsoft llegaron con IE3, usando la etiqueta de objetos para incorporar código en las páginas web. Ese código podría ser su propio código COM Windows, o podía ser Java o Adobe Flash. Con acceso al modelo de objetos de documento de una página, y la capacidad de salir de la sandbox de seguridad del navegador, las tecnologías como ActiveX se volvieron populares tanto para las aplicaciones internas como externas, así como para ofrecer una ruta hacia las redes corporativas para el malware. Otra tecnología, Browser Helper Objects, fue utilizada por las barras de herramientas y algunos plugins, dándoles acceso a la DOM. También fueron utilizadas por el malware, así como por barras de herramientas intrusivas y para secuestrar las búsquedas del navegador.

La forma en que se construyen y funcionan los navegadores ha cambiado. La seguridad se ha vuelto más importante, y como HTML5 y JavaScript han añadido características la necesidad de tener plugins se ha desvanecido. Eso significa que los días de los plugins están contados, y que es hora de dejar de confiar en el código nativo en su navegador.

Al igual que el IE10 de Windows 8, Edge de Windows 10 no soporta los plugins de ActiveX o los Browser Helper Objects. (IE10 para el tradicional escritorio de Windows sí soportaba ActiveX). El soporte de Flash ha vuelto, pero Flash ya no es fundamental en la cartera web de Adobe, es probable que solo se use en sitios que necesiten un flujo de video cifrado.

No solo Microsoft se está alejando de los plugins. Google está haciendo lo mismo con el soporte de plugins de Chrome, enfocándose en cambio en las extensiones basadas en JavaScript/HTML, mientras que el trabajo de Mozilla en su precompilador de JavaScript permite que el código de JavaScript corra a velocidades casi nativas. Microsoft va a proporcionar un modelo de extensiones similar en Edge, permitiendo que las herramientas como los gestionadores de contraseñas y los bloqueadores de avisos sigan funcionando. Uno ya puede crear aplicaciones que usen un modelo similar para Office, aplicaciones que corren en los clientes web de Office así como en el escritorio.

Mucho de lo que se puede hacer en un control de ActiveX o una aplicación Flash ahora se puede hacer en HTML5 con JavaScript.

Comenzando con lo obvio, el audio y video, uno puede usar las características incorporadas en el navegador para reproducir contenido que es transmitido; y el grupo de estándares de HTML recientemente ha añadido soporte para transmisiones seguras de media, por lo que es más fácil salir de Flash y Silverlight. Si ha utilizado la Web en un dispositivo con iOS o Android, probablemente no haya extrañado los plugins para nada.

La Web sin plugins es la Web con la que ya se encuentra familiarizado. Es más segura y confiable, y no le pasará que repentinamente su motor de búsqueda elegido sea reemplazado por el motor de compras de alguien. En la mayoría de los casos los sitios de cara al público corren bien sin plugins, y vale la pena deshabilitarlos en un navegador de prueba para ver cómo funcionan sus propios sitios, especialmente aquellos dentro del firewall.

Aunque la mayoría de los sitios no los necesitan, algunos plugins podrían ser difíciles de abandonar. Existe una herramienta de formularios web de Oracle que alguna vez fue popular y que se mantiene en muchas empresas en IE6, ya que es demasiado costoso actualizarla a un nuevo release. Alejarse de herramientas como ésta requiere rediseñar los servidores del back end y las aplicaciones así como volver a escribir sus páginas web.

Reconstruyendo el lado del servidor de la Web moderna

Hacer cambios en el back end no es tan difícil como solía ser. Los frameworks como ASP.net MVC y Ruby on Rails se encuentran diseñados para simplificar la construcción y actualización de los esqueletos de las aplicaciones, mientras que al mismo tiempo los servidores ligeros como Node.js le permiten desplegar nuevos servicios sin consumir recursos. De forma similar, con los frameworks como AngularJS, es más sencillo desarrollar los elementos del navegador de una aplicación web moderna. Las herramientas como AngularJS ofrecen conceptos de desarrollo de escritorio familiares, incluyendo el data binding, lo cual ayuda a manejar los datos enviados desde los servidores y permitiéndole construir aplicaciones web que corran en una sola página.

Uno también debe investigar el uso de los generadores de andamiaje para ayudar a construir los frameworks de aplicaciones. ¿Necesita un ASP.Net MVC o una aplicación Express Node.js? Use una herramienta como Yeoman para construir rápidamente todos los archivos importantes que necesita, tanto del lado del servidor como del cliente, listos para su personalización.

Si escribir el código es un problema, la mayoría de las aplicaciones de negocio son ahora, si no plenamente habilitadas para Web, al menos capaces de ofrecer APIs para aplicaciones web. Si sus aplicaciones actuales no tienen soporte web, vale la pena considerar examinar las opciones de mejora o buscar herramientas de terceros que puedan añadir soporte para aplicaciones web a sus aplicaciones. Probablemente también tenga que buscar alternativas alojadas en nube para aplicaciones on premises, ya que van a manejar las interfaces de usuario web por usted. ¿Realmente necesita esa vieja copia de Siebel CRM, cuando Salesforce.com hace todo lo que quiere y le da una interfaz de usuario web moderna al mismo tiempo?

A medida que las tecnologías web que alguna vez fueron influyentes se convierten en obsoletas, uno necesitará realizar cambios adicionales. Si ha estado usando Flash para construir sitios interactivos, puede comenzar a trasladarse a las animaciones HTML5. Al construir usando HTML5, CSS y JavaScript, las animaciones web modernas podrían no ser tan capaces como Flash, pero son más que adecuadas para crear experiencias de usuario animadas. Uno no necesita aprender nuevas habilidades: la herramienta Edge de Adobe lleva los timelines tipo Flash Builder al desarrollo HTML5, de tal forma que uno pueda generar animaciones y ligarlas a las interacciones con una página.

A medida que siga evolucionando HTML5, queda claro que va a subsumir más y más funcionalidades que fueron alguna vez el campo de los plugins, incluyendo el back end. Por ejemplo, los más recientes desarrollos en WebAudio están llevando tecnologías como el MIDI al navegador, lo cual permite que se use para entregar audio interactivo, en lugar de reproducir música descargada en enviada como streaming.

Sacar las aplicaciones de las viejas versiones de IE

El primer paso en cualquier proceso de migración es entender qué aplicaciones web está corriendo, tanto dentro como fuera del firewall. Uno puede comenzar este proceso escaneando sus puertos de red, buscando servicios que corren en los puertos 80 y 443. Esto le dará una lista de los servidores web que están corriendo y que puede compararse con el actual inventario. Estos servidores pueden ser catalogados posteriormente, produciendo una lista de aplicaciones web en uso.

Si aún se encuentra en IE6, IE7 o IE8 y se encuentra preocupado por los efectos de cambiar hacia un navegador moderno, usualmente es mucho más fácil hacer esto que lo que usted pensaba. Muchas herramientas se encuentran disponibles, desde librerías que puede usar para mejorar el contenido de la página hasta toolkits y servicios que pueden ayudar en retirar los bugs y encontrar los problemas.

Las librerías de JavaScript son una herramienta poderosa para cualquier que quiera actualizar un sitio para que soporte navegadores modernos. Herramientas como jQuery contienen un mix de elementos de interfaz de usuario que rápidamente pueden reemplazar los controles y plugins de ActiveX, como lo hace WinJS de Microsoft, que incluye controles que replican muchas vistas de aplicaciones de Desktop familiares; por ejemplo, con una ListView que puede usarse para mostrar listas y redes y funciona con los data bindings de AngularJS. También puede aprovechar las librerías como Bootstrap de Twitter, que hacen que sea sencillo colocar controles en un framework de páginas.

Una librería útil que puede ayudar a hacer el proceso de migración hacia navegadores modernos es Modernizr, que le permite diseñar páginas y aplicaciones que pueden utilizarse en implementaciones menos complejas sobre navegadores más viejos y con menores capacidades. Es personalizable, por lo que uno puede elegir las características que quiere soportar y obtener una librería más pequeña con su propio build. El resultado es una herramienta inteligente que revisa características específicas, luego da el estilo apropiado al contenido de forma dinámica. También evalúa el soporte de elementos HTML5, lo cual le permite elegir implementaciones alternativas cuando no se encuentran disponibles.

No todas las aplicaciones pueden pasar a un navegador moderno, por lo menos no sin un trabajo significativo. En algún punto tendrá que decidir si retirar o reemplazarlas. Si sus usuarios corren solo Windows, pude crear un poco de espacio para tomar esa decisión usando el Enterprise Mode de IE11 de Windows 10, como se dijo antes.

La evaluación y la eliminación de bugs de la Web moderna

Al trabajar con los propietarios de las aplicaciones, puede evaluar la forma en que las aplicaciones corren en un conjunto de navegadores web modernos, de diferentes proveedores. Existe una amplia gama de herramientas que le ayudan a entender los problemas con las páginas, incluyendo las herramientas de debugging incorporadas en Internet Explorer (presione F12 en IE9 o posterior), la poderosa extensión de debugging Firebug Firefox, el menú Developer de Safari, las Developer Tools de Chrome y el debugger Fiddler de Telerik.

Al presionar F12 en IE puede examinar la forma en que las páginas renderizan el contenido HTML, así como el motor de rendering y los modos de documentos. Uno también puede explorar los efectos de usar el espionaje del navegador cambiando el string del agente de usuario del navegador, o cambiando las capacidades disponibles. Existe una opción de usar técnicas conocidas de debugging de aplicaciones para JavaScript, incluyendo el uso de breakpoints, así como explorar CSS y HTML, nuevamente con la opción de cambiar las hojas de estilo CSS. Herramientas similares se encuentran incorporadas en Chrome y Safari, y puede descargar Firebug para añadir soporte de debugging a Firefox.

Con tantas aplicaciones web utilizando técnicas REST para transferir datos hacia y desde servidores como parte de un MVC (model-view-controller) o patrón de diseño similar, herramientas como Fiddler de Telerik le permiten examinar el tráfico HTTP entre su navegador y un servidor. Puede capturar todo su tráfico de tal forma que pueda revisar que las consultas y respuestas se encuentren bien configuradas, así como usar breakpoints para permitirle cambiar el contenido de las interacciones HTTP.

Otra opción, Vorlon.js, le permite quitar los bugs de las aplicaciones web en múltiples dispositivos de forma remota. Cuando está corriendo el servidor Vorlon.js basado en Node.js, añadir una línea de código a las aplicaciones web las hace visibles en una consola local. Uno puede luego ver los mensajes de debugging de la consola, así como explorar el DOM en los dispositivos remotos (con la opción de modificar remotamente las propiedades CSS). Si está usando Modernizr en sus aplicaciones, también puede ver las capacidades del dispositivo objetivo actual, mientras que un explorador de objetos hace drill down en las variables de JavaScript.

Trabajar con la Web moderna es como trabajar con cualquier otra plataforma de aplicaciones. Las herramientas de debugging se encuentran disponibles, tanto dentro como fuera del navegador, junto con varias herramientas para ayudar a entender las interacciones entre el navegador y el servidor. También va a encontrar una nueva generación de editores que toman en cuenta a JavaScript como Atom de GitHub y Visual Studio Code de Microsoft que funciona con frameworks de Web moderna y con herramientas de debugging.

Pasar a una Web reponsiva para tener una Web móvil

Las aplicaciones web modernas también pueden aprovechar las nuevas características CSS para construir sitios responsivos. Con elementos responsivos, una aplicación web puede utilizarse para entregar contenido a dispositivos móviles, de escritorio y tabletas, afinando su look and feel de forma automática para caber en diferentes tamaños de pantalla. No necesita equipos separados de escritorio y de móvil, un solo equipo construye una sola aplicación.

Construir una interfaz de usuario responsiva para las aplicaciones puede sentirse como una reconstrucción completa, pero si está usando los mismos campos de formularios y librerías JavaScript, el trabajo puede llevarse a cabo sin afectar sus aplicaciones. Si está aprovechando la oportunidad para rediseñar diseños y servicios, luego cambiar a un diseño responsivo es una parte lógica del proceso, y esencial para los sitios de cara al consumidor.

En lugar de pensar en una página como una entidad única y lineal, el diseño responsivo la trata como una colección de objetos de flujo variable. Las consultas de media CSS identifican el tamaño y las capacidades del navegador actual, estos resultados son usados para variar los elementos para los varios tamaños de pantallas.

Para las características CSS que entregan diseños responsivos, uno puede usar herramientas como Modernizr para detectar si un navegador puede soportar características de diseño responsivo específico, que es algo mucho más útil que estar fisgoneando en los agentes de usuario del navegador.

Herramientas como Dreamweaver de Adobe pueden ayudar a realizar diseños responsivos, con plantillas y herramientas de disposición que entregan el código de JavaScript y CSS necesarios para encontrar las resoluciones de pantallas y reformatear el contenido. La mayoría de las librerías de interfaz de usuario soportan ahora el diseño responsivo u ofrecen alternativas móviles que pueden usarse como parte de un diseño responsivo.

El corazón de una aplicación web moderna es JavaScript. Es una herramienta poderosa, pero no tiene todas las características de un lenguaje de escritorio. Esto está siendo arreglado por las actualizaciones al estándar ECMAScript, que incluyen el pronto a ser lanzado ECMAScript 6. ES6 hará que sea más sencillo construir aplicaciones web de gran escala, con soporte para módulos JavaScript y funciones genéricas.

Uno puede comenzar con ES6 en los navegadores existentes usando tecnologías como TypeScript, que son lenguajes derivados de JavaScript que compilan a JavaScript. También existen alternativas de programación funcionales basadas en lenguajes como Clojure. Este es ciertamente un enfoque mucho más avanzado que el tradicional desarrollo con JavaScript, pero le permite entregar aplicaciones más complejas, es la técnica que se usa para entregar servicios como Gmail.

Mozilla ha llevado este modelo un paso más adelante con el desarrollo de Asm.js. Aquí un subconjunto de JavaScript puede usarse para construir aplicaciones web y pasarlas por un compilador que optimiza el código para lograr velocidad, compilándolo como bytecode, listo para el navegador.

La velocidad de Asm.js ha generado la decisión de formar el grupo de trabajo inter navegadores WebAssembly para desarrollar un bytecode y compilador para navegadores que funcionará con lenguajes como C y C++, mientras que al mismo tiempo aún puede trabajar con los módulos y las API de JavaScript en los navegadores de siguiente generación. Aunque WebAssembly es aún un poco lejano, es un signo de la forma en que las tecnologías web están evolucionando para soportar el desarrollo de las aplicaciones.

El mundo de las aplicaciones web ha evolucionado apreciablemente desde los días de Internet Explorer 6. Alejarse de ese legacy tiene sentido para Microsoft, especialmente si se consideran las brechas que aún existen entre IE y sus competidores. Tiene aún más sentido para TI, dado el ambiente multiplataforma y multidispositivo que esencialmente todas las compañías manejan efectivamente ahora.

Eso significa que va a necesitar nuevas herramientas para que sus aplicaciones soporten la actual y las futuras versiones de los navegadores más importantes, tanto dentro como fuera del firewall.

Simon Bisson, InfoWorld (EE.UU.)