¿Aplicaciones nativas? ¿Diseño web HTML5? ¿Optar por un desarrollo híbrido? Los desarrolladores de aplicaciones móviles se suelen enfrentar al problema de qué camino elegir a la hora de montar su aplicación. Algunos defienden el desarrollo nativo para aprovechar la funcionalidad particular que cada plataforma ofrece, de manera que saque partido de todas las posibilidades de cada una de ellas. Sin embargo, esto requiere mucho esfuerzo, sobre todo cuando se quiere llegar al mayor número de usuarios.
Así que, desde el punto de vista más pragmático, se apuesta por un desarrollo web o híbrido, puesto que así se optimizaban recursos que, de otra manera, se tendrían que dedicar en exclusiva a iOS o Android (e, incluso Windows Mobile). Es la visión de "escribir una vez, ejecutar en cualquier lugar".
El paraíso de los desarrolladores podría ser, pues, una plataforma que realmente permitiera un desarrollo multiplataforma. Y ésa es la promesa de Xamarin, un conjunto de herramientas de desarrollo multiplataforma que cubre todas las diferentes opciones desde un único código como base. Los desarrolladores pueden, de esta forma, crear aplicaciones completamente nativas con un solo código. "Creamos Xamarin porque sabíamos que tenía que haber una mejor manera de construir aplicaciones móviles. Somos desarrolladores, así que sabemos lo que quieren los desarrolladores: un lenguaje moderno de programación, herramientas de gran alcance, un flujo de trabajo eficiente y agradable y el poder de crear las mejores experiencias de usuario. Nuestra misión es que desarrollar grandes aplicaciones móviles sea algo rápido, fácil y divertido", reza su página web.

Los orígenes de Xamarin
Con más de 250 empleados repartidos en cinco oficinas y 14 países del mundo, Xamarin tiene más de 15.000 clientes en 120 países del mundo, según sus propios datos. La compañía fue fundada en 2011 por Nat Friedman y Miguel de Icaza. Como explica el segundo de ellos en su propio blog, el reto era construir una nueva oferta comercial de .NET para iOS y Android, seguir contribuyendo, mantener y desarrollar los componentes de código abierto Mono y Moonlight y explorar las oportunidades Moonlight en el espacio móvil y la appstore para Mac.
Y es aquí cuando hay que echar la vista atrás para empezar a entender parte de esta historia. Mono es una implementación de código abierto de .NET Framework (de Microsoft) basado en los estándares ECMA para C# y el Common Language Runtime. Aunque actualmente Mono está, sobre todo, apoyada por Xamarin, desde que se anunció en 2001 ha pasado por muchas y diferentes etapas. Mono fue impulsado por Miguel de Icaza y en 2004 lanzada por Novell (en aquel entonces uno de los mayores rivales comerciales de Microsoft) después de que Novell comprara un año antes Ximian. Ximian estaba fundada por los mismos creadores de Xamarin.
Xamarin permite que los desarrolladores creen aplicaciones completamente nativas con un solo código
Sin embargo, el 22 de noviembre de 2010, Novell era vendida a Attachmate Group, lo que acabó siendo la sentencia de muerte para Ximian y los primeros cimientos sobre los que se asentaría la actual Xamarin.
La adquisición de Novell dejaba una serie de grandes proyectos de software de código abierto en el limbo. Attachmate se comprometía a seguir apoyando la distribución SUSE Linux, pero otros productos de código abierto de Novell iban a correr peor suerte y su desarrollo se iba a dejar a un lado y, por tanto, se despediría a gente. El proyecto Mono, que desarrollaba una implementación de código abierto de .NET y C# de Microsoft, recibía un duro golpe cuando Attachmate despedía al equipo de desarrollo. Miguel de Icaza respondió montando un plan para asegurar que Mono siguiera avanzando sin Novell. Y es así como nació Xamarin.

Miguel de Icaza, CTO y co fundador de Xamarin
"Después de los despidos de Novell, una opción para todo el mundo hubiera sido ir a casa y tratar de encontrar un trabajo diferente. Pero nos encanta este proyecto, y nos encanta lo que estamos haciendo", declaraba en su momento De Icaza. Tras obtener los derechos de Mono y hacerse con la base de clientes del código, Xamarin terminó siendo autosuficiente y sostenible, con unos ingresos que cubría su plantilla inicial, de unas 50 personas.
¿De dónde viene el nombre de la compañía? José Miguel Torres, ingeniero de software en Xamarin, explica a Xataka que todo está relacionado con el proyecto Mono. "La primera empresa se llamaba Ximian (en relación a Simio en inglés y substitución de la S por X) y, por lo tanto, Xamarin se denomina en relación a Tamarin (Tamarino en español) y también se substituyo la T por la X dando lugar a Xamarin. Por tanto, el proyecto "madre" se llama Mono, empresas de dicho proyecto Ximian (ya desaparecida) y ahora Xamarin, son "Primates" parientes del Mono (o tipos de mono, ando muy verde en biología ;-) )".

