sábado, 26 de abril de 2008

iphone abre su SDK

El pasado 4 de Marzo iphone puso a disposición de desarrolladores su SDK nativa. Frente a la SDK de gphone (no hay nada mejor que picarse) que ofrece traducción directa del código a instrucciones RISC específicas (procesador ARM) basándose en Objective-C en contraposición a la virtualización que gphone ofrece por su proximidad a Java.

Ambas alternativas son lógicas, puesto que gphone se propone como una plataforma común para diferentes tipos de procesadores con distintos fabricantes mientras que iphone es iphone.

Como pequeña putada para los iphone, el entorno de desarrollo propuesto sólo puede realizarse sobre Mac, haciendo uso del IDE Xcode, lo cual es lógico viniendo de quien viene...

Nada, que miraré más antes de seguir escribiendo polladas

lunes, 21 de abril de 2008

Construyendo aplicaciones: android 101

Muy buenas, comencemos a jugar con "mi primera aplicación android". Para saber si estás preparado para la batalla deberás preguntarte a ti mismo las siguientes cuestiones:
  1. ¿Conoces Java?
  2. ¿Has desarrollado (digo bien, sí, desarrollado, no programado) aplicaciones con Java?
  3. ¿Lo has hecho sin utilizar un framework que te permitiera abstraerte de los Listeners?

Si la respuesta a las tres preguntas es sí, estarás en disposición de meter mano a android sin muchos problemas (siempre habrá algunos ... porque si no, ¿dónde estaría la diversión?)

Si no es así tendremos que encontrar soluciones:
  1. Si conoces cualquier programa orientado a objetos me sirves ... si no siempres puedes mirarte esto.
  2. Si no has desarrollado aplicaciones en Java ... bueno, también me sirves, pero mírate también por encima lo de antes, que nunca viene mal recordar.
  3. Si no has desarrollado aplicaciones con las tediosas referencias en los constructores entre los objetos ni las asociaciones a los Event Listener y pensabas que te ibas a librar,..., bueno, tienes dos opciones, bien dejas de leer, bien asumes tu error y aprietas el culo.
Con todas estas preguntas no estoy diciendo que android sea java [android.equals(Java)==false, más como dice plusminus], android incorpora un numero considerable de librerías que permiten que el desarrollo sea muy similar a Java (eso sí, las han implementado ellos, por lo que encontraremos curiosidades como métodos de java.lang.Class que no están implementados, como getCanonicalName) y la compilación la realiza un compilador Java abierto y modificado para que en lugar de bytecode .class los cree .dex.
Eso só, no hace uso de la JVM para la ejecución, sino de la Dalvik Virtual Machine [dalvik.equals(JVM) == false].

Dicha máquina virtual es la alternativa de google para desvincularse de Sun en la medida de lo posible, y
así complicarnos la vida al resto de los mortales acostumbrados a las ventajas (e inconvenientes) de Java.
DVM depende del kernal 2.6 de linux, utilizándolo como capa de abstración sobre el hardware y haciendo uso de sus servicios de sistema para la admistración de memoria, procesos, pila de protocolos de red entre otros.

Así cada aplicación android es equivalente a un proceso Linux. Eso sí, en este caso es la propia máquina virtual la que elige cuándo se inicia el proceso y cundo debe ser finalizado y liberada su memoria.

No quiero empezar a desmenuzar ahora los componentes de una aplicación, pero en el próximo post leed con atención los IntentReceiver (una especie de receptores de eventos), que lanzan hebras en paralelo al proceso en cada recepción de Intent. Cuando una aplicación incluya uno o más de estas clases su proceso será creado nada más arrancar el dispositivo móvil, ya que debe permanecer a la escucha de eventos (Intents en android).


Bueno, y como lo pone en la página, aquí dejo una clasificación de los procesos que pueden existir en función de la importancia que le asigna la máquina virtual, pero que vamos, os lo podeis saltar perfectamente, porque ahora os vais a quedar igual.
  • Proceso de primer plano: es un proceso que incluye una clase que hereda de Activity (un componente de las aplicaciones que veremos en el próximo post) en la pantalla y con la que el usuario está interactúando (su método "onResume()" ha sido llamado) o una clase que hereda de IntentReceiver está ejecutándose (su método "onReceiveIntent()" se está ejecutando). Estos procesos sólo serán eliminados cómo último recurso, si es que la memoria está tan baja que ni siquiera estos procesos pueden continuar corriendo. Si esta fuera la situación, el dispositivo probablemente alcanzó un "memory paging state" y esta acción es necesaria para mantener la interface del usuario con capacidad para responder al usuario.
  • Proceso visible: es un proceso que incluye una Actividad (Activity) visible en la pantalla, pero no en primer plano (su método "onPause()" ha sido llamado). Este tipo de proceso es considerado extremadamente importante y no será eliminado a menos sea extrictamente necesario para mantener a todos los procesos de primer plano corriendo.
  • Proceso de servicio: es un proceso que incluye iuna clase que hereda de Service, que ha sido iniciado (que no inicializado, qeu esa palabra no existe en castellano por mucho que insistamos) con el método "startService()". Estos procesos no son directamente visibles al usuario, pero el sistema siempre tratará de mantener esos procesos corriendo a menos que los niveles de memoria comiencen a comprometer el funcionamiento de los procesos de primer plano, sean visibles o no.
  • Proceso de fondo: es un proceso que incluye al menos una Actividad que no es visible al usuario (su método "onStop()" ha sido llamado). El sistema puede eliminar estos procesos en cualquier momento para reclamar la memoria que estén usando para entregársela a cualquiera de los tres tipos de procesos anteriormente descritos. Generalmente, hay muchos de estos procesos corriendo, por lo tanto el sistema mantiene una lista LRU para asegurar que el último proceso visto por el usuario sea el último en ser eliminado en caso que se requiera memoria.
  • Proceso vacío: es un proceso que no hospeda a ningún componente de aplicación activo. La única razón para mantener ese proceso es tener un "cache" que permita mejorar el tiempo de activación en la próxima oportunidad que un componente de su aplicación requiera correr. Como consecuencia de esto, el sistema con frecuencia va a eliminar estos procesos para mantener el balance entre los recursos de cache utilizados por estos procesos con los utilizados por los "cache" del kernel del sistema.

