Buscar
Social
Ofertas laborales ES
« Primera versión beta de javaLeague | Main | Resultado del sorteo de las entradas para APIdays Mediterranea »
jueves
may292014

La estrategia de Dropbox para dar soporte a iOS y Android

Mantener una misma aplicación en múltiples plataformas mediante un desarrollo nativo tienen la desventaja de prácticamente duplicar el coste de mantenimiento, tener que arreglar los mismos bugs una vez por plataforma, la posibilidad de introducir bugs que sean específicos para una plataforma y por tanto más difíciles de identificar, y la necesidad de optimizar la aplicación para cada plataforma, entre otros inconvenientes.

La solución que Dropbox ha adoptado para resolver estos problemas en sus desarrollos para iOs y Android es un tanto curiosa; quizás podrías pensar inicialmente que se habrán ido por una solución del estilo de Apache Cordova. Sin embargo han hecho justo lo contrario: en vez de ir a alguna solución de más alto nivel,  han implementado una capa en C++ que contiene los algoritmos "core" para todo el funcionamiento de Dropbox.

Dentro de esta capa tienen una instancia de la base de datos SQLite que es la que en cada momento indica qué es lo que hay que sincronizar, y un servicio responsable de llevar a cabo estas actualizaciones contra los servidores de Dropbox. También cuenta con una cola de operaciones que tienen que ser realizadas, y un thread que va extrayendo operaciones de esa cola y las va ejecutando.

Este código en C++ es portado a Objective C++ y empleado en Android a través del Android Native Development Kit (aunque en este segundo caso parece que es más complicado pasar de C++ al código de la plataforma móvil). De este modo consiguen tener una única implementación de la lógica de la aplicación, y en cada plataforma sólo tienen que implementar la interfaz de usuario.

Sin duda, el problema de Dropbox es un problema un tanto particular, y esta solución no será adecuada para muchos contextos. Pero no deja de ser curioso que su forma de haber resuelto el problema de dar soporte a varias plataformas diferentes haya sido apostar por un lenguaje de programación de más bajo nivel. ¿Qué te parece esta estrategia?

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (1)

Es interesante, pero tampoco sorprendente. La mayoría de los juegos multiplataforma están programados en C o C++ y OpenGL-ES. Muchas veces usando engines como Cocos o Unreal o algún otro. La práctica demuestra que es lo más portable cuando se requiere acceso directo al hardware y aprovechar los recursos al máximo.
Otra alternativa real es HTML5 y WebGL, pero el soporte en los móviles es muy variado todavía. Si no se requiere WebGL, con HTML5 solo y un wrapper como Apache Cordova puede ser sufiente en aplicaciones clásicas, y en algunos juegos que no sean intensivos.

mayo 30, 2014 | Unregistered Commentergorlok

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>