Fuente: https://farm4.staticflickr.com/3922/1466834014409ee1141dao.jpg
Un negocio en explosión
En los últimos 12 meses, según datos de Forbes, la comunidad de desarrolladores de Xamarin ha crecido un 98 por ciento y las ventas se han más que duplicado. La diferenciación de Xamarin se debe a su capacidad para construir aplicaciones nativas e híbridas para iOS, Android, Mac y Windows utilizando un único código basado en C#. Es decir, que gracias a esta solución, las empresas pueden seguir utilizando a los desarrolladores de toda la vida para construir aplicaciones móviles sin tener que invertir en formación extra para sus empleados en nuevos lenguajes de programación más propios del entorno móvil. Además del desarrollo, Xamarin también ofrece otras prestaciones básicas para las aplicaciones móviles, como pruebas en más de 100 modelos de terminales, ciclo de vida, etc.
Mientras, desde el punto de vista de los desarrolladores, Xamarin promete reducir drásticamente el tiempo necesario para asegurarse de que sus aplicaciones funcionan en iOS, Android, Windows, Windows Phone y Mac al combinar las bondades del desarrollo nativo y del mantra "escribir una vez, ejecutar en todas las plataformas".
La relación de amor odio con Microsoft
Tanto Miguel de Icaza como Nat Friedman son viejos conocidos de la comunidad open source. De hecho, son los creadores del proyecto GNOME, impulsado como alternativa a Windows y lo que les catapultó a la fama de la comunidad de código abierto. Curiosamente, ambos se conocieron en la empresa que, por aquel entonces, más enfrentada estaba con ese movimiento: Microsoft. Friedman estaba trabajando allí y De Icaza fue a una entrevista de trabajo para el equipo de Internet Explorer.

Podríamos decir que la relación entre De Icaza y Microsoft es un "ni contigo ni sin ti". La corporación ha invitado muchas veces al desarrollador a intervenir en sus eventos e, incluso, participa en la red de desarrolladores de Microsoft.
Para algunos, parte del éxito de Xamarin es la comunidad de desarrolladores de C# que posee y que han confiado en esta plataforma para adaptarse al nuevo escenario móvil. Aunque Microsoft no sea uno de sus inversores, muchos consideran que no se podría entender los 82 millones de dólares que han recibido en 3 rondas de financiación por parte de 5 empresas si no fuera por esta "relación" con Microsoft.
Para muchos, no se entendería el éxito de Xamarin, ni sus 82 millones recaudados de fondos de inversión, si no fuera por la relación que mantiene con Microsoft y su comunidad de desarrolladores
Otro dato que relaciona a esta compañía con Microsoft es en el hecho de que, cuando arrancaron el proyecto, en 2011, apostaron por C#, el lenguaje de programación de Microsoft. "Nunca nos imaginamos que estaríamos aquí hoy. Todo el mundo nos decía 'nadie quiere aplicaciones C# nativas, es una locura'", asegura Friedman.
E incluso Xamarin tiene precios especiales para la comunidad de desarrolladores MSDN. La relación entre ambos es clave y estable. El propio Friedman explicaba este acuerdo en el blog de la compañía a finales de 2014. Tal y como nos reconoce José Miguel Torres, "desde que está Nadella al frente de Microsoft -y su nueva postura estratégica- la relación (entre Xamarin y Microsoft) cambió".

