• No se han encontrado resultados

Descripción General de la Tecnología

In document Guide_14thEdition_WEB_ES.pdf (página 78-83)

Frameworks y Lenguaje(s)

Dado que iOS se basa en Mac OS X, utiliza una gran parte de los mismos entornos de desarrollo y tecnologías, a excepción de la capa de Cocoa Touch (que gestiona y renderiza la interfaz de usuario) y algunos pequeños frameworks que son únicos para cada uno de sus sistemas. Esto facilita que un buen número de aplicaciones utilicen una base de código similar y sólo tengan que variar la interfaz de usuario, que debe ser rediseñada en cualquier caso para dispositivos táctiles.

Apple continua unificando las plataformas haciendo disponibles en iOS frameworks que anteriormente sólo estaban disponibles para OS X, y viceversa. Un ejemplo es MapKit, que Apple incluyó en iPhone OS 3.0 en el 2009 e introducjo en ordenadores Mac en OS X 10.9 (Mavericks) en el 2013.

La mayoría de los frameworks para iOS suministrados por Apple están escritos en Objective-C (o sobre APIs Objective-C proporcionadas por otro backend), que es un runtime ligero sobre C inspirado en Smalltalk, con plena compatibilidad sobre C. Pocos entornos suministran APIs de C, la mayoría son utilizados para la programación de audio y video. El sistema

iOS 72

también soporta el desarrollo en C++ y Objective-C++, e incluye frameworks estándar para esos lenguajes.

Antes del lanzamiento de iOS, Objective-C llevaba una existencia un tanto sombría con niveles de popularidad tan bajos como del 0,03% en el índice TIOBE7, gracias a su uso casi

exclusivo en Mac OS X. En diciembre de 2007 era el lenguaje de programación número 57 en popularidad y desde entonces se ha ido alzando hasta llegar al tres puesto en el año 2013, justo por detrás de Java y C, tras convertirse en el "Lenguaje de Programación del Año" en el 2011 y el 2012.

A lo largo de los últimos años, Apple ha realizado nu- merosas mejoras tanto en el runtime de Objective-C como en el compilador LLVM para agregar nuevas características al lenguaje, como la gestión automática de memoria, blocks (una forma de closures) y propiedades sintetizadas automáticamente, de las cuales la mayoría de los desarrolladores se benefician directamente al tener que escribir menos código.

Apple ofrece una gran cantidad de recursos en su sitio web para desarrolladores iOS8, incluyendo descargas de software,

videos de aprendizaje, guías de iniciacion, documentación, códigos de ejemplo y foros.

La mayoría de estos recursos contienen información muy valiosa, como las Human Interface Guidelines (Directrices de Interfaz Humana), que todos los desarrolladores deberían leer.

Lenguajes de Programación Alternativos

Si vienes de otras plataformas y lenguajes, aprender Objective-C y las APIs del iOS SDK puede parecer muy complicado, especial- mente dada la inusual sintaxis del lenguaje si la comparamos con otros lenguajes de programación populares. Por tanto, vale

7 tiobe.com/index.php/content/paperinfo/tpci/index.html 8 developer.apple.com/devcenter/ios/

iOS

la pena considerar una alternativa al uso de las herramientas y lenguajes de Apple.

A lo largo de los años, han aparecido algunos productos que hacen de puente y facilitan el desarrollo contra las APIs del iOS SDK desde diferentes lenguajes. Uno de los más populares es Xamarin.iOS9, previamente conocido como MonoTouch. Éste

producto tiene por objetivo facilitar la portabilidad de código existente en C# a iOS (y Android, utilizando Xamarin.Android), a la vez que se utilizan APIs nativas de iOS, optimizando el tiempo de ejecución. Como es un producto comercial, Xamarin. iOS se actualiza con rapidez cada vez que Apple realiza modificaciones, lo que lo convierte en una opción viable para los desarrolladores interesados en portar su lógica de negocio en .NET a ésta plataforma.

Los desarrolladores Ruby interesados en desarrollar para iOS pueden echar un vistazo a RubyMotion10, una implementación

del lenguaje de programación que se ejecuta tanto en OS X como en iOS. El producto ofrece compatibilidad con las librerías Objective-C existentes (vía el sistema de gestión de paquetes CocoaPods11 o manualmente) y compilación de código fuente

