Mostrando entradas con la etiqueta iOS. Mostrar todas las entradas
Mostrando entradas con la etiqueta iOS. Mostrar todas las entradas

martes, 27 de diciembre de 2011

PhoneGap: un entorno para gobernar a todos (+ videos)

PhoneGap

El terreno del desarrollo de aplicaciones para móviles es cada vez más complejo. Incluso a medida que avanza el dominio de iOS y Android, hay una cantidad de dispositivos y sistemas operativos que aun son relevantes, y las variantes entre formatos, restricciones impuestas por las tiendas de cada fabricante y demás particularidades tienden a complicar la tarea enormemente.

En estos casos siempre han surgido intentos de proveer un único entorno que permita generar aplicaciones para diferentes objetivos, pero en general los resultados no son demasiado buenos porque suelen apuntar a un denominador común que usualmente es bajo y desaprovecha el potencial de muchas de las plataformas. No es el caso con PhoneGap, una plataforma que permite desarrollar aplicaciones nativas para múltiples dispositivos, a partir de su desarrollo en HTML5 (HTML, CSS y JavaScript).

PhoneGap es código abierto y gratuito y fue creado por una pequeña empresa llamada Nitobi que fue comprada en octubre por Adobe, que mantuvo el compromiso de mantener las características abiertas de la plataforma, delegando incluso la base de código a la Apache Software Foundation.

Desarrollando en HTML/JS, PhoneGap permite acceder a todas las API nativas de cada plataforma (salvo en casos ne que no existen) y el empaquetado posterior genera aplicaciones nativas y ajustadas a los requerimientos de los mercados de cada proveedor. Las plataformas cubiertas actualmente son:

  • iOS
  • Android
  • Blackberry (OS 4.6 hasta 6.0)
  • WebOS (de hp)
  • Windows Phone 7
  • Symbian
  • Bada (la plataforma de Samsung)

Y las APIs cubiertas cubren casi todo lo que cada tipo de dispositivo tiene disponible (muchos no tienen brújula o no soportan video, por ejemplo), incluyendo:

  • acelerómetro
  • cámara
  • brújula (si hay)
  • contactos
  • archivos (en los sistemas que lo permiten)
  • posición geográfica
  • media (audio/video)
  • red
  • notificaciones visuales, sonoras o vibrador
  • almacenamiento

Veamos un ejemplo rápido de cómo utilizar el acelerómetro en JS:

function onSuccess(acceleration) {
    alert('Acceleration X: ' + acceleration.x + '\n' +
          'Acceleration Y: ' + acceleration.y + '\n' +
          'Acceleration Z: ' + acceleration.z + '\n' +
          'Timestamp: '      + acceleration.timestamp + '\n');
};

function onError() {
    alert('onError!');
};

navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);

Esta interfaz funciona en Android, iOS y BlackBerry OS 5.0 o superior. De manera similar puede accederse a casi todos los recursos de los dispositivos, y la funcionalidad es la mejor posible para cada uno de ellos, ya que no se reduce todo al denominador común, sino que hay soporte para toda la funcionalidad de las plataformas. Es importante entender que no hay magia y cada plataforma final mantiene sus requerimientos originales. Por ejemplo, para generar aplicaciones iOS es necesario trabajar en Mac OS, y para genera aplicaciones Windows Phone es necesario Windows; Android requiere en el SDK y Eclipse, etc.

Quedan a continuación un par de vídeos (en inglés) mostrando PhoneGap en acción para iOS y Android.

lunes, 14 de noviembre de 2011

MonoGame: XNA multi-plataforma

Mono Game

Como todos saben, soy bastante fanático de Mono, la implementación de código libre y abierto de .NET, liderada por Miguel de Icaza.

El año pasado se inició un proyecto llamado inicialmente XNATouch, cuyo objetivo era permitir portar juegos desarrollados en XNA (la plataforma para desarrollo de juegos en XBOX y Windows Phone) a iOS (iPhone, iPod y iPad). El proyecto avanzó bastante, cambió de nombre a MonoGame, y el mes pasado llegó a su versión 2.0, extendiendo el alcance de iOS a Android, Linux, Windows y Mac OS, y de paso, mudándose a GitHub.