José Miguel Torres, ingeniero de software en Xamarin
"No trabajo para Microsoft"
Microsoft, que ha tenido ciertos problemas para adaptarse al ecosistema móvil, ha encontrado en Xamarin a un gran aliado. Las promesas de tener una plataforma de desarrollo universal, que les permitiera escribir una vez y ejecutar en cualquier entorno, han sido numerosas. La última y más reciente, Universal Windows Platform, que, sin embargo parece no haber convencido a la comunidad de desarrolladores, entre otras cosas porque solo afectaba a Windows como sistema operativo. El problema al que los desarrolladores de Visual Studio se enfrentan es que quieren seguir codificando en lenguajes .NET como C #, y utilizar XAML para construir una interfaz de usuario, pero sus clientes demandan soporte para plataformas que no sean Windows, especialmente iOS, Android y Mac. Y las herramientas de Xamarin se acercan más a lo que los desarrolladores están exigiendo.
Sin embargo, no está exenta de problemas. Se trata de una aplicación de .NET de terceros, basado en Mono (de código abierto) y, por lo tanto, no está al cien por cien alineado con .NET Framework de Microsoft. Algunos, además, también se quejan del precio (999 dólares por cada desarrollador y plataforma por una suscripción de un año en la versión empresas).
Lo que está claro es que el lenguaje C# ha sido un gran éxito para Microsoft y es una de sus clave para atraer o mantener a los desarrolladores en su plataforma. Pero el mundo parece que se decanta más por los nuevos dispositivos móviles que por los tradicionales PC de sobremesa (según un informe de Deloitte, las ventas de smartphones superarán tanto en unidades como en ingresos a las del conjunto de los sectores del PC, los televisores, las tabletas y las videoconsolas), por lo que para los expertos C# no debe limitarse a Windows y debe intentar replicar su éxito en el mundo multiplataforma.
Por eso, en más de una ocasión se ha rumoreado con la posibilidad de que Microsoft acabara sacando la chequera para hacerse con Xamarin. Pese a que la relación entre ellos no la niegan ni sus protagonistas, una cosa es ser socios y otra es que haya algo más. Como dejó bien claro hace año y medio el propio De Icaza, "no trabajo para Microsoft".
@c64_gio we collaborate over email; but we are an independent company, I don't work for MS
— Miguel de Icaza (@migueldeicaza) marzo 17, 2014
Es más, "tanto nuestro CEO (Nat Friedman) como el CTO (Miguel de Icaza) han dejado bien claro que Xamarin pretende ser una compañía líder e independiente dedicada al desarrollo multiplataforma", incide José Miguel Torres.
Completando el círculo con Java
En el sector hay una especie de serpiente de verano sobre el deseo de que, como el hijo pródigo, Miguel de Izaca acabe volviendo a Microsoft. Pero, más que por ser comprada, Xamarin es noticia por ser ella la que compra.
En octubre se hacía pública la compra de RoboVM por parte de Xamarin. La cantidad de la operación no ha trascendido, pero RoboVM aporta a Xamarin el mercado del desarrollo Java; es decir, entre 5 y 7 millones más de programadores, según cálculos de IDC. Por tanto, ambas empresas sumarían unos 13 millones de desarrolladores con una misma visión: facilitar el desarrollo de aplicaciones empresariales en cualquier plataforma.

