Home » Noticias » Google se plantea Swift como lenguaje de primer nivel para Android
Swift y Android

Google se plantea Swift como lenguaje de primer nivel para Android

Desde The Next Web, Nate Swanner ha sorprendido hoy a toda la comunidad de desarrollos de aplicaciones móviles con una noticia bomba: Google podría estar considerando Swift como lenguaje de primer nivel de desarrollo en Android, para sustituir a Java.

Google vs Oracle

Pero para entender bien la noticia, hay que ahondar un poco en el histórico de Java y Google, así como hablar del tercero en discordia en dicha relación: el propietario de Java, Oracle. En 2012, Oracle demandó a Google por usar determinadas librerías de Java sin permiso dentro de Android. Porque algunos dirán, Java es de código abierto y por lo tanto Google no debería pagar nada. Cierto: pero también lo es que mientras el lenguaje es de código abierto, determinadas librerías (APIs) claves para Android están sujetas a un pago por su explotación comercial. Y aunque Google no obtiene beneficio directo de Android, si lo obtiene indirectamente por lo que Oracle reclama su parte del pastel. En total, 9.300 millones de dólares, que se dice pronto. Una cantidad que es el doble de lo que declaró todo el conglomerado empresarial Alphabet (al que pertenece Google) el último trimestre.

De ellos 8.829 millones corresponden a la parte que Oracle cree que le corresponde sobre el total que estima que Google ha ingresado durante la vida de Android a través de Google Play Store o con la venta de contenidos y publicidad. 37 APIs que Google declara usar como fair use (uso razonable) y que Oracle niega a la mayor.

Swift, la alternativa de código abierto

El artículo de The Next Web nos pone en situación sobre una reunión que tuvo lugar en diciembre entre tres grandes: Google, Uber y Facebook. Dicha reunión, que tuvo lugar en Londres, trató sobre Swift y su reciente liberación como lenguaje de código abierto. Determinadas fuentes han confirmado a The Next Web que Google está considerando hacer a Swift lenguaje de primer nivel, siendo primero una alternativa a Java, para posteriormente sustituirlo definitivamente a largo plazo. Y por otro lado, tanto Uber como Facebook también se plantean migrar todo su código y desarrollo al nuevo lenguaje, no solo las apps, si todas sus APIs y servicios backend.

Analizando esto, la llegada de Swift a Android supondría algo muy interesante porque Swift no necesita una máquina virtual e iría dentro de una capa por debajo de la actual JVM que da soporte a Java. Esto daría un mejor rendimiento al sistema y al hardware sin hacer nada más. El mismo desarrollo sería mucho más rápido y eficiente a todos los niveles, porque ya iría compilado a mayor nivel y ejecutado más cercano al hardware. Actualmente, el lenguaje que cumple este papel pegado al hardware de Android y que soporta varios componentes de la JVM es C++, y este podría ser sustituido por Swift.

¿Sería factible?

Cada vez más empresas migran sus desarrollos a Swift y ahora, con la expansión por parte de IBM, empieza a haber quien despliega sus backend también en este lenguaje. Apps como Pixelmator ya están desarrolladas en Swift, por citar un mero ejemplo y cada vez más empresas empiezan a migrar todos sus desarrollos para aprovechar las bondades del nuevo lenguaje. En el caso Android, adoptar Swift no sería ninguna locura y les permitiría olvidarse de los problemas de Java, ya que Apple ha hecho completamente libres todo el lenguaje y sus APIs, sin restricción alguna más que la mera autorización en casos puntuales.

El problema es la propia estructura del sistema Android ya que ahora mismo tiene dos partes bien diferenciadas: la parte JVM de Java que ejecuta gran parte de las apps y servicios del sistema y la compatible NDK que permite el uso de otros lenguajes como C++ (la que usan muchos motores de juegos como Unity o Unreal). Esta NDK podría verse modificada para implementar Swift, pero tiene el problema que como tal, sigue siendo como una herramienta secundaria pero no un componente principal que permita la ejecución de componentes del sistema. Y además, como hemos comentado, el propio sistema actual de Android tiene partes del núcleo en C++ que necesitarían ser re-escritas en Swift.

Por lo tanto, lo primero que podemos pensar es que Android tendría que crear una capa en Swift (sustituyendo el actual núcleo en C++) y montar sobre él la JVM de Java para que el sistema tuviera una coherencia y no perdiera las compatibilidades. De esta forma, se podría seguir desarrollando en Java pero podría trabajarse con la capa inferior en Swift y realizar programas o componentes del sistema que fueran más eficientes. Como Swift funciona sin problema en el núcleo de Linux de Android, no habría problema de compatibilidad alguno sea cual fuera el hardware. Pero resulta curioso pensarlo: una máquina virtual Java desarrollada en Swift.

No obstante, en el artículo nos cuentan que también se están planteando otros lenguajes como Kotlin, también de código abierto y que ya permite desarrollar con Android, directamente para su JVM. Este lenguaje, genera un código intermedio compatible con el que genera Java y permite incluso interoperar con él. Por lo tanto, sería una buena alternativa aunque, como bien ha visto Google, sería mucho menos eficiente ya que es muy lento en compilación y poco óptimo en sus resultados y velocidad, comparado con Swift que ahora mismo es de los lenguajes más eficientes, rápidos y seguros del panorama del desarrollo.

La transformación por Swift

La transformación por Swift comienza a llegar. Un empleado de Facebook tiene una petición de pull en el repositorio oficial de Swift llamado “Portar a Android” donde especifica cómo añadir un target de Android a la compilación de la librería estándar de Swift. O por ejemplo, Uber, está en proceso de migrar todos sus sistemas, tanto APIs, apps como servidor a Swift, para mejorar la eficiencia de su servicio.

Grandes empresas y grandes apps apuestan por el nuevo lenguaje, y cada vez tenemos más opciones interesantes como el nuevo servidor Perfect, que permite un despliegue en servidor de recursos en Swift de una manera fácil y rápida.

No estamos hablando de algo rápido ni inmediato, llevará su tiempo porque requiere de transformaciones a nivel técnico y nuevos desarrollos, pero no podemos dejar de pensar que tal vez, en un día no muy lejano, el importante paso de Apple de hacer Swift código abierto, llegue a puerto para que sea un lenguaje universal que permita desarrollar para cualquier plataforma. Luego habrá que usar las correspondientes APIs de cada sistema, pero tener un único lenguaje sin duda (tanto en frontend como en backend) será algo muy práctico. Así que vayan aprendiendo para su futuro, y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

App Store Review Guidelines iOS 11

Cambios en las normas del App Store en iOS 11

Todos sabemos cómo son las normas del App Store (o deberíamos saberlas) y la importancia …

  • Samuel Rondón

    Woow