Fuentes:
Application life cycle
Traducción de la documentación en línea de android
Android Developer Book

viernes, 18 de abril de 2008

Venga, android university

Según el blog de android developers, el 28 y 29 de Mayo tienen el Google I/O (lo siento, el plazo de inscripción se agotó el 4 de Abril, para todos aquellos que vivan cerca de Frisco) se supone que el mayor evento que realiza Google, donde van a hablar de android, incluyendo los siguientes temas en su seminario:
  • Android 101: Building an Application
  • Anatomy & Physiology of an Android
  • Dalvik Internals
  • Inside the Android Application Framework
  • Building Great UIs with Android
  • Internationalizing Android Applications
  • Location, Location, Location
  • Mobile Mashups
(sic.)

Tengo mucha curiosidad por el punto de la internacionalización de aplicaciones con android (dado que ése era un punto a favor en el desarrollo para el concurso), pero los tres primeros puntos nos pueden servir para comenzar a escribir sobre android, así que mañana empezamos con cómo construir medio en serio una aplicación en android ( Para mí que lo de 101 es por el albúm de Depeche Mode...)

jueves, 17 de abril de 2008

Antes de comenzar a explicar

Aquí os dejo dos de las aplicaciones que se han presentado al concurso:

  • Unify Message: que unifica la gestión de los mensajes recibidos por el usuario de dispositivo móvil; una aplicación aparentemente básica pero de la que carecía el emulador y que incluye nuevas e interesantes utilidades.
  • Rich Client Platform [&apk]: plataforma de instalación y desinstalación de aplicaciones, e unas pocas palabras, de administración de aplicaciones. Eso sí, no sabe que:
    1. Gryphone ya incluye eso (aplicación presentada por Fundación I+D software libre)
    2. El emulador no llega a implementar correctamente la instalación de aplicaciones.

miércoles, 16 de abril de 2008

Qué hace Buffy cuando no mata vampiros

Sarah-Michelle Gellar (pronunciése Michelle, Mishel), conocida en todas las casas como la cazavampiros o la amiga de la primera bruja-bollera televisiva (que quieres, Alyson Hannigan, o Willow, ha acabado siendo N veces más famosa gracias a la relevancia política que tuvo al normalizar la interpretación femenina de un papel gay con una novia-bruja con cuajo considerable) renace...deciciendo morir.

Verónica decide morir, el famosisisisisisimo libro de Paulo Coelho, está siendo interpretado por esta "picioza" "niña" yyy... (aqui viene lo interesante) por el mayor de los hermanos Donelly, de los Black Donelly's, que desgraciadamente acabo tras la primera temporada (ohhhhhhhhhhh) y de donde también viene la alumna de House de los ojos primorosos, que según parece dura al menos trece episodios en la temporada según imdb; así que, -spoiler pequeñito e inventado- parece que supera el casting de House.

Sólo queda una cosa que decir: esperemos que no la caguen.

martes, 15 de abril de 2008

ADC step 2?

Hoy (realmente ayer, pero debido a diferencias horarias eso se queda en esta mañana) ha finalizado la primera fase del android development challenge.

Para miles de equipos sólo queda permanecer a la espera de los 25000$ (al cambio a fecha de hoy exactamente 157778,1 euros) hasta el 5 de mayo (para nosotros el 6 de mayo a las 9 de la mañana).

Con esta fase empiezo a escribir (de vez en cuando, para que meterme presión) cómo empezar a meterse en el mundo de la sdk de google, para no ir perdiendo el recuerdo de lo aprendido.

Como ejemplo de participantes en el concurso aquí dejo a los de OmniGsoft, que han pasado todos sus juegos a android (aunque los he instalado y no parece tener mucha reacción el emulador, será por los problemas androides con opengl, excepto en las demos de la API)...OmniGSoft


lunes, 14 de abril de 2008

SingelRingen

¿quereis tener posibilidades con Jennifer Love-Hewitt


o siempre habéis tenido fantasías con la niña del laberinto del fauno Ivana Baquero (pero qué pervertidos que sois)(*)



o queréis preguntarle personalmente al hijo de Mitch Buchannon (aka David Hasselhoff,XDD, fue absorbido por su personaje) qué le pasó después de los vigilantes de la playa (teniendo en cuenta que su último papel fue como voz de soldado soviético nº1 en el Metal Gear Solid en el 2006)?


Pues entonces no lo dudéis más, comprad SingelRingen, ¡el anillo de los solteros orgullosos de serlo!


Pensabamos que eso que hacíamos cuando enanos poniéndonos las gomas del pelo en el brazo había pasado de moda...¡pues no!

Junto con el anillo tienes tu propia marca de identidad, que te permite acceder a su comunidad, a los encuentros que realizan y encontrar a gente por la calle que lo lleve y pedirle tema (porqué no, pero siempre desde la independencia, vaya que te pongas en serio y tengas que perder el anillo)

No lo dudes más, sepárate, divórciate, deja a tu perro y cómprate el anillo.


(*)= Lo sentimos, pero si tenías ilusiones sobre ligar con esta niña y vivir de su gloria, está condenada a la perdición, acaba de hacer una película con Kevin Costner, está marcada al olvido... un minuto de silencio por su fama...