El proyecto es muy interesante porque brinda un mecanismo sólido de desarrollo de juegos para múltiples plataformas, algo que es cada vez más requerido por quienes producen para esta industria, sobre todo en los ambientes móviles.

Como ejemplo, este es el código de arranque para ejecutar un juego desarrollado en XNA en iOS (utilizando MonoTouch):

using MonoTouch.Foundation;
using MonoTouch.UIKit;

using Microsoft.Xna.Framework;

namespace MonoGame.Samples.Storage
{
	[Register ("AppDelegate")]
	class Program : UIApplicationDelegate
	{
		private Game1 game;

		public override void FinishedLaunching (UIApplication app)
		{
			// Fun begins..
			game = new Game1();
			game.Run();
		}

		static void Main (string [] args)
		{
			UIApplication.Main (args,null,"AppDelegate");
		}
	}
}

Por ahora el framework soporta solamente juegos 2D, y el API de 3D es el foco principal de trabajo para la versión 3.0. Si está disponible el stack de networking suficiente para permitir jugadores simultáneos dentro de un mismo segmento de red, sin importar la plataforma en que estén ejecutando el juego.

Para quienes quieran ver el proceso en más detalle, recomiendo esta serie de 4 artículos de Alfredo Machin, en las que describe el proceso de migración de un juego XNA a Mac OS (utilizando MonoMac): Parte 1, Parte 2, Parte 3, Parte 4.

 

viernes, 11 de noviembre de 2011

Se acaba Flash, poco a poco (+video)

Adobe Flash

Después de mucho ruido en la comunidad a partir de la decisión de Apple de no soportar Flash en iOS, hace más de un año atrás, esta vez fue Adobe quien decidió dejar de insistir con una plataforma que efectivamente nunca funcionó correctamente en dispositivos móviles.

En un comunicado anteayer, Danny Winokur, gerente general de desarrollo interactivo de Adobe expresó claramente que Adobe dejará de desarrollar Flash para dispositivos móviles (teléfonos y tabletas) para concentrarse en computadoras.

Winokur dice en el comunicado (traducciones mías) cosas como: "Durante los últimos dos años hemos entregado Flash Player para navegadores móviles y provisto la expresividad completa de la web a muchos dispositivos móviles". Personalmente creo que pensar que Flash es definitorio para la expresividad de la web es un acto de arrogancia que Adobe está pagando. Por otro lado, estas versiones de Flash para móviles nunca funcionaron correctamente, por problemas genéricos en su diseño básico, tal como detallara Jobs en su momento, en sus durísimas aclaraciones al vedar este producto en sus plataformas.

El texto continúa explicando el nuevo foco de Adobe respecto a estos dispositivos (el énfasis también es mío): "sin embargo, HTML5 ya es soportado universalmente en los dispositivos móviles principales, en algunos casos exclusivamente. Esto convierte a HTML5 en la mejor solución para crear y desplegar contenido en el navegador a través de las plataformas móviles. Estamos excitados con esto y continuaremos trabajando con los principales jugadores de la comunidad HTML incluyendo a Google, Apple, Microsoft y RIM para producir innovación en HTML5 que ellos puedan utilizar para avanzar sus navegadores móviles".

Me suena como una dósis de realidad, y también una manera de tratar de mantenerse relevante en un escenario que claramente les ha restado protagonismo. Más allá de herramientas de edición (algo en lo que Adobe todavía mantiene un liderazgo considerable) no veo cuánto puedan aportar a los navegadores, que realmente avanzan tecnológicamente liderados por Mozilla, Google y Apple, seguidos por Microsoft que está comenzando a ponerse a tono.

Como cierre de la noticia, les dejo un video (en inglés) de unos dos minutos de una entrevista en la que Jobs explicaba brevemente el porque veía a Flash como una plataforma nociva para la web, sobre todo desde el punto de vista móvil.

miércoles, 20 de julio de 2011

Grandes noticias sobre MonoTouch y Mono for Android

