NoticiasBlog.

Swift como lenguaje de desarrollo móvil

26 noviembre, 2019 | APPs, Desarrollo

Hoy vamos hablar de Swift, el lenguaje de propósito general y de código abierto, creado por Apple, que fue presentado en junio del 2014. 

Como podemos ver, es un lenguaje muy joven, con apenas 5 años de vida, en los cuales ha ido evolucionando hasta un estado de madurez que describiremos más adelante. 

Orígenes de Swift:

Cuando Apple lanzó el iPhone en 2007, mucha gente vio el potencial que podía traer hacia la informática de consumo y los smartphones. 

 

Pero fue en 2008 cuando apple presentó la App Store, así como su primer SDK. Esto supuso un gran cambio. 

Por entonces, Objetive-C, que también era lenguaje nativo en OS X y se empleaba en Xcode, fue el elegido para el desarrollo nativo en el iPhone. Pero tenía problemas, tales como una gestión de la memoria manual, o una sintaxis demasiado compleja, que hacían que no fuera un lenguaje seguro ante errores de programación.

Con el lanzamiento del SDK, Apple añadió muchos cambios y evoluciones a Objetive-C, como ARC, una nueva gestión automática de la memoria o una sintaxis más sencilla, lo cual permitía una mayor rapidez en el desarrollo. 

Pero había un problema, las aplicaciones de iOS, resultaban menos estables que las de otros sistemas como Android. Esto se debía a que Objetive-C no es un lenguaje seguro ante errores, como si podría ser considerado Java para Android. 

Llegados a ese punto, Apple no podía mejorar mucho con respecto a la optimización y rendimiento en iOS, por lo que se empezaba a ver como solución una reinvención desde abajo, creando un nuevo lenguaje, que permitiese mejorar el rendimiento y la efectividad del desarrollo, incluyendo nuevos y modernos flujos de programación, como el empleo de genéricos, programación funcional, o nuevos modelos de abstracción.

 

Por este motivo es por el cual existe Swift. Gracias a este lenguaje, Apple está consiguiendo, con su empeño de evolucionar y mejorar sus bases, hacer más efectivos y seguros los desarrollos de software y su ecosistema.

 

 

Swift podría ser traducido al castellano por rápido o ágil. Apple lo define como un lenguaje que extrae lo mejor de C y de Objetive-C. Un lenguaje moderno, que también incluye nuevos conceptos aparecidos en los últimos años en lenguajes de script como pueden ser Ruby o Python. En este caso, Apple ha integrado en Swift lo más destacado de otros lenguajes de programación, pero con los beneficios de los más potentes y con un mejor rendimiento, al generar su compilador un código máquina muy cercano al hardware, ya que, su compilación está mucho más optimizada que Objetive-C, con menos capas hasta llegar al código máquina. 


 

 La infraestructura más utilizada a la hora de componer un entorno de desarrollo, como puede ser el caso de Microsoft, Oracle o Google con Android, es compilar el lenguaje a un código intermedio que se ejecuta en una estructura única, como puede ser una máquina virtual en el caso de Java o Kotlin, o un framework en el caso de Microsoft, y dicha estructura es la que se adapta al hardware de cada máquina. En el caso de la máquina virtual, es como si se tratase de un programa más del sistema operativo. El framework de Microsoft es un sistema más eficiente ya que forma parte del sistema operativo y tiene mayor prioridad sobre otros procesos. 

Pero en el caso de Apple, su aproximación va más allá, ya que emplea un compilador basado en LLVM, máquina virtual de bajo nivel, el cual genera un código intermedio, al igual que Microsoft, pero luego lo optimiza, convierte y enlaza en un código máquina propio para el hardware donde se va a ejecutar, de forma que evita el uso de una máquina virtual o un framework específico. 

De esta forma, al compilar un código máquina específico para cada hardware, obtiene un aumento de rendimiento con respecto al uso de sistemas intermedios. Esto es posible gracias a que Apple tiene un gran control sobre su software y hardware. 

Con la llegada de iOS 9, todavía se pudo avanzar un paso más en la optimización, con la introducción de una nueva técnica, denominada ABI (Application Binary Interface). Este sistema, destaca porque, al enviar el código fuente a Apple para la publicación en el App Store, se envían por separado el código intermedio generado por nuestra aplicación, los recursos gráficos y las librerías. Posteriormente, Apple optimiza el código para cada dispositivo, incorporando los recursos gráficos adecuados, las librerías más óptimas, etc., por lo que el código final que recibe un dispositivo está muy optimizado, además de que el binario final será de menor tamaño para cada uno, al prescindir de recursos y librerías que no son necesarios.

