¿iOS/Android en Windows? La cuadratura del triángulo imperfecto


Generalmente, cuando Microsoft abre la boca sube el pan. Es un hecho constatado desde los tiempos en que Bill Gates presentaba Windows 95 y se le colgaba a media presentación. Es un clásico que nos acompañará toda la vida. Pero eso no quiere decir que sigan haciéndolo por mucho que haya costumbre. Simplemente a veces se dicen majaderías que no se deberían decir. La última viene a colación de la presentación de ayer y del anuncio de que están trabajando nada menos que en ejecutar apps de Android e iOS en su sistema Windows 10. E intentar cuadrar un triángulo nada amoroso como este es cuanto menos un desatino. O directamente una tomadura de pelo. Vamos a ver por qué.

android-ios-windows

En términos generales, una app se ejecuta en un entorno específico. Hay dos tipos de apps fundamentalmente: las denominadas nativas, que han sido escrita contra las librerías del sistema operativo en el lenguaje o lenguajes que permite el desarrollador del sistema y que por lo general (excepción hecha de Android, que requiere optimizaciones extras para ir más o menos decentemente) son rápidas y eficientes en ese sistema. Las aplicaciones no nativas son las desarrolladas en alguna plataforma “solapada” que usa otro lenguaje no permitido inicialmente (al principio Apple no permitía usar otros entornos que no fueran Obj-C, pero hace bastante tiempo que eso es posible) y que generalmente se han visto reducidas al desarrollo tipo “web”, con HTML y Javascript como principales referentes. Parecen una app nativa pero no están desarrolladas de forma nativa. Generalmente eso suele significa apps de peor calidad y con un acceso al sistema muy inferior, lo que permite en la práctica hacer pocas cosas en realidad en comparación con las nativas. Por contra, las apps nativas son más difíciles de implementar por lo general (aunque eso depende de la práctica) y además, no son multiplataforma, es decir, ejecutar la misma app en distintas plataformas con relativamente pocos cambios o ninguno.

Dicho esto, podemos derivar que las apps nativas tienen una fuerte tendencia a no poder ejecutarse en otro entorno que no sea el suyo propio. Y esto es lo que se supone que quieren hacer en Microsoft: “traducir” por medio de un compilador las instrucciones de Java o Obj-C/Swift (entiendo que cubrirán los dos) en algo entendible por el núcleo de Windows, basado en .NET. Hasta aquí pinta bonito, pero no lo es tanto. Como se ha podido entender del párrafo anterior, las apps nativas están fuertemente ligadas, no sólo al sistema operativo, sino a sus librerías y a otras librerías de terceros de ese entorno operativo. ¡Ah! Y eso sin contar con la fragmentación de Android y los frameworks. Eso es una fiesta. Excepto los juegos, que ya se realizan mayormente en sistemas multiplataforma, el resto de apps no tienen mucho futuro en un escenario como este. Convertir eso a algo entendible por el sistema de destino de forma optimizada y con rendimiento es, en realidad, una utopía. Ya se ha intentado varias veces, como el experimento Cider, de la Universidad de Columbia, que había conseguido ejecutar aplicaciones iOS en Android pero que lleva tiempo en stand-by porque realmente la viabilidad de este tipo de proyectos es muy compleja y difícil de implementar de forma eficiente. En su web indican que se está desarrollando pero su demo dice que no puede tener acceso al GPS, servicios de localización y bluetooth (entre probablemente otros). Así mismo, Blackberry lo intentó en su día en la Blackberry 10 con el objetivo de salvarse, con los resultados ya por todos conocidos: empresa en ruina.

sistemas

