Apple WWDC 2014: Resumen para desarrolladores

Esta semana se realiza el Apple WWDC en San Francisco, y el día de ayer fue la conferencia de apertura donde se dieron a conocer los nuevos lanzamientos de la empresa. Comparto aquí los puntos que considero son de mayor relevancia para desarrolladores:

Swift: Un lenguaje de programación moderno para iOS y OSX

Tradicionalmente, el lenguaje base para desarrollar para las plataformas de Apple ha sido Objective-C, un lenguaje relativamente obscuro, que no ha madurado lo suficiente para ser competitivo con los lenguajes modernos. Es así que Apple decidió crear un nuevo lenguaje llamado "Swift", el cual incorpora características de lenguajes modernos (inferencia de tipos, manejo automático de memoria, closures, generics, tuplas, patrones de programación funcional), y promete hacer la programación de apps más sencilla y productiva. Objective-C seguirá siendo soportado, y el código en Swift puede convivir lado a lado con el de Objective-C, pero a largo plazo sin duda Swift es la mejor opción, especialmente para quienes se están iniciando en el desarrollo para estas plataformas.

Más información: https://developer.apple.com/swift/

XCode y Playground: Programación y depuración interactiva

XCode 6 aprovecha las capacidades del lenguaje Swift para proveer funcionalidad muy útil para los desarrolladores, tal como depuración interactiva de código y vistas, live rendering (conforme programas, vas viendo los cambios en el UI automáticamente) y performance testing.

Más información: https://developer.apple.com/xcode/

App extensions: interacción entre apps

Una de las grandes limitantes en iOS (hasta ahora) es la dificultad para lograr que distintas apps puedan interactuar entre sí (tal como se hace en Android con los "intents" o en Windows Phone con "contracts"). iOS 8 busca resolver esto por medio de las "app extensions", que son puntos de extensión predefinidos que una app puede implementar y exponer hacia apps terceras.

Más información: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/index.html

Metal: Una estocada a OpenGL

Durante más de 20 años, básicamente ha habido dos tecnologías para programación de gráficos avanzados: DirectX y OpenGL; la primera una tecnología propietaria de Microsoft utilizada en sus plataformas, y la segunda abierta y utilizada por prácticamente todos los demás (OS X, iOS, Android, Linux). El asunto es que en años recientes se ha puesto gran énfasis en el desempeño de gráficos, y para responder a estas necesidades las APIs se han ido a un nivel muy bajo, o como se dice "cercano al metal". DirectX siguió este camino con su versión 12, pero OpenGL no ha avanzado en este sentido (el tipo de arquitectura de OpenGL complica este tipo de enfoque); tan es así que AMD prefirió crear Mantle, una API nueva que compite con OpenGL.

Por su parte, Apple quiere posicionar iOS en el ámbito de aplicaciones y juegos con gráficos de alto desempeño, pero se dio cuenta que no podía seguir intentandolo de la mano de OpenGL. Así que decidió crear Metal, una API para programación gráfica de bajo nivel diseñada para trabajar con los procesadores del iPhone/iPad (ARM Cortex). Dicha estrategia sin duda impactará no solo el ecosistema de Apple, sino el ámbito en general de desarrollo de juegos. Será interesante ver cómo responde Google y el ecosistema de Android ante esto, si no toman una estrategia similar para hacer programación gráfica de bajo nivel (ya sea mejorando OpenGL o reemplazandolo por otra tecnología) correrán el riesgo de quedar muy por detrás en este ámbito.

Más información: https://developer.apple.com/library/prerelease/ios/documentation/Miscellaneous/Conceptual/MTLProgGuide/Introduction/Introduction.html

CloudKit: Caballo de troya para un BaaS

Algo que creo que pasó desapercibido durante el keynote de ayer fue la mención de algo llamado CloudKit. Confieso que yo tampoco entendí de qué se trataba cuando Tim Cook lo explicó como un "iCloud para desarrolladores". Pero investigando un poco más al respecto, entiendo que la intención de CloudKit es brindar un conjunto de servicios en la nube que las aplicaciones pueden aprovechar para resolver asuntos como autenticación, almacenamiento y notificaciones. En otras palabras, parece que CloudKit es una especie de BaaS (backend as a service), y por lo tanto vendría a competir con servicios como Parse, Azure Mobile Services,  o FeedHenry. En primera  instancia, CloudKit parece estar dirigido más a desarrolladores casuales que a enterprise, y se enfoca principalmente en resolver el almacenamiento compartido a través de distintos dispositivos, pero parece ser un caballo de troya para eventualmente brindar más servicios.

Más información: https://developer.apple.com/library/prerelease/ios/documentation/CloudKit/Reference/CloudKit_Framework_Reference/index.html