(para ofuscación y velocidad en tiempo de ejecución). Como Xamarin.OS, RubyMotion es un producto comercial con un ritmo de actualización constante.

9 http://xamarin.com/ios xamarin.com/ios

10 http://rubymotion.com rubymotion.com 11 http://cocoapods.org cocoapods.org

iOS 74

Xcode y Sus Alternativas

Para el desarrollo en iOS (y Mac OS X), Apple suministra su propia suite de herramientas de desarrollo de forma totalmente gratuita, incluyendo las siguientes aplicaciones:

Xcode: entorno de desarrollo integrado

Instruments: analizador de rendimiento que se ejecuta sobre DTrace

Dashcode: entorno de desarrollo para widgets del Dash- board (Mac OS X) y otro contenido relacionado con HTML

iOS Simulator: simula un entorno iOS para testeo rápido Una IDE comercial alternativa a Xcode es JetBrains' Ap- pCode12, una aplicación Java con algunas características de

mayor calado que las que Xcode ofrece.

Primeros Pasos en iOS

Los requisitos necesarios para comenzar a desarrollar en iOS son:

Ordenador Mac con procesadores Intel y sistema operativo Mac OS X 10.8/10.9

Cuenta gratuita en Apple Developer Connection

Xcode 4.x/5.x e iOS SDK (disponibles gratuitamente en developer.apple.com)

Esta configuración permite escribir aplicaciones y testearlas en un simulador iOS incluido en Xcode y el SDK de iOS. Esto es suficiente para comenzar y adquirir conocimientos generales del software de desarrollo para iOs, pero para construir aplicaciones para dispositivos iOS y publicarlas en la App Store es necesario

iOS 75

adquirir una cuenta en Apple Developer Connection (disponible desde US$99/€79 al año). Una cuenta de pago en el iOS Developer Program también da acceso a versiones preliminares de software en desarrollo, tales como versiones beta de nuevas versiones de iOS y Xcode.

En general, es recomendable realizar tantas pruebas como sea posible en el mayor número de dispositivos posibles. En la sección Testeo & Debugging más adelante hay información detallada al respecto.

Para aquellos desarrolladores deseosos de sumergirse en el mundo iOS, Apple ofrece mucha información para comenzar así como guías en su website13. El mejor documento para los

novatos en la plataforma es Start Developing iOS Apps Today14,

que aporta una visión general y amplia de los pasos a seguir y las habilidades necesarias para desarrollar aplicaciones iOS, y enlaza a varios artículos que tratan en profundidad el proceso completo, desde tutoriales básicos de configuración a guías de diseño de interacción.

Profundizando en iOS

Una vez te has comprendido los conceptos básicos de la plataforma iOS, Objective-C y el entorno Cocoa, es el momento de ampliar tus conocimientos aprendiendo acerca de otros entornos proveídos por Apple y sobre cómo pueden ayudarte a construir aplicaciones iOS excepcionales.

Un gran punto de inicio es utilizar un libro que trate todos los aspectos del desarrollo en iOS. Muchos desarrolladores ex- perimentados en iOS sugieren alguno de los de Aaron Hillegass,

13 developer.apple.com/library/ios/navigation/#section=Resource%20

Types&topic=Getting%20Started

14 developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/

iOS 76

por ejemplo "iOS Programming: The Big Nerd Ranch Guide"15.

Incluso teniendo en cuenta que los libros acerca de desarrollo en iOS suelen quedar desfasados rápidamente, debido a unos ciclos de desarrollo muy rápidos, este libro explica conceptos que probablemente serán válidos a largo plazo y que retan al lector más de lo que otros libros suelen hacer.

Para aquellos que aprendan mejor en el entorno de un aula, Big Nerd Ranch también ofrece una gran cantidad de cursos16 en

Europa y Estados Unidos.

Para un nivel de profundidad incluso mayor, puede ser interesante echar un vistazo al catálogo de editoriales tales como Pragmatic Programmers, Apress, Sams y O'Reilly. Todas ellas publican regularmente libros de calidad para niveles de principiante, intermedio y avanzado sobre diversos entornos de desarrollo.

In document Guide_14thEdition_WEB_ES.pdf (página 78-83)