Aplicaciones nativas en tu navegador con NaCl

NativeClient (abreviado NaCl) es un proyecto Open Source de Google es un plugin para poder ejecutar aplicaciones a través del navegador como si fueran aplicaciones de escritorio, es decir, permite acceso al hardware y la creación de hilos, pero promete no cometer los mismos fallos que tecnologías similares (ActiveX) y proporcionar el mismo nivel de seguridad que se tiene con el Javascript que ejecuta cualquier sitio web ya que las aplicaciones de NativeClient corren en un sandbox y con limitaciones a la hora de que puede hacerse.

De esta manera se pueden ejecutar juegos y aplicaciones de edición de vídeo en el navegador, adquiriéndolas primero via web (como el App Store de Chrome). En el vídeo de presentación vemos algunos desarrollos de juegos para la plataforma además de las varias aplicaciones en la Chrome App Store.

Hasta el momento las aplicaciones para NativeClient pueden escribirse en C/C++ y Mono(C#, compilado luego a código nativo), por lo que cualquier programa escrito en esos lenguajes es un serio candidato a ser portado a NativeClient.

NativeClient parece en principio un serio contendiente contra Adobe Flash o Silverlight, pero hasta el momento parece que hay cierta controversia en cuanto a su utilidad y sobre el soporte por parte de otros navegadores. Por un lado está la ideología, NativeClient corre código binario nativo y hace cosas que deberían poder ser realizadas usando tecnologías existentes (HTML, CSS, JS) y eso no gusta ni en Mozilla ni Opera, ya que choca con la visión que persiguen de una web basada en estándares. Aunque ciertamente las capacidades actuales de Javascript y WebGL disminuyen las ventajas de NaCl, aunque WebGL es una tecnología relativamente reciente y poco extendida.

Por otro lado tenemos que NativeClient ya no es un plugin de navegador normal y corriente, ya que está implementado como un plugin PPAPI, nuevo estándar de desarrollo de plugins creado para Chrome por Google por las especiales necesidades de NaCl, en lugar de NPAPI el cual fue desarrollado en su día por Netscape y es ampliamente usado por casi todos los navegadores web actuales. Dado que Chrome es el único navegador que lo implementa y que el resto no tienen interés en hacerlo tenemos que la probabilidad de que la próxima versión de Firefox u Opera soporten NaCl out-of-the-box tiende a cero.

Respecto a Flash o Silverlight cabe destacar que parece que son dos tecnologías en declive, siendo más lento el declive de Flash. Adobe hace tiempo que ha dejado de soportar Flash para móviles tras ser desplazado por el tag VIDEO de HTML5 y hace poco que ha anunciado un acuerdo con Google y no seguirá desarrollando Flash como plugin NPAPI para Linux y además estará integrado en Chrome, aunque si seguirá desarrollándolo para el resto de sistemas operativos. Mientras Microsoft está volcándose con Metro e Internet Explorer 10 no tendrá soporte para plugins, ya que WinRt, la nueva API de bajo nivel de Windows para Windows Phone 7, será incompatible con aplicaciones Win32, por lo que razonablemente ningún plugin (incluido Silverlight/Moonlight) funcionará.

Con el anuncio oficial de NativeClient tras más de tres años de desarrollo y con Mozilla y Opera en contra, Chrome es el único navegador que soporta NativeClient. Aunque su desarrollo no ha terminado ya que la compatibilidad entre arquitecturas no está lista y sólo funciona sobre arquitecturas x86 de 32 y 64 bits. Esto es algo que retrasará su adopción, pero augura un prometedor futuro como substituto de Flash como tecnología multimedia de entretenimiento ya que proporciona una plataforma unificada (requisitos de hw a parte) pero manteniendo prácticamente las prestaciones de una aplicación nativa, lo cual es muy atractivo para los estudios de desarrollo de videojuegos que buscan subirse al carro de las aplicaciones on-line y evitar los costes adicionales de preparar juegos para plataformas diferentes (PC, PS3, XBOx, …) que pueden llegar a tener muy poco en común a nivel de programación.

Suscríbete a nuestro Boletín