Además, la joven compañía ha firmado importantes acuerdos con otras multinacionales. Por ejemplo, Oracle, quien nombraba a Xamarin como su partner para el negocio cloud, algo que implica que Xamarin habilita una nueva herramienta que permite a los programadores alojar sus aplicaciones en Oracle Mobile Cloud, una nube que compite con Amazon Web Services, Bluemix de IBM y Microsoft Azure. A cambio, Oracle destina parte de su marketing para llevar este kit de desarrollo de software de Xamarin a un nuevo segmento de desarrolladores.
Simplicidad, la clave del éxito
Parte de la clave del éxito de Xamarin puede estar en que, de manera simple pero efectiva, soluciona algunos de los problemas de los desarrolladores, especialmente aquellos habituados a trabajar con C# y que ahora se enfrentan al ecosistema móvil, más fragmentado que el mundo PC. Además, los desarrolladores no tienen que preocuparse por si la apariencia de las aplicaciones estará optimizada en cada sistema operativo móvil, lo que incluye también a los wearables, y no solo teléfonos.
Miguel de Icaza, fundador de Xamarin, es un ídolo en la comunidad open source. Algunos, sin embargo, creen que ha traicionado los principios del software libre
Y, por si fuera poco, Xamarin cubre todo el ciclo de una app móvil: desarrollo, testeo y puesta en producción con Xamarin Platform, Test Cloud e Insights.
Pero Xamarin no está sola ni es la única opción que tienen los desarrolladores. Otras propuestas del mercado son Appcelerator y Phonegap. Todas tienen sus puntos a favor y sus puntos en contra, algunos de ellos resumidos en comparativas especializadas. Así, por ejemplo, aunque Xamarin cubre los sistemas operativos mayoritarios, parece no contempla el espectro Blackberry, algo que sí aportan las otras dos plataformas de desarrollo.
Xamarin, por tanto, parece haber seducido, sobre todo, a las grandes empresas necesitadas de tener aplicaciones móviles multiplataforma y a aquellos desarrolladores habituados a trabajar con .Net y C#, pero hay quien opina que el desarrollo multiplataforma no es la panacea y que el ahorro que supone apenas llegará al 20 por ciento, ya que siempre habrá que hacer un trabajo específico para cada sistema operativo si se quiere una aplicación pulida y optimizada.
Ver 39 comentarios
39 comentarios
DarkDudae
Que se hable de sistemas multiplataforma y que ni siquiera mencionen a RAD Studio (Delphi) es casi pecado mortal. Con RAD Studio, también programas la interface y el código una única vez y puedes compilar directamente en Windows, OSX, iOS y Android. Yo lo prefiero mil veces a Xamarin.
fizen
Soy desarrollado, titulado(Ingeniero informático) y con cierta experiencia en el campo de desarrollo de aplicaciones para dispositivos móviles.
Trabajé con Xamarin y mi humilde experiencia usando Xamarin es que es una castaña. Hay otras opciones digamos... menos malas que Xamarin, pero no nos engañemos, si lo que quieres es desarrollar una app mínimamente decente hazlo en nativo.
sulibeyador
No esta mal de vez en cuando alguna noticia de empresas autóctonas e "innovadoras" que miran de arañar mercado a monstruos como Delphi o Microsoft. No siempre lo mas óptimo es la solución a la necesidad. Muchas veces las empresas no se pueden permitir desarrolladores especializados en nativo y han de solucionar la papeleta con equipos de desarrollo dinámicos que van saltando entre proyectos y tecnologías para no mandarlos a la calle. Para ese tipo de proyectos y profesionales es para los que este tipo de plataformas comodín sirven.
luischava
Microsoft acaba de comprarla
Asi que esta demas eso de amor y odio
nokiaforever
Pues toma polla por el culo, Xamarin ahora es Microsoft ;)
aplatanado
Lo que me lleva a recodar que compraron RoboVM y lo primero que hicieron fue cerrar el código. Lo digo sólo como comentario porque eso provocó mucho revuelo en la comunidad hace unas semanas.
Naxop2
Esto suena a publicidad. Y que encima casualmente se os cuele el artículo entero...
rai21
He trabajado bastante con Xamarin (bastante más de lo que hubiera querido) y la única explicación que encuentro a tab buenas críticas es que las hace bien gente que ha trabajado con Xamarin en su vida o gente que lo más que ha hecho es un "Hila Mundo" porque en todo el tiempo que he trabajado con Xamarin la (más que discutible) ventaja de "un desarrollo, múltiples plataformas" se ha visto superada ampliamente por un sinfín de problemas al menos en iOS
Sinceramente, para una aplicación MUY sencilla puede merecer la pena, pero para algo medianamente complejo (esto es, cualquier proyecto de hoy en día) no recomiendo Xamarin bajo ningún concepto
leodanmx
Hola yo eh probado Xamarin y la verdad no me gusto para nada, se me hace mucho rollo el reutilizar el codigo para otra plataforma, luego encontre Basic4Android, que es super sencillo, pero no habia opcion para iOS ( ya lo existe ), estoy probando Delphi XE y la verdad me ah impresionado, lo unico es que siempre odie pascal jaja... Tambien conoci LiveCode, pero no me gusto se me hace muy feito jaja, Talvez me quede con Delphi o con Basic4X
tambien desarrolle en Velneo que tiene un cliente para Android/iOS pero la cuestion de licencias y demas es una locura
josemicoronil
Pregunta para aquellos que no les gusta Xamarin: ¿Qué opináis de otras opciones multiplataforma como es el caso de Qt?
Yo actualmente soy de los pocos talibanes que codifican en C++ con Sublime Text 3 y compilan directamente metiendole a g++ lo que quiero mediante la consola, aunque la verdad me gustaría toquetear algunas interfaces gráficas y demás por interés personal más que nada, cambiar de aires, y a ver que os parecía para iniciarse.
Saludos !
javidev
En mi caso, como herramienta de desarrollo multiplataforma he probado Ionic Framework con Apache Cordova. Y va bastante bien para ser Javascript, quizá en Android puede lagear, dependiendo del motor del navegador del dispositivo (no pasa nada, para Android se desarrolla en nativo y ya está)
Las ventajas que tiene, aparte de ser "multiplataforma" (estás limitado a que las extensiones de Apache Cordova que uses sean compatibles con más o menos plataformas), es que el prototipado es muy sencillo (hasta tienen una herramienta online), y que es realmente AngularJS+HTML5+CSS3, lo cual te da libertad para hacer muchas virguerías.
danielcano
estan atras de noticias, ayer microsoft anuncio la compra de xamarin, para impulsar el lema de aplicaciones universales e impulsar windows movil
ivangelion68
Apoyo la moción de ir "nativo" para obtener fluidez, pero si eres una empresa que está partiendo y que no tiene las herramientas ni los medios para contratar N programadores por cada plataforma, olvídate que lo vas a hacer. Es en ese nicho que entra Xamarin y las plataformas hibridas.
Dentro de las opciones híbridas y multiplataformas, he escuchado que Xamarin es la que mejor rendimiento obtiene en la app final. El problema, como muy bien mencionan, es el precio que tiene obtener la herramienta eso, sumado a los royalties por plataforma (google, apple, y microsoft te cobran por poner tu app en el store), hace que se disparen los costos.
rreinadev
Nunca vas a ofrecer la calidad que tienen las App nativas con algo multiplataforma. Las APIs de cada plataforma cambian constantemente y se amplían a un ritmo más elevado de lo que parece. Consecuentemente con esto hay que adaptar las App y tienen que ser nativas para ello.
Esto es el debate que tengo con los de web: programar una vez y que valga en todos sitios es muy bueno, dicen. Todavía parece que no termina de calar que JavaScript es una castaña y que la web no está optimizada a la par de las aplicaciones nativas. Pues lo mismo pasa con Xamarin en cuanto a uso de las nuevas APIs, no aprovechas las posibilidades que ofrecen las empresas y dependes de otra intermediaria.
carlos.vacasgarcia
Como desarrollador de aplicaciones android desde hace ya mas de 5 años (casi desde el inicio) he pasado por multitud de entornos cross platform, entre ellos xamarin. Si bien éste último es uno de los menos malos sigo viéndolos como unos vendemotos de la era moderna, la comparación que yo siempre hago es un castaño y una higuera. Da igual que lo que pretendas sea modificar el castaño para que de higos, o la higuera para que de castañas o un pino para que de castañas e higos. Al final las mejores siempre son las nativas.
La moto que se pretende vender con esto siempre es al empresario haciendole una pregunta. ¿Por qué contratar un desarrollador por plataforma cuando puedes contratar un solo desarrollador multiplataforma?
La respuesta es muy simple, una app multiplataforma creada en el mismo tiempo que lleva crearla para una sola plataforma generalmente es bastante mediocre.
Normalmente conseguir una app a la altura, o decentemente cercana a una app nativa, sea el sistema que sea, lleva casi el mismo tiempo de desarrollo que te llevaría hacerla para dos SO distintos.
Eso es lo que nunca cuentan en su publicidad, los empresarios caen en su ahorro de costes a costa de la experiencia de usuario.
Ejemplos: la nefasta app para facebook de hace unos años, tambien en html que apestaba a cross platform a la legua. La app de badoo tambien cantaba a appcelerator titanium (con esta se superaron, un "Hola mundo" de 20 megas, alla por 2012 cuando los teléfonos raramente tenian mas de 8gb de memoria) hasta hace bien poco. Ambas empresas aprendieron y optaron por diversificar y usar las herramientas de cada sistema operativo en codigo nativo consiguiendo muy buenas apps.
En resumen. Si quieres una app de calidad, sea cross platform o no, el coste de desarrollo sera siempre mas o menos parecido. Y ante la duda, siempre nativo, si es que a Java en android se le puede llamar nativo (este chiste para los del gremio).
leodanmx
Pues yo creo que seria mas justo una comparacion contra LiveCode que ademas compila para Windows, Mac OSX, Linux, Android, iOS...
Tambien tenemos a Basic4Android y Basic4i, Basic4J que compila para Android y iOS, Java respectivamente, con codigo VB, en lo particular eh probado Basic4Android y la verdad es excelente..
Hay otras herramientas como Xojo, que compilan para Windows, Linux, OS X, iOS, Web, igual con la sintaxis de VB pero orientado a objetos..
cesc.teruel
Yo soy de los que usa el sistema "Cordova Apache" que es el mismo que Phonegap pero open source, y estoy muy contento, me ofrecen muchas alternativas al programar y sobre todo facilidad, al ser todo html5, css y javascript puedo desarrollar una app multi-dispositivo de una manera sencilla. Luego se utilizan librerias y se puede conseguir grandes trabajos!