MonoTouch y Mono for AndroidEsta semana Novell / SUSE anunció que firmó un amplio acuerdo de colaboración con Xamarin, la compañía formada por el equipo que trabajaba para ellos en el desarrollo de estos productos, liderada técnicamente por el infatigable Miguel de Icaza y comercialmente por su socio de años, Nat Friedman.

El acuerdo incluye transferencia a perpetuidad a Xamarin de todos los derechos de propiedad intelectual de todos los productos de la familia Mono (incluyendo MonoTouch, Mono for Android and Mono for Visual Studio) y el control de todas las propiedades relativas al proyecto Mono, como MonoDevelop y la organización Mono en GitHub, y a cambio se compromete a brindar soporte a todos los clientes de SUSE utilizando la plataforma, lo que es un factor importante para grandes cuentas de Novell utilizando las ediciones Enterprise de Mono.

Básicamente, desde mi punto de vista, es una acuerdo de colaboración basado en el hecho de que Novell no puede hacer mucho con esos productos sin el equipo detrás, pero necesita seguir dando respaldo a muchos clientes que los están utilizando. Como menciona el gerente general de SUSE en el anuncio oficial, con este acuerdo ganan las tres partes: Novell, Xamarin y los clientes de ambos.

Inmediatamente después de sellado el trato, Xamarin puso nuevamente disponibles los productos en su tienda en línea, y en el anuncio de Miguel se entiende que gran parte del esfuerzo que Xamarin inició para construir estos productos desde cero (mientras negociaban este acuerdo) va a aplicarse directamente como correcciones e implementación de nuevas características en los productos existentes.

La noticia es muy buena también para la comunidad de código abierto, ya que aunque estos productos que permiten programar en C# en plataformas móviles son pagos, son también la fuente de financiamiento que la empresa necesita para continuar liderando el desarrollo del proyecto Mono, MonoDevelop y los demás componentes abiertos y gratuitos, que nunca se detuvieron.

Prueba de que todos estos cambios nunca afectaron demasiado a la comunidad es que este sábado 23, y hasta el lunes 25 se llevará a cabo la conferencia MonoSpace 2011, dedicada a la plataforma abierta, y alojada en el NERD Center de Microsoft en Boston. La conferencia se empezó a organizar antes de que el equipo de Mono fuera despedido de Novell, y la organización nunca se detuvo a pesar de todas las idas y vueltas que felizmente han concluido en este acuerdo que deja en completo control al equipo original.

martes, 28 de junio de 2011

Videos de la Apple World Wide Developer Conference 2011

wwdc2011

Apple realizó su conferencia principal para desarrolladores, como todos los años, e imagino que la mayoría ya debe haber visto al menos algún compilado de la sesión de apertura, en la que se lanzaron Mac OS Lion, iOS 5 y iCloud, entre otras cosas.

Para quienes no lo vieron, dejo al final el video de esa sesión completa, aunque advierto que dura 158 minutos (casi 2 horas).

Si no tienen tiempo, pueden buscar en la web alguno de los compilados que muestran los anuncios más sobresalientes. Los hay super-comprimidos de 60 segundos, y algunos más detallados de unos 10 minutos.

Sin embargo, quienes quieran abundar en más información, no menos, ya pueden ver en video todas las sesiones (un centenear) de la conferencia, incluyendo algunas que captaron mi interés como (mi usual lista arbitraria; el sitio requiere un usuario gratuito registrado):

Espero que encuentren otros temas que les interesen.

Va la sesión de apertura:

martes, 17 de mayo de 2011

Libros: aprendiendo Objective-C y Cocoa

Para los programadores que usan Mac y siempre tuvieron ganas de desarrollar algunas aplicaciones nativas, o aquellos que quieren desarrollar aplicaciones para el iOS de iPhones, iPods y iPads, es fundamental aprender Objective-C (el lenguaje) y Cocoa (el framework).

Incluso si uno opta por usar entornos que nos permiten desarrollar en otros lenguajes, como MonoMac, MonoTouch ó MacRuby, siempre es importante tener una buena base del entorno original de Apple, porque ninguna de estas abstracciones evita que necesitemos un entendimiento general del entorno subyacente, el manejo de recursos, eventos, etc.