Y es que aparte de las dificultades técnicas de un proceso semejante, están las comerciales. Hacer que las apps de otros sistemas corran en el tuyo tiene una desventaja: hace que los desarrolladores no estén interesados en desarrollar de forma nativa para tu sistema y tus extensiones. Si todo lo podemos desarrollar en Swift y Java, las extensiones que pueda publicar Microsoft para su sistema y las correspondientes optimizaciones dejarán de tener efecto en esas apps (o tendrían que hacer extensiones compatibles con estos lenguajes, lo que en realidad es una catástrofe de estrategia corporativa). Es más, incluso aunque consiguieran una optimización increíble (NO), al final lo que terminará pasando es que lo usuarios no verán interesante tu sistema porque estás ejecutando software de otras plataformas, con lo que usarán esas otras plataformas, donde con una alta probabilidad funcionarán mejor. En el caso de las apps para Android, se me ocurre que no hay botón de ir hacia atrás en Windows Phone con el mismo estilo funcional… La mayoría de apps para Android no tienen una forma de navegar hacia atrás como en iOS, así que muchas veces las apps pueden ser directamente inútiles en este sistema. Puedo poner más ejemplos, pero creo que con este queda claro que va a ser muy, muy difícil que consigan su objetivo.

Satya Nadella tiene muchos retos, pero no los está afrontando bien (es mi opinión, claro). Ha conseguido solucionar muchas “metidas de pata” de Ballmer (que es un excelente jefe comercial, pero un pésimo estratega), pero no todas. La más gorda de su historia fue el sistema único para todos los dispositivos, Windows 8, y ese es el fallo que no van a conseguir arreglar con esto. Jobs tomó una decisión en su día y es que cada tipo de plataforma tenga su sistema propio. Es laborioso y pesado, pero lo correcto a largo plazo. El problema de estas decisiones es que su único objetivo es tener más apps en su tienda, no comprendiendo lo insidioso que será a largo plazo, y no están haciendo otra cosa que apuntalar su propio árbol del ahorcado. El tiempo lo dirá.

(Eladio nos recordaba hace tiempo como Microsoft vive en la inopia del mundo real… Lamentablemente va a seguir siendo así mucho más tiempo…).

Anterior Facebook Messenger lanza videollamadas VoIP gratis en su app [Vídeo]
Siguiente Se filtra un modelo 3D de un posible iPad Pro