Como se puede apreciar en la siguiente ilustración, distintos dispositivos con diferentes características, emplean diferentes recursos y librerías, optimizando el código final.

Apple, en definitiva, está inmerso en un proceso de adaptación y migración de sus librerías de Objetive-C a Swift, de forma que sean más eficientes y rápidas, haciendo que Objetive-C sea compatible con Swift, y no al revés. 

Swift 5 – Estabilidad binaria 

Después de hablar de la evolución de Swift y mencionar la introducción de ABI, (Application Binary Interface), en marzo del 2019 con la llegada de la versión 5 de Swift, Apple en el blog de Swift, anunció la característica que todo el mundo estaba esperando: 

Swift es ABI estable, lo cual indica que ahora las librerías de Swift están incluidas en los sistemas operativos de Apple: macOS, iOS, tvOS and watchOS.  https://swift.org/blog/swift-5-released/

 

Esto significa que, a partir de ahora, a estar las librerías de Swift incorporadas en cada sistema operativo de Apple, las aplicaciones desarrolladas con Swift 5 o posterior, ya no van a necesitar incluirlas, por lo tanto, va a haber una notable mejora en el proceso de compilación, y estas van a tener un tamaño mucho menor.

 

Los beneficios detallados son lo siguientes: 

  • Las aplicaciones escritas en Swift ya no necesitan ser distribuidas junto con las librerías de Swift, reduciendo su tamaño de descarga.
  • Las librerías de Swift, van a optimizarse al estar incluidas en el sistema operativo, con mejor rendimiento y menor uso de memoria.
  • Apple podrá ofrecer frameworks para las distintas plataformas usando Swift en futuras versiones.
  • Cuando Swift pueda ofrecer estabilidad de módulos, otros desarrolladores podrán ofrecer frameworks escritos en Swift.

Cabe destacar, que Swift solo es ABI estable para los sistemas de Apple. En otros entornos en los que está disponible, como Linux o Windows, el equipo de Swift evaluará el proceso de la estabilidad binaria. 

 

 

En este ejemplo que Apple nos muestra, una aplicación desarrollada con Swift 5 podrá ser utilizada en sistemas que incluyan la versión de Swift 5, 5.1 o la futura 6. 

Swift 5.1 – Estabilidad de módulos

En septiembre del 2019, Apple lanzó la versión de Swift 5.1 de manera oficial. 

En la versión 5, anunciaron la estabilidad binaria, lo cual trata de la compatibilidad de diferentes versiones de Swift en tiempo de ejecución, pero, ¿qué pasa en tiempo de compilación? 

 

 

Hasta esta versión, para poder utilizar una librería, esta debería usar la misma versión del compilador que la aplicación, por lo tanto, si la librería fue creada con una versión distinta de Swift, no va a poder ser importada en una aplicación.

 

 

Para eliminar esta restricción, el autor de la librería necesita una funcionalidad que estaba en desarrollo, llamada estabilidad de módulos, de forma que el desarrollador no tenga que preocuparse de con que versión se creó.

 

 

En este ejemplo de Apple, podemos ver que un framework creado con la hipotética versión de Swift 6, podrá ser importado y compilado con el propio compilador de Swift 6, o el futuro compilador de Swift 7. 

El lanzamiento de Swift 5.1 permite la creación de frameworks, los cuales pueden ser compartidos con terceros, sin importar la versión que utilicen. Estos nuevos tipos, llamados XCFramework, ya pueden ser creados utilizando Xcode 11. 

¿Qué beneficios aporta esto?

Ahora Apple puede cargar librerías nativas desarrolladas en Swift en el sistema operativo, y cualquiera puede usarlas, sin necesidad de incluirlas en la propia aplicación. Evitando que el tamaño de estas aplicaciones sea muy grande. 

SwiftUI es el mejor ejemplo de este beneficio. Puede usarse a partir de este momento, desarrollando para iOS 13, y usando Swift 5.1. 

De modo que la estabilidad binaria y de módulos es el motivo de que SwiftUI no esté disponible para versiones anteriores del lenguaje, y el motivo por el cual ha sido lanzado, una vez que la estabilidad se ha conseguido.

apps desarrollo iOS mobile Swift

Síguenos

Autores

Diego Carrera

Diego Carrera

Senior IOS Developer

Deja tu comentario

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