Por suerte hay algunas opciones de libros gratuitos para empezar en el tema:

Become an X Coder

BecomeAnXcoder

Es un libro gratuito disponible dentro del sitio Cocolab que incluso puede leerse en español, aunque ésta y otras versiones traducidas están una o dos versiones atrasadas con respecto la versión del sistema operativo de Mac, mientras que la versión en inglés está al día.

Una característica de este libro es que está orientado a gente sin conocimiento previo de programación, por lo que puede resultar demasiado básico, aunque siempre se puede acelerar la lectura e ir a los detalles específicos que nos importan.

Cubre una introducción general a la programación, el uso de las herramientas Xcode de Apple, funciones, compilación, condicionales y bucles, interfaz de usuario, métodos, punteros, strings y arrays, accesores y propiedades, manejo de memoria, y deja muchas fuentes posteriores para seguir aprendiendo.

 

Objective-C Essentials

Objective-C 2.0 Essentials

Este libro sólo está disponible en inglés pero está orientado a programadores con cierta experiencia, y es muchísimo más detallado. La versión gratuita es la que se lee en línea, y puede comprarse en PDF y ePub a un precio económico.

Cubre la historia de Objective-C (que nació como un intento de fusionar la sintaxis de C con el modelo de objetos de Smalltalk, unos pocos años después de la aparición de C++, y antes de su popularización), la instalación de Xcode y el proceso de compilación en Mac OS X, como usar GNUStep y Objective-C en Windows y Linux, los tipos de datos del lenguaje, uso de variables y constantes, operadores y expresiones, comentarios, control de flujo y bucles, orientación a objetos incluyendo métodos, encapsulamiento, accesores, herencia, punteros e indirección, vinculación dinámica, funciones, enumeradores, y manipulación de strings, números, arrays, diccionarios, directorios, archivos, carpetas, y muchísimo más.

Notarán que es muchísimo material.

 

David Chisnall

Objective-C for Java Programmers

También en inglés, pero en este caso se trata de un artículo de David Chisnall en InformIT, en 7 partes (breves) orientado a introducir el lenguaje a desarrolladores Java (también es útil para quienes conocen .NET).

Recorre las diferencias filosóficas entre los lenguajes, objetos y primitivas, archivos y unidades de compilación, modelos de objetos, comportamiento estático, diferencias de sintáxis, etc.

 

jueves, 2 de diciembre de 2010

Miguel de Icaza: Más sobre Mono para OS X y iOS

Mac OS X

Miguel lanzó un nuevo blog personal especializado en el sistema operativo de Mac y el de iPhone/iPod/iPad, visto por supuesto, desde la perspectiva de Mono.

Como explica en el post inicial, las razones principales para tener un blog separado del suyo personal de siempre, exclusivamente dedicado a este tema, son dos:

  • Mientras que su blog está dedicado más que nada a novedades generales del proyecto Mono, éste está orientado a documentar sus experiencias específicas con estos ambientes de Apple, en un nivel de detalle más granular, que puede molestar a quien no tiene interés específico en el tema.
  • Estos sistemas operativos son propietarios y están bastante alejados de los ambientes abiertos usuales para gran parte del público anterior.

En cualquier caso, es muy interesante tener un buen recurso técnico con detalles sobre MonoTouch, la implementación de Mono y herramientas de desarrollo para programar aplicaciones para iOS en lenguajes .NET, que es un producto comercial (sobre todo por temas de licenciamientos varios), y MonoMac, que si es un producto abierto y gratuito para hacer lo mismo sobre Mac OS X (que sí es un sistema propietario).

Lo que ambos proyectos brindan, fundamentalmente, es la posibilidad de programar en C# y utilizar las librerías de la BCL, pero con bindings agregados para interactuar con el entorno de Apple en Objective-C y la interfaz de usuario Cocoa, lo que es una buena alternativa para quienes están interesados en desarrollar para estos dispositivos pero no tanto en aprender todos los detalles y lenguajes específicos.