6 Comentarios

  1. Luis
    30 de abril, 2015
    Responder

    Voy a parecer el defensor y el fanboy de Microsoft por estos lares, pero es que no me parece justo muchas cosas que decís. Microsoft ha hecho muchas cosas mal, lo reconozco, pero ahora parece que está intentando dar la vuelta a la tortilla, y no lo hace de la manera tan desastrosa que pintáis aquí, vale que pasar una aplicación de Android o ios a windows Phone puede resultar perjudicial para el rendimiento de la app, pero los desarrolladores que siempre han apoyado windows lo van a seguir haciendo con apps nativas y curradas, que las hay, y a los que no les atrae la plataforma puede servirles para pasar sus apps ya hechas de manera sencilla, solo tocando unos ajustes de compatibilidad. ¿Que eso le va a quitar personalidad a windows phone? Sí, en parte, pero yo creo que es una manera de que aumente el número de aplicaciones disponibles, lo que supone un mayor consumo por parte del usuario, lo que puede conllevar a que los desarrolladores vean potencial en esta plataforma y se lancen con sus apps nativas. Tambien la universalidad de windows 10 (pc, tablet y móvil) puede ayudar a esto. El futuro dirá, pero yo creo que sois demasiado críticos con Microsoft. Es mi opinión claro, y respeto la vuestra al 100%

    Pd: windows phone si que tiene botón para ir hacia detrás

    • 1 de mayo, 2015
      Responder

      Hola Luis, gracias por escribir… No se trata de ser crítico con MS por serlo, son los hechos los que mandan. Llevan al menos tres o cuatro años sin dar pie con bola y por herencia muy directa de los anteriores gestores (Bill Gates no ha dejado de influenciar la empresa aunque lo haya hecho en las sombras, y Ballmer fue puesto a dedo, para continuar el legado, que se ha demostrado claramente erróneo, porque no era la persona adecuada para el puesto.

      La crítica a MS no es porque hagan todo mal, porque evidentemente hacen cosas bien. El problema es que una empresa como esta no se puede permitir errores tan importantes como Windows 8 y Metro. Podemos decir que es una cuestión de gustos, pero en realidad no lo es. El problema por ejemplo con esto de las apps es que hay tantas cosas mal en la idea que uno no sabe por donde empezar. Puede parecer que es una buena idea para los desarrolladores, pero eso significa no conocerles bien (yo soy uno, así que algo de idea tengo). El problema radica en que muchos desarrolladores queremos hacer el mejor trabajo posible, y eso significa que el rendimiento debe ser excepcional. Eso no es posible con una app no nativa y mucho menos con una “traducida”. Pero es que además a nivel comercial es un fail realmente importante, y ya han habido varios ejemplos de ello. Siempre se destaca que hay posibilidad de usar apps Android en otros sistemas, y es cierto. Pero nadie lo hace, es decir, usar estas interfaces. Lo del botón de atrás (gracias por la aclaración) es meramente un ejemplo. Aunque Windows Phone tenga botón de atrás, su dinámica es distinta, por como están construidas las apps. Por ejemplo, la mayoría de las apps de Android hoy día no se construyen sólo con actividades, sino con fragmentos, y es una dinámica que incluso en el propio Android es un caos de programación y funcionamiento. Convertir eso a la dinámica interna de ejecución por vistas de Windows Phone, o incluso iOS, es una auténtica pasada y si lo consiguen, ole sus narices. Que decir de las APIs de iOS. Muchas de ellas son muy nuevas y dudo mucho que consigan el permiso de Apple para usarlas, así como de convertir código fuente de un lenguaje propiedad de Apple (Swift) a .NET. Lo vengo a dudar. Esa es una razón de las muchas que hay para considerar que esto es un error.

      MS tiene muchas cosas que mejorar. Yo he desarrollado y desarrollo para .NET desde hace 10 años, así que sé de lo que hablo. Pero me niego a desarrollar para Windows Phone por la sencilla razón de que no hay una razón real para ello. Los que quieran hacerlo están en su pleno derecho, pero nos debemos a las habichuelas, y de momento, no hay habichuelas en WP. Eso hace que nadie quiera desarrollar para este sistema, y por eso están tan desesperados. Portar las apps de otros sistemas tiene muchos riesgos, y aparentemente están convencidos de poder superarlos, lo que sinceramente espero que hagan. Pero mira, una prueba de que no van bien es que saquen su app estrella, Office, antes en iOS que en su propio sistema. Algunos pueden decir que es algo bueno (especialmente para los usuarios de Apple), pero no lo es para ellos. Es evidente que ya no confían en su propio sistema después del fiasco de Windows 8. Me gusta ser optimista, pero cuando te lo ponen tan difícil para serlo la verdad es que cuesta. En todo caso, creo que el éxito del sistema, si lo tiene, no será por esto: será porque los usuarios de Android terminen tan asqueados del sistema de Google que se pasen al siguiente más barato. Es duro decirlo así pero es lo que hay.

      Saludos.

      • Luis
        2 de mayo, 2015
        Responder

        Gracias por una respuesta tan completa, la verdad es que no tengo argumentos de valor para rebatirte, ya que solo soy un estudiante de segundo de bachillerato y la programación es para mi un hobbie de momento (espero cursar el doble grado de informática y matemáticas). En lo único en lo que me puedo basar es en los hechos, Monument Valley, este juego conocidísimo, acaba de llegar a windows phone, y parece ser que gracias a las herramientas presentadas por Microsoft, supongo que habría que probarlo para ver su rendimiento.
        En lo que si te tengo que dar toda la razón es en la parte donde mencionas office, lo peor es que no solo pasa ahí, el Skype de Windows Phone siempre va un poco más retrasado que los de otras plataformas, cosa que es incomprensible, pero bueno, ellos verán como tratan a sus usuarios (dentro de ellos estoy yo).
        Siento no darte una respuesta a la altura de la tuya, simplemente no puedo por mi experiencia.

        Saludos

        • lainon
          3 de mayo, 2015
          Responder

          Gracias a ti por escribir! En cuanto a los juegos, generalmente suelen realizarse con kits multiplataforma, la única manera en que Android por ejemplo ha conseguido tener los juegos que tiene… No puedo poner la mano en el fuego sobre si Monument Valley está desarrollado con un kit de estos o no, lo ignoro, aunque por lo que me ha parecido siempre es muy probable que sea un juego hecho con un motor propio…

          Te soy sincero: llevo años programando con .NET y como plataforma de desarrollo es una auténtica pasada. El problema es que MS está cometiendo fallos de bulto con los móviles que están provocando auténticos problemas para que los desarrolladores se animen (causa principal de todo este tema). Por ejemplo, la limitación de que se tenga que tener Windows 8 para poder programar para los móviles. Fallo inexcusable para una empresa de ese nivel. Yo por ejemplo no quiero instalarme Windows 8 ni debajo del agua, con lo que estoy limitado para desarrollar sólo por eso, y sólo por desarrollar para móviles no lo voy a hacer. Puede parecer absurdo, pero te puedo garantizar que así están muchos miles de desarrolladores. Luego el hecho de que no se pueda programar en Mac. Yo en Mac puedo programar para iOS y para Android, pero no para WP. Eso es un error de perspectiva muy importante, porque Mac es una excelente plataforma para programar y los que desarrollamos para iOS tenemos que tenerlo obligatoriamente. Para tareas que requieren Windows uso Windows 7, y como digo no me planteo pasarme al 8 (ya veremos el 10). Es decir, que hay un montón de problemas que se han ido generando ellos mismos que no están sabiendo solucionar.

          Saludos.

      • 9 de mayo, 2015
        Responder

        Entiendo en parte tu posición, pero creo que estas siendo muy injusto, yo considero lo siguiente:

        – Metro es una mierda, estamos de acuerdo en eso.
        – Microsoft ya no es una empresa de Software, es de servicios, que saquen cosas en otras plataformas me parece lo mas lógico, así como lo hace google. En el caso puntual de Office, es muy claro, a ellos les interesa que tu uses sus servicios independiente de la plataforma (Web, IOS, Android, Windows).
        – Que traduzcan una App, es obvio que ellos saben que no lo pueden hacer funcionar al 100%, pero podría darte una versión inicial minima viable, es algo que te puede ayudar a ahorrar trabajo y animarte a probar la plataforma.
        – Lo que hemos visto hasta hora de Visual Studio Code y .Net multi-plataforma es solo el principio y seguro va a mejorar mucho.
        – Ya anunciaron esta semana que Windows 10 será el ultimo Windows como lo conocemos hoy, otra razón mas para decirte que ya todo es servicios.
        – Microsoft ya es mas rentable en su división Cloud que en vender licencias de Windows.

        • lainon
          9 de mayo, 2015
          Responder

          Hola Juan, gracias por escribir… Algunas de estas cosas ya las he respondido en otros comentarios, pero en todo caso, sí es importante destacar un punto que indicas: que ya no es una empresa de software, sino de servicios. Y estoy totalmente de acuerdo con ello. El problema de ese punto de vista es que se siguen comportando como una empresa de software aunque no lo son. Windows es un buen ejemplo: hasta la última versión, que no ha salido aún, los servicios de Windows son, en la práctica, inexistentes. No hay hacho las actualizaciones necesarias para que los servicios lleguen como es debido a Windows (y a ver si tienen la profundidad que tienen los de Apple en Mac), pero en todo caso, tienen muchas cosas que mejorar en muchos sentidos. Seguir vendiendo Windows cuando ni es su principal fuente de ingresos y cuando estamos en una crisis galopante del PC es cuanto menos estúpido. Apple lo entendió y ahora regala OS X y muchas de sus apps.

          Lo de que Windows 10 sea el último Windows… ¡Ojalá! Todos ganaríamos. Pero lo vengo a dudar. Mucho tienen que haber cambiado las cosas (y la transición durará años) para que eso sea así. Pero en todo caso, me reafirmo. Ojalá.

          Saludos